ITEEDU

1.2 汇编语言中的数

高级语言中也多用十进制数。十进制数由0-9十个数字组合而成,逢10进1。但由于汇编语言是面向硬件的,因此,在汇编语言中使用的数字也是和硬件结合紧密的二进制数。

二进制数只由0和1而个数字组成,逢2进1,也就是说,在十进制数中计算1+1时将得到一位数字的结果--2,而在二进制数中计算时将得到一个二位二进制数--10,表1-1列出了四位二进制数与十进制数间的对应关系。

在十进制数字中还有"数位"之分,个位,十位,百位......,在二进制数中也分各个数位。以四位二进制数1010为例,从右数第一位,称为bit0,第二位称bit1,以此类推。因此,1010的bit3,bit1位是1,bit2,bit0位是0。与十进制数一样,二进制数自右向左数位逐渐升高。最左端的数位为最高位,1010的最高位为1。

表1-1 四位二进制数与十进制数对照表
二进制数 0000 0001 0010 0011 0100 0101 0110 0111
十进制数 0 1 2 3 4 5 6 7
二进制数 1000 1001 1010 1011 1100 1101 1110 1111
十进制数 8 9 10 11 12 13 14 15

我们知道,计算机利用电路来记忆1和0,那么1和0究竟和电路的工作状态有什么关系呢?通俗的讲,1,0反应了电路输出(入)电压的高和低。如果电路输出(入)的电压高,比如达到了电源电压的幅度,此时电路的输出(入)就为1。如果电路输出(入)的电压很低,比如接近0V,那么这时电路的输出(入)就为0。

二进制数字在实际应用中还有一些缺点,比如不便于书写,难于记忆等。为此,在汇编语言中还常用另一种数制--十六进制。十六进制数字由十六个数组成,逢16进1。前十个数字和十进制一样,是0-9,后六个数字用英文字母A-F来表示。表1-2列出了十六进制与十进制数间的对应关系。

表1-2 十六进制数与十进制数对照表
十进制 0 1 2 3 4 5 6 7
十六进制 0 1 2 3 4 5 6 7
十进制 8 9 10 11 12 13 14 15
十六进制 8 9 A B C D E F

从表1-2可以看出,有些十六进制数与十进制数是一样的,区分不开。这个问题对于1位十六进制数而言到还没有什么关系,可对于多位十六进制数来说就有些麻烦了。比如给出一个数"79",它是十进制的"79"还是十六进制的"79(相当于十进制121)"呢?所以为区分十六进制数与十进制数,特别规定了十六进制数尾部应加字母"H"(Hexadecimal)。十六进制数79应该写成"79H"才对。

对照表1-1和表1-2,可以看出每个四位二进制数都有相应的十六进制数与之对应。若用十六进制数代替二进制数,在书写时可以使数位减少四倍,简化了书写。同时也可以看到十六进制数同二进制数之间没有实质上的差别,只是两种不同的表达形式而已。下面的例子介绍了二-十-十六进制数字间的转换方法,请大家自己总结其中的规律。

例1.1 将十进制数83转换成二进制数。

解:采用短除法计算

2| 83 			------余数:1 ←──bit0
 2| 41 			------余数:1 ←──bit1
  2| 20 			------余数:0 ←──bit2
   2| 10 		------余数:0 ←──bit3
    2| 5 		------余数:1 ←──bit4
     2| 2 		------余数:0 ←──bit5
        1 		←─────────bit6

计算结果为7位二进制数:1010011

例1.2 将8位二进制数10110110转换成十进制数。
解:8位二进制数各个数位的权如下所示:
bit 7 6 5 4 3 2 1 0
27 26 25 24 23 22 21 20

∴ 10110110 = 1×27+0×26+1×25+1×24+0×23+1×22+1×21+0×20= 182

例1.3 将十进制数34567转换成十六进制数。
解:仿照例1.1采用短除法计算
16| 34567 		------余数:7 ←──第0位
 16| 2160 		------余数:0 ←──第1位
  16| 135 		------余数:7 ←──第2位
        8 		←─────────第3位

∴ 结果是一个4位十六进制数:8707

例1.4 将16位二进制数1101101001100011转换成十六进制数。
解:将此二进制数按每4位为一组分成4组

由表1-1,表1-2查得

1101 1010 1100 0011
D A C 3

∴ 1101101011000011 = DAC3

① 权这个字最早指秤砣,同样一个秤砣在秤杆的不同位置可以表示不同的份量。引申到数字中,同样一个数在不同的数位上所表示的大小也是不一样的。