微处理器原理与应用第一章补充内容补码的加减运算_第1页
微处理器原理与应用第一章补充内容补码的加减运算_第2页
微处理器原理与应用第一章补充内容补码的加减运算_第3页
微处理器原理与应用第一章补充内容补码的加减运算_第4页
微处理器原理与应用第一章补充内容补码的加减运算_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、(1)补码加法运算: 整数:A补+B补=A+B补 (模为2的n+1次方,因为可能会有进位) 小数:A补+B补=A+B补 (模为2,因为A和B都小于1)(2)补码减法运算: 因为A-B = A+(-B),所以减法可以变通为加法进行计算。 整数:A-B补=A补+-B补 (模为2的n+1次方) 小数:A-B补=A补+-B补 (模为2) 在做补码加减法时,只需将符号位和数值部分一起参加运算,并且将符号位的进位自然丢掉就可以了。但是,当运算结果超出机器字长所能表示的数值范围,这种情况叫做溢出。(3)判断溢出: 溢出出现的情况:正数+正数,负数+负数,正数-负数,负数-正数 这四种情况,当参加运算的两个数

2、的符号(正负)相同,而结果则与这2个数的符号不同,即为溢出。 计算机中通常将两个参与运算的数的符号位产生的进位与最高有效位(,.后的那位)产生的进位进行异或操作(无进位即进位为0),异或结果为1,是溢出,异或结果为0,无溢出。补码的加减运算 1. 补码加法 在计算机中,凡是带符号数一律用补码表示,运算结果自然也是补码。其运算特点是:符号位和数值位一起参加运算,并且自动获得结果(包括符号位与数值位)。 补码加法的运算规则为:即:两数补码的和等于两数和的补码。 (2.2.5) 例2.11 已知 +51补=0011 0011B, +66补=0100 0010B, -51补=1100 1101B, -

3、66补=1011 1110B 求 +66补+51补=? +66补+-51补=? -66补+-51补=? 由于 +66补+51补=(+66)+(+55)补=01110101B结果为正,因此(+66)+(+55)原=(+66)+(+55)补=01110101B其真值为+117,计算结果正确。 二进制(补码)加法 十进制加法 0100 0010 + 66补 + 66+) 0011 0011 + 51补 +) + 51 0111 0101 +117补 +117 解: 由于 +66补+51补=(+66)+(55)补=0000111B结果为正,因此(+66)+(55)原=(+66)+(55)补=00001

4、111其真值为+15,计算结果正确。 二进制(补码)加法 十进制加法 0100 0010 + 66补 +66+) 1100 1101 -51补 +) -51 0000 1111 +15补 +151自动丢失由于 -66补+-51补=10001011B=(-66)+(-55)补 结果为负,因此 (-66)+(-55)原=(-66)+(-55)补补=11110101B其真值为-117,计算结果正确。 二进制(补码)加法 十进制加法 1011 1110 - 66补 -66+) 1100 1101 -51补 +) -51 1000 1011 -117补 -1171自动丢失 2. 补码减法补码减法的运算规

5、则为: 变补:连同符号位在内,各位取反,末位+1 (2.2.6) 即: 例2.12 已知+51补=0011 0011B,+66补=0100 0010B51补=1100 1101B,66补=1011 1110B 求 +66补+51补=? -66补- -51补=? 解 +66补- +51补=+66补+-51补 -66补- -51补=-66补+51补 二进制(补码)减法 十进制减法 1011 1110 - 66补 -66+) 0011 0011 +51补 -) -51 1111 0001 -15补 -15 二进制(补码)减法 十进制减法 0100 0010 + 66补 +66+) 1100 1101

6、 -51补 -) +15补 +151自动丢失 可以看出,无论被减数、减数是正数还是负数,上述补码减法的规则都是正确的。同样,由最高位向更高位的进位会自动丢失而不影响运算结果的正确性。 计算机中带符号数用补码表示时有如下优点: 可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路。 无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。例如: 无符号数 带符号数 11100001 225 -31补+) 00001101 +) 13 +) +13补 11101110 238 -18补 若两操作数为无符号数时,计算结果为无符号数11101110B,其真值为2

