汇编语言第2章_第1页
汇编语言第2章_第2页
汇编语言第2章_第3页
汇编语言第2章_第4页
汇编语言第2章_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 1 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 2 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 32.12.1 数的表示及运算 2.1.1 2.1.1 无符号数的表示及运算无符号数的表示及运算1.1.无符号数的表示方法无符号数的表示方法 十进制计数法的特点是: 逢十进一; 使用10个数字符号(0,1,2,9)的不同组合来表示一个十进制数; 以后缀D或d表示十进制数(Decimal),但该后缀可以省略。 微机原理与汇编语言 第四章计算机中信息的表示方

2、法2021年年10月月26日日 4任何一个十进制数可表示为: ) 1 . 1 . 2(101nmiiiDDN式中:m表示小数位的位数,n表示整数位的位数,Di为第i位上的数符(可以是09十个数字符号中的任一个)。 例例2.1 138.5(D)= 1012105108103101 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 5 二进制计数法的特点是: 逢二进一; 使用2个数字符号(0,1)的不同组合来表示一个二进制数; 以后缀B或b表示二进制数(Binary)。 任何一个二进制数可表示为: )2 . 1 . 2(21nmiiiBBN式中:m为小数位的位数,n为整

3、数位的位数,Bi为第i位上的数符(0或1)。 例例2.2 1101.11B= )(75.13212121202121210123D 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 6(3 3)十六进制数的表示法)十六进制数的表示法 十六进制计数法的特点是: 逢十六进一; 使用16个数字符号(0,1,2,3,9,A,B,C,D,E,F)的不同组合来表示一个十六进制数,其中AF 依次表示1015; 以后缀H或h表示十六进制数(Hexadecimal)。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 7任何一个十六进制数可表示为: )3

