Win32汇编学习笔记(一)

一、基础

信息以字节为单位存储,即Byte

1Byte8bit,从高到低是7 6 5 4 3 2 1 0

7最高,叫MSBMost Significant Bit

0最低,叫LSBLeast XX

32CPU一次操作可以处理32bit个二进制位。因此需要比字节更大的单位。

比如:字(16bit)、双字(32bit)

如果超过了1Byte,就有个存储顺序的问题。

Inter存一个字,比如0x60 25,存的时候是0x25 0x60的顺序,这是little endian的方式。

Inter不要求字的地址是偶数,如果是偶数,则是一个对准字,如果不是,则称为未对准字。

对应的有big endian方式。在编程前这是首先应该搞清楚的问题。

数据表示

有符号整数用补码。如果用一个字表示一个数,当然有范围问题。

无符号数065535

有符号:-32768 32767

存正整数正常存,存负整数时保存的是数的绝对值取反加1。比如,保存-466

0000 0001 1101 0010 446

1111 1110 0010 1101 取反

1 1

----------

1111 1110 0010 1110 实际保存的数,按照little endian保存,则0010 1110在前,1111 1110在后。

字符表示需要有一个映射表,ASCII最常用。用7bit来表示字符。

汉字表示,中国是GB2312-80标准。用两个Byte表示一个汉字。标准映射了了6763个汉字,分成94个区,每区94个位,编号从0xA0开始,不占有ASCII 0x000x7F。每个汉字有唯一的区码和位码。

UNicode是另一种字符映射,它将全世界的字符都包括进来,也使用2Byte

BCD码,目的是将数据的输入和输出变得简单。存466时,如果用一个字,则

466 0001 1101 0010 0x01 D2

如果用BCD,则之间看成 0x04 0x66分别进行保存就行了,这是压缩BCD码。

如果不压缩,则看成0x04 0x06 0x06分别保存。

Inter系列CPU支持BCD形式数字处理的指令。

你可能感兴趣的:(编程)