7、38,结果正确;若两操作数为补码形式,计算结果也为补码形式,11101110B为18的补码,结果也是正确的。 练习: 1、x= ,y= ,求x+y补=?2、x=-1011010,y=-1010000,求x+y补=?3、x= ,y=-1010000,求x-y补=?4、x=-1011010,y= ,求x-y补=?溢出及其判断方法 1. 进位与溢出 所谓进位,是指运算结果的最高位向更高位的进位,用来判断无符号数运算结果是否超出了计算机所能表示的最大无符号数的范围。 溢出是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范围。例如,字长为n位的带符号数,它能表示的补码范围

8、为-2n-1+2n-1-1,如果运算结果超出此范围,就叫补码溢出,简称溢出。 可能出现溢出的情况:(1)两正数相加结果超出范围,结果变成负数。 现象:次高位向最高位有进位,最高位相加(连同次高位进位)无进位。(上溢)(2)两负数相加结果超出范围,结果变成正数。 现象:次高位向最高位无进位,最高位相加(连同次高位进位)有进位。(下溢)(3)两异号数相减 正数减负数结果超出范围:同(1) 负数减正数结果超出范围:同(2) 2. 溢出的判断方法 判断溢出的方法很多,常见的有: 观察法。通过参加运算的两个数的符号及运算结果的符号进行判断。 单符号位法。该方法通过符号位和数值部分最高位的进位状态来判断结

9、果是否溢出。 双符号位法,又称为变形补码法。它是通过运算结果的两个符号位的状态来判断结果是否溢出。 上述三种方法中,第一种方法仅适用于手工运算时对结果是否溢出的判断,其他两种方法在计算机中都有使用。限于篇幅,本节仅通过具体例子对第种方法做简要介绍。 若符号位进位状态用CF来表示,当符号位向前有进位时,CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示,当该位向前有进位时,DF=1,否则,DF=0。单符号位法就是通过该两位进位状态的异或结果来判断是否溢出的。 (2.2.7) 若OF=1,说明结果溢出;若OF=0,则结果未溢出。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位

10、时,结果没有溢出,否则,结果溢出。 例2.13 设有两个操作数x=01000100B,y=01001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出? 解 无符号数 带符号数 01000100 68 +68补+)01001000 +)72 +) +72补 10001100 140 +140补DF=1CF=0 若为无符号数,由于CF=0,说明结果未超出8位无符号数所能表达的数值范围(0255),计算结果10001100B为无符号数,其真值为140,计算结果正确。 若为带符号数补码,由于OF=1,结果溢出;这里也可通过参加运算

11、的两个数的符号及运算结果的符号进行判断,由于两操作数均为正数,而结果却为负数,因而结果溢出;+68和+72两数补码之和应为+140的补码,而8位带符号数补码所能表达的数值范围为128+127,结果超出该范围,因此结果是错误的。 例2.14 设有两个操作数x=11101110B,y=11001000B,将这两个操作数送运算器做加法运算,试问: 若为无符号数,计算结果是否正确? 若为带符号补码数,计算结果是否溢出? 解 无符号数 带符号数 11101110 238 -18补+)11001000 +)200 +) -56补 10110110 438 -74补DF=1CF=11自动丢失 若为无符号数,

12、由于CF=1,说明结果超出8位无符号数所能表达的数值范围(0255)。两操作数11101110B和11001000B对应的无符号数分别为238和200,两数之和应为438255,因此,计算结果是错误的。 若为带符号数补码,由于OF=0,结果未溢出。两操作数11101110B和11001000B分别为18和56的补码,其结果应为74的补码形式,而计算结果10110110B正是74的补码,因此结果正确。 2.3 信 息 的 编 码 2.3.1 二进制编码的十进制数(BCD编码) 虽然二进制数对计算机来说是最佳的数制,但是人们却不习惯使用它。为了解决这一矛盾,人们提出了一个比较适合于十进制系统的二进