4、. 1 . 2(161nmiiiHHN式中:m为小数位的位数,n为整数位的位数,Hi为第i位上的数符(可以是0,1,,9,A,B,C,D,E,F十六个数字符号中的任一个)。 例例2.3 0E5AD.BFH =21012316151611161316101651614 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 8一般来说,对于基数为X的任一数可用多项式表示为: )4 . 1 . 2(1nmiiiXXkN式中:X为基数,表示X进制;i为位序号;m为小数部分位数;n为整数部分的位数;ki为第i位上的数值,可以为0,1,2,X-1共X个数字符号中任一个;Xi为第i位

5、的权。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 92. 各种数制之间的转换(1)任意进制数转换为十进制数 二进制、十六进制以至任意进制数转换为十进制数的方法很简单,只要按式2.1.2,2.1.3和2.1.4各位按权展开(即该位的数值乘于该位的权)求和即可。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 10 (下面通过一个简单的例子对转换方法进行分析。例如, B2B3B0B2B1B0B3B1)5 . 1 . 2(212021211011130123BD 可见,要确定13D对应的二进制数,只需从右到左分别确定 B0,B1,B2

6、,B3即可。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 11 式(2.1.5)右侧除以2: 商为 ,余数为1,此余数即为B0; 商再除以2: 商为 ,余数为0,此余数即为B1; 商再除以2: 商为 ,余数为1,次余数即为B2; 商再除以2: 商为0(商为0时停止),余数为1,此余数即为 B3。 012202121012121021 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 12 由以上过程可以得出十进制整数部分转换为二进制数的方法: 显然,该方法也适用于将十进制整数转换为八进制整数(基数为8)、十六进制整数(基数为16)以

7、至其它任何进制整数。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 132) 小数部分的转换小数部分的转换同样用一个简单例子说明十进制小数部分的转换方法。例如, B-1B-2B-1B-221212111 .075.0BD要将一个十进制小数转换为二进制小数,实际上就是求B-1,B-2,给式(2.1.6)右侧乘以基数2得: (2.1.6)1211整数部分为B-1小数部分 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 14 整数部分为1,此即为B-1。小数部分为12-1。 小数部分再乘以基数2得:整数部分为1,此即为B-2。 此时小数部

8、分已为0,停止往下计算(若不为0,继续求B-3,B-4,直到小数部分为0或小数部分的位数满足一定精度时为止) 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 15 由以上分析可得到十进制小数部分转换为二进制小数的方法: 显然,该方法也适用于将十进制小数转换为八进制小数(基数为8)、十六进制小数(基数为16)以至其它任何进制小数。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 16 因为24=16,即可用四位二进制数表示一位十六进制数,所以可得到如下所述的二进制数与十六进制数之间的转换方法。 以小数点为界,向左(整数部分)每四位为一组

9、,高位不足4位时补0;向右(小数部分)每四位为一组,低位不足4位时补0。然后分别用一个16进制数表示每一组中的4位二进制数。 直接将每一位十六进制数写成其对应的四位二进制数。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 17 加: 0+0=0 0+1=1 1+0=1 1+1=0(进1)减: 0-0=0 1-1=0 1-0=1 0-1=1(借位)乘: 00=0 01=0 10=0 11=1除: 二进制除法是乘法的逆运算。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 18 “与“运算(AND). “与”运算又称逻辑乘,可用符号“”

10、或“”表示。运算规则如下:00=0 01=0 10=0 11=1 可以看出,只有当两个变量均为“1”时,“与”的结果才为“1”。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 19 “或”运算(OR) “或”运算又称逻辑加,可用符号“”或“+”表示。运算规则如下:00=0 01=1 10=1 11=1 可以看出,两个变量只要有一个为“1”,“或”的结果就为“1”。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 20 “非”运算(NOT) 变量的“非”运算结果用表示。逻辑“非”运算规则如下: “异或”运算(XOR) “异或”运算可用

11、符号“”表示。运算规则如下: 可以看出,两变量只要不同,“异或”运算的结果就为“1”。 10 01 011101110000 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 212.1.2 带符号数的表示及运算带符号数的表示及运算 日常生活中遇到的数,除了上述无符号数外,还有带符号数。对于带符号的二进制数,通常用二进制数的最高位表示数的符号。 把一个数及其符号位在机器中的一组二进制数表示形式,称为“机器数”。机器数所表示的值称为该机器数的“真值”。 机器数可以用不同方法表示,常用的有原码、反码和补码表示法。 微机原理与汇编语言 第四章计算机中信息的表示方法2021

12、年年10月月26日日 22设数x的原码记作x原,如机器字长为n,则原码定义如下: 0) 12(|2120111xxxxxnnn原 在原码表示法中,最高位为符号位(正数为0,负数为1),其余数字位表示数的绝对值。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 23 例如,当机器字长n=8时, +0原=00000000B -0原=27+0(按定义计算,下同)=10000000B +8原=00001000B-8原=27+8=10001000B +127原=01111111B-127原=27+127=11111111B 当机器字长n=16时, +0原=000000000

13、0000000B-0原=215+0=1000000000000000B +8原=0000000000001000B-8原=215+8=1000000000001000B +32767原=0111111111111111B-32767原=215+32767=1111111111111111B 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 24 可以看出,8位二进制原码原码表示数的范围为,16位二进制原码表示数的范围为;“0”的原码有两种表示法:00000000表示+0,10000000表示-0。 原码表示法简单直观,且与真值的转换很方便,但不便于在计算机中进行加减

14、运算。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 25(2) 反码设数x的反码记作x反,如机器字长为n,则反码定义如下: 0) 12(|) 12(12011xxxxxnnn反 正数的反码与其原码相同。例如,当机器字长n=8时: +0反=+0原=00000000B +127反=+127原=01111111B当机器字长n=16时: +8反=+8原=0000000000001000B +127反=+127原=0000000001111111B 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 26 负数的反码是在原码基础上,符号位不变(

15、仍为1),数值位按位取反。例如,当机器字长n=8时: -0反=(28-1)-0=11111111B -127反=(28-1)-127=10000000B 反码表示数的范围是:8位二进制反码位二进制反码表示数的范围为,16位二进制反码位二进制反码表示数的范围为;“0”的反码有两种表示法:00000000表示+0,11111111表示-0。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 27(3) 补码设数x的补码记作x补,如机器字长为n,则补码定义如下: 02|212011xxxxxnnn补正数的补码与其原码、反码相同。例如,当机器字长n=8时:+8补=+8反=+

16、8原=00001000B+127补=+127反=+127原=01111111B当机器字长n=16时:+8补=+8反=+8原=0000000000001000B+127补=+127反=+127原=0000000001111111B 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 28 负数的补码是在原码基础上,符号位不变(仍为1),数值位按位取反,末位加1;或在反码基础上末位加1。例如,当机器字长n=8时:-8原=10001000B-127原=11111111B-8反=11110111B-127反=10000000B-8补=28-8=11111000B-127补=2

17、8-127=10000001B可以看出,8位二进制补码位二进制补码表示数的范围为,16位二进制补码表示数的范围为。8位二进制数的原码、反码和补码如表2.1所示。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 29表表2.1 8位二进制数的原码、反码和补码表位二进制数的原码、反码和补码表 二进制数 无符号十进制数带 符 号 数原码反码补码0000 00000000 00010000 0010 0111 11100111 11111000 00001000 0001 1111 11011111 11101111 1111012 126127128129 253254

18、255+0+1+2 +126+127-0-1 -125-126-127+0+1+2 +126+127-127-126 -2-1-0+0+1+2 +126+127-128-127 -3-2-1 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 302 2 真值与补码之间的转换真值与补码之间的转换 (1)真值转换为补码根据补码定义便可完成真值到补码的转换(2) 补码转换为真值同理,要求补码的真值,也要先求出补码对应的原码。正数的原码与补码相同。负数的原码可在补码基础上再次求补,即:补补原xx 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日

19、31 补码加法的运算规则为: 即:两数补码的和等于两数和的补码。 补补补yxyx 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 32已知 +51补=0011 0011B,+66补=0100 0010B, -51补=1100 1101B, -66补=1011 1110B 求求 +66补+51补=?+66补+-51补=?-66补+-51补=? 解: 二进制(补码)加法 十进制加法 0100 0010 + 66补 + 66+) 0011 0011 + 51补 +) + 51 0111 0101 +117补 +117 微机原理与汇编语言 第四章计算机中信息的表示方法20