13、制编码的特殊形式,即将1位十进制的09这10个数字分别用4位二进制码的组合来表示,在此基础上可按位对任意十进制数进行编码。这就是二进制编码的十进制数,简称BCD码(Binary-Coded Decimal)。 4位二进制数码有16种组合(00001111),原则上可任选其中的10个来分别代表十进制中09这10个数字。但为了便于记忆,最常用的是8421 BCD码,这种编码从00001111这16种组合中选择前10个即00001001来分别代表十进制数码09,8、4、2、1分别是这种编码从高位到低位每位的权值。BCD码有两种形式,即压缩型BCD码和非压缩型BCD码。 1压缩型BCD码 压缩型BCD

14、码用一个字节表示两位十进制数。例如,10000110B表示十进制数86。 2非压缩型BCD码 非压缩型BCD码用一个字节表示一位十进制数。高4位总是0000,低4位用00001001中的一种组合来表示09中的某一个十进制数。 表2.2 8421 BCD 码部分编码表 十进制数压缩型BCD码非压缩型BCD码12391011192021000000010000001000000011000010010001000000010001000110010010000000100001000000010000001000000011 0000100100000001 0000000000000001 00

15、000001 00000001 0000100100000010 0000000000000010 00000001 需要说明的是,虽然BCD码可以简化人机联系,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需要的位数比用纯二进制码多,而且用BCD码进行运算所花的时间也要更多,计算过程更复杂,因为BCD码是将每个十进制数用一组4位二进制数来表示,若将这种BCD码送计算机进行运算,由于计算机总是将数当作二进制数来运算,所以结果可能出错,因此需要对计算结果进行必要的修正,才能使结果为正确的BCD码形式。 例2.15 十进制数与BCD数相互转换。 将十进制数69.81转换为压缩型

16、BCD数: 69.81=(0110 1001.1000 0001)BCD 将BCD数1000 1001.0110 1001转换为十进制数: (1000 1001.0110 1001)BCD=89.69 例2.16 设有变量x等于10010110B,当该变量分别为无符号数、原码、补码、压缩型BCD码时,试分别计算变量x所代表的数值大小。解: x为无符号数:x=10010110B=127+026+025+124+023+122+121+020=150 x为原码:x原=10010110B x= -026+025+124+023+122+121+020= -22x为补码:x补=10010110B x原

17、=x补补=11101010B x= -126+125+024+123+022+121+020= -106 x为BCD码:xBCD=10010110B x=96 例2.17 (BCD码运算时的修正问题)用BCD码求38+49。 解 0011 1000 38的BCD码+) 0100 1001 49的BCD码 1000 0001 81的BCD码 计算结果1000 0001是81的BCD数,而正确结果应为87的BCD数1000 0111,因此结果是错误的。其原因是,十进制数相加应该是“逢十进一”,而计算机按二进制数运算,每4位为一组,低4位向高4位进位是“逢十六进一”,所以当相加结果超过9时将比正确结

18、果少6,因此结果出错。解决办法是对二进制加法运算结果采用“加6修正”,从而将二进制加法运算的结果修正为BCD码加法运算结果。 BCD数相加时,对二进制加法运算结果修正的规则如下: 如果两个对应位BCD数相加的结果向高位无进位,且结果小于或等于9,则该位不需要修正;若得到的结果大于9而小于16,则该位需要加6修正。 如果两个对应位BCD数相加的结果向高位有进位(结果大于或等于16),则该位需要进行加6修正。 因此,两个BCD数进行运算时,首先按二进制数进行运算,然后必须用相应的调整指令进行调整,从而得到正确的BCD码结果。有关BCD运算结果的调整指令将在第4章“80 x86指令系统”中介绍。 2.3.2 ASCII字符编码 所谓字符,是指数字、字母以及其他一些符号的总称。 目前,国际上广泛使用的字符编码系统是ASCII码(American Standard Code for Information Interchange)美国标准信息交换码。ASCII码采用7位二进制代码来对字符进行编码,7位ASCII码能表示27=128种不同的字符,其中包括数码(09),英文大、小写字母,标点符号及控制字符等,见表2.3。 表2.3 美国标准信息交换码ASCII(7位代码) 2.4 数的定点与浮点表示法 2.4.

温馨提示

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

评论

0/150

提交评论