20、21年年10月月26日日 33 二进制(补码)加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 -51补 +) -51 0000 1111 +15补 +151自动丢失由于+66补+51补=(+66)+(+55)补=01110101B结果为正,因此(+66)+(+55)原=(+66)+(+55)补=01110101B其真值为+117,计算结果正确。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 34 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 1100 1101 -51补 +) -51 1000 10

21、11 -117补 -1171自动丢失由于+66补+51补=(+66)+(55)补=0000111B结果为正,因此(+66)+(55)原=(+66)+(55)补=00001111其真值为+15,计算结果正确。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 35由于-66补+-51补=10001011B=(-66)+(-55)补 结果为负,因此 (-66)+(-55)原=(-66)+(-55)补补=11110101B其真值为-117,计算结果正确。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 36补码减法的运算规则为: 补补补补补y

22、xyxyx(2.2.6) 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 37已知+51补=0011 0011B,+66补=0100 0010B51补=1100 1101B,66补=1011 1110B求 +66补+51补=? -66补- -51补=? 解 +66补- +51补=+66补+-51补 -66补- -51补=-66补+51补 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 38 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 0011 0011 +51补 -) -51 1111 0001 -15

23、补 -15 二进制(补码)加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 -51补 -) +51 0000 1111 +15补 +151自动丢失 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 39 当运算结果超出了机器所能表示的范围时便发生了溢出。字长为n的无符号数所能表示的范围为02n1,字长为n的带符号数所能表示的补码范围为2 n1+2n11。 无符号数进行运算时,若运算结果的最高位有进位,说明发生了溢出。因此,无符号数运算的溢出判断依据为最高位是否产生了进位,即CF标志位的值为1,则发生溢出。 带符号数的补码运算时,若运算

24、结果超出了补码所能表示的范围,就会发生溢出。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 40 判断补码运算溢出的方法很多,常见的有: 观察法通过参加运算的两个操作数的符号及运算结果的符号进行判断; 单符号位法通过符号位和数值部分最高位的进位状态来判断; 双符号位法(又称为变形补码法)通过运算结果的两个符号位的状态来判断。 上述3种方法中,第种仅适用于手工运算时对结果是否溢出进行判断,另外两种方法在计算机中都有使用,本书只介绍第种方法。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 41 若符号位进位状态用CF来表示,当符号位向

25、前有进位时,CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示,当该位向前有进位时,DF=1,否则,DF=0。单符号位法就是通过该两位进位状态的异或结果来判断是否溢出的。 (2.2.7) 若OF=1,说明结果溢出;若OF=0,则结果未溢出。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否则,结果溢出。 DFCFOF 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 42 例2-3 设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符

26、号补码数,计算结果是否溢出? 解解 无符号数 带符号数 01000100 68 +68补+)01001000 +)72 +) +72补 10001100 140 +140补DF=1CF=0 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 43 若为无符号数,由于CF=0,说明结果未超出8位无符号数所能表达的数值范围(0255),计算结果10001100B为无符号数,其真值为140,计算结果正确。 若为带符号数补码,由于OF=1,结果溢出;这里也可通过参加运算的两个数的符号及运算结果的符号进行判断,由于两操作数均为正数,而结果却为负数,因而结果溢出;+68和+72两

27、数补码之和应为+140的补码,而8位带符号数补码所能表达的数值范围为128+127,结果超出该范围,因此结果是错误的。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 44 例2-4 设有两个操作数x=11101110B,y=11001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出? 解解 无符号数 带符号数 11101110 68 +68补+)11001000 +)72 +) +72补 10110110 140 +140补DF=1CF=11自动丢失 微机原理与汇编语言 第四章计算机中信息的

28、表示方法2021年年10月月26日日 45 若为无符号数,由于CF=1,说明结果超出8位无符号数所能表达的数值范围(0255)。两操作数11101110B和11001000B对应的无符号数分别为238和200,两数之和应为438255,因此,计算结果是错误的。 若为带符号数补码,由于OF=0,结果未溢出。两操作数11101110B和11001000B分别为18和56的补码,其结果应为74的补码形式,而计算结果10110110B正是74的补码,因此结果正确。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 462.1.3 定点数和浮点数定点数和浮点数 所谓定点数,是

29、指小数点在数中的位置是固定的。原理上讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示成纯小数或纯整数形式,如图2.1所示。符号位数值位小数点(a)符号位数值位小数点(b)图2.1 定点数的两种表示方法(a) 纯小数形式;(b) 纯整数形式 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 47 设用一个n+1位字来表示一个数N,其中一位表示符号位(0表示正,1表示负),其他n位为数值位。对于纯小数表示法,所能表示的数x (原码表示,下同)的范围为:-(1-2-n)N1-2-n 它能表示的数的最大绝对值为1-2-n,最小绝对值为2-n。 对于纯整数表示法,所能

30、表示的数x的范围为:-(2-n-1)N2-n -1它能表示的数的最大绝对值为2n-1,最小绝对值为1。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 482 浮点数浮点数 所谓浮点表示法,就是小数点在数中的位置是浮动的。 任意一个二进制数N总可以写成如下形式: 其中,d称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称为数符,表示数的符号,该位为0,表明该浮点数为正,该位为1,表明该浮点数为负;p称为阶码,它前面的符号称为阶符,阶码为正时,用0表示,阶码为负时,用1表示。 阶符阶码(p)数符尾数(d)1 位m位1位n位2pNd 微机原理与汇编语言 第四

31、章计算机中信息的表示方法2021年年10月月26日日 49 可以看出,将尾数d的小数点向右(阶码p为正时)或向左(阶码p为负时)移动p位,即可得到该浮点数表示的数值x。阶码p指明小数点的位置,小数点随着阶码的大小和正负而浮动,因此把这种数称为浮点数。 设阶码的位数为m位,尾数的位数为n位,则该浮点数表示的数值范围为:(2.4.4) 在字长相同的情况下,浮点数能表示的数值范围比定点数大得多,且精度高,但浮点运算规则复杂。)12()12(2)21 (|22mmnnx 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 50 一位十进制数在计算机中需用4位二进制编码表示。这

32、种编码有多种形式,其中8421BCD(Binary-Coded Decimal)码比较常用。4位二进制有16种组合状态,当用来表示十进制数时,舍去高6种组合状态。BCD码有两种形式,即压缩BCD码和非压缩BCD码。 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 51 压缩BCD码的每一位用4位二进制表示,一个字节表示2位十进制数。例如,10010110B表示十进制数96。 非压缩BCD码用1个字节表示1位十进制数,只用低4位的00001001表示09,高4位为0。例如,00001000B表示十进制数8。非压缩BCD码也可以是09的ASCII码。 微机原理与汇编语

33、言 第四章计算机中信息的表示方法2021年年10月月26日日 52表表2.2 8421 BCD 码部分编码表码部分编码表 十进制数压缩型BCD码非压缩型BCD码12391011192021000000010000001000000011000010010001000000010001000110010010000000100001000000010000001000000011 0000100100000001 0000000000000001 00000001 00000001 0000100100000010 0000000000000010 00000001 微机原理与汇编语言 第四章计算机中信息的表示方法2021年年10月月26日日 53 目前国际上使用的字符编码系统有许多种,在微型计算机中普遍采用的是美国标准信息交换代码,即ASCII码(American Standard Code for Information-Interchange)。A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论