微型计算机原理与汇编语言第2章-2补码的加减运算.ppt

上传人:wuy****n92 文档编号:73258909 上传时间:2023-02-17 格式:PPT 页数:35 大小:752.50KB
返回 下载 相关 举报
微型计算机原理与汇编语言第2章-2补码的加减运算.ppt_第1页
第1页 / 共35页
微型计算机原理与汇编语言第2章-2补码的加减运算.ppt_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《微型计算机原理与汇编语言第2章-2补码的加减运算.ppt》由会员分享,可在线阅读,更多相关《微型计算机原理与汇编语言第2章-2补码的加减运算.ppt(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2.2.42.2.4 补码的加减运算补码的加减运算 1.1.补码加法补码加法 在在计计算算机机中中,凡凡是是带带符符号号数数一一律律用用补补码码表表示示,运运算算结结果果自自然然也也是是补补码码。其其运运算算特特点点是是:符符号号位位和和数数值值位位一一起起参参加加运运算算,并且自动获得结果(包括符号位与数值位)。并且自动获得结果(包括符号位与数值位)。补码加法的运算规则为:补码加法的运算规则为:即:两数补码的和等于两数和的补码。即:两数补码的和等于两数和的补码。(2.2.5)例例2.11 已知已知+51补补=0011 0011B,+66补补=0100 0010B,-51补补=1100 110

2、1B,-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)+(5

3、5)补补=0000111B结果为正,因此结果为正,因此(+66)+(55)原原=(+66)+(55)补补=00001111其真值为其真值为+15,计算结果正确。,计算结果正确。二进制二进制(补码补码)加法加法 十进制加法十进制加法 0100 0010 +66补补 +66+)1100 1101 -51补补 +)-51 0000 1111 +15补补 +151自动丢失自动丢失由于由于 -66补补+-51补补=10001011B=(-66)+(-55)补补 结果为负,因此结果为负,因此(-66)+(-55)原原=(-66)+(-55)补补补补=11110101B其真值为其真值为-117,计算结果正确

4、。,计算结果正确。二进制二进制(补码补码)加法加法 十进制加法十进制加法 1011 1110 -66补补 -66+)1100 1101 -51补补 +)-51 1000 1011 -117补补 -1171自动丢失自动丢失 2.2.补码减法补码减法补码减法补码减法补码减法的运算规则为:补码减法的运算规则为:变补:连同符号位在内,各位取反,末位变补:连同符号位在内,各位取反,末位+1 (2.2.6)即:即:例例2.12 已知已知+51补补=0011 0011B,+66补补=0100 0010B51补补=1100 1101B,66补补=1011 1110B 求求+66补补+51补补=?-66补补-5

5、1补补=?解解 +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 -51补补 -)+51 0000 1111 +15补补 +151自动丢失自动丢失 可可以以看看出出,无无论论被被减减数数、减减数数是是正正数数还还是是负负数数,上上述述补补码码减减法法的的规规

6、则则都都是是正正确确的的。同同样样,由由最最高高位位向向更更高高位位的的进进位位会会自自动动丢丢失而不影响运算结果的正确性。失而不影响运算结果的正确性。计算机中带符号数用补码表示时有如下优点:计算机中带符号数用补码表示时有如下优点:可以将减法运算变为加法运算,因此可使用同一个运算器可以将减法运算变为加法运算,因此可使用同一个运算器可以将减法运算变为加法运算,因此可使用同一个运算器可以将减法运算变为加法运算,因此可使用同一个运算器实现加法和减法运算,简化了电路实现加法和减法运算,简化了电路实现加法和减法运算,简化了电路实现加法和减法运算,简化了电路。无符号数和带符号数的加法运算可以用同一个加法器

7、实无符号数和带符号数的加法运算可以用同一个加法器实无符号数和带符号数的加法运算可以用同一个加法器实无符号数和带符号数的加法运算可以用同一个加法器实现,结果都是正确的。例如:现,结果都是正确的。例如:现,结果都是正确的。例如:现,结果都是正确的。例如:无符号数无符号数 带符号数带符号数 11100001 225 -31补补+)00001101 +)13 +)+13补补 11101110 238 -18补补 若若两两操操作作数数为为无无符符号号数数时时,计计算算结结果果为为无无符符号号数数11101110B,其其真真值值为为238,结结果果正正确确;若若两两操操作作数数为为补补码码形形式式,计计算

8、算结结果果也也为补码形式,为补码形式,11101110B为为18的补码,结果也是正确的。的补码,结果也是正确的。练习:1、x=+1011010,y=+1010000,求,求x+y补补=?2、x=-1011010,y=-1010000,求,求x+y补补=?3、x=+1011010,y=-1010000,求,求x-y补补=?4、x=-1011010,y=+1010000,求,求x-y补补=?2.2.5 溢出及其判断方法溢出及其判断方法 1.进位与溢出进位与溢出 所所谓谓进进位位,是是指指运运算算结结果果的的最最高高位位向向更更高高位位的的进进位位,用用来来判判断断无无符符号号数数运运算算结结果果是

9、是否否超超出出了了计计算算机机所所能能表表示示的的最最大大无无符符号号数的范围。数的范围。溢出溢出是指带符号数的补码运算溢出,用来判断带符号数补是指带符号数的补码运算溢出,用来判断带符号数补码运算结果是否超出了补码所能表示的范围。例如,字长为码运算结果是否超出了补码所能表示的范围。例如,字长为n位位的带符号数,它能表示的补码范围为的带符号数,它能表示的补码范围为-2n-1+2n-1-1,如果运算结,如果运算结果超出此范围,就叫补码溢出,简称溢出。果超出此范围,就叫补码溢出,简称溢出。可能出现溢出的情况:可能出现溢出的情况:(1)两正数相加结果超出范围,结果变成负数。)两正数相加结果超出范围,结

10、果变成负数。现象:次高位向最高位有进位,最高位相加(连同次现象:次高位向最高位有进位,最高位相加(连同次高位进位)无进位。(上溢)高位进位)无进位。(上溢)(2)两负数相加结果超出范围,结果变成正数。)两负数相加结果超出范围,结果变成正数。现象:次高位向最高位无进位,最高位相加(连同次现象:次高位向最高位无进位,最高位相加(连同次高位进位)有进位。(下溢)高位进位)有进位。(下溢)(3)两异号数相减)两异号数相减 正数减负数结果超出范围:同(正数减负数结果超出范围:同(1)负数减正数结果超出范围:同(负数减正数结果超出范围:同(2)2.溢出的判断方法溢出的判断方法 判判断断溢溢出出的的方方法法

11、很很多多,常常见见的的有有:观观观观察察察察法法法法。通通过过参参加加运运算算的的两两个个数数的的符符号号及及运运算算结结果果的的符符号号进进行行判判断断。单单单单符符符符号号号号位位位位法法法法。该该方方法法通通过过符符号号位位和和数数值值部部分分最最高高位位的的进进位位状状态态来来判判断断结结果果是是否否溢溢出出。双双双双符符符符号号号号位位位位法法法法,又又称称为为变变形形补补码码法法。它它是是通通过过运运算算结结果的两个符号位的状态来判断结果是否溢出。果的两个符号位的状态来判断结果是否溢出。上述三种方法中,第一种方法仅适用于手工运算时对结果上述三种方法中,第一种方法仅适用于手工运算时对

12、结果是否溢出的判断,其他两种方法在计算机中都有使用。限于篇是否溢出的判断,其他两种方法在计算机中都有使用。限于篇幅,本节仅通过具体例子对第幅,本节仅通过具体例子对第种方法做简要介绍。种方法做简要介绍。若若符符号号位位进进位位状状态态用用CF来来表表示示,当当符符号号位位向向前前有有进进位位时时,CF=1,否否则则,CF=0;数数值值部部分分最最高高位位的的进进位位状状态态用用DF来来表表示示,当当该该位位向向前前有有进进位位时时,DF=1,否否则则,DF=0。单单符符号号位位法法就就是是通过该两位进位状态的异或结果来判断是否溢出的。通过该两位进位状态的异或结果来判断是否溢出的。(2.2.7)若

13、若OF=1,说明结果溢出;若,说明结果溢出;若OF=0,则结果未溢出。也就,则结果未溢出。也就是说,当符号位和数值部分最高位同时有进位或同时没有进位是说,当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出,否则,结果溢出。时,结果没有溢出,否则,结果溢出。例例2.13 设有两个操作数设有两个操作数x=01000100B,y=01001000B,将这两,将这两个操作数送运算器做加法运算,试问:个操作数送运算器做加法运算,试问:若为无符号数,计算结若为无符号数,计算结果是否正确?果是否正确?若为带符号补码数,计算结果是否溢出?若为带符号补码数,计算结果是否溢出?解解 无符号数无符号数

14、 带符号数带符号数 01000100 68 +68补补+)01001000 +)72 +)+72补补 10001100 140 +140补补DF=1CF=0 若若为为无无符符号号数数,由由于于CF=0,说说明明结结果果未未超超出出8位位无无符符号号数数所所能能表表达达的的数数值值范范围围(0 255),计计算算结结果果10001100B为为无无符符号号数数,其其真值为真值为140,计算结果正确。,计算结果正确。若为带符号数补码,由于若为带符号数补码,由于OF=1,结果溢出;这里也可通过,结果溢出;这里也可通过参加运算的两个数的符号及运算结果的符号进行判断,由于两操参加运算的两个数的符号及运算结

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

16、计算结果是否溢出?若为带符号补码数,计算结果是否溢出?解解 无符号数无符号数 带符号数带符号数 11101110 238 -18补补+)11001000 +)200 +)-56补补 10110110 438 -74补补DF=1CF=11自动丢失自动丢失 若若为为无无符符号号数数,由由于于CF=1,说说明明结结果果超超出出8位位无无符符号号数数所所能能表表达达的的数数值值范范围围(0 255)。两两操操作作数数11101110B和和11001000B对对应应的的无无符符号号数数分分别别为为238和和200,两两数数之之和和应应为为438255,因因此此,计计算结果是错误的。算结果是错误的。若为带

17、符号数补码,由于若为带符号数补码,由于OF=0,结果未溢出。两操作数,结果未溢出。两操作数11101110B和和11001000B分别为分别为18和和56的补码,其结果应为的补码,其结果应为74的补码形式,而计算结果的补码形式,而计算结果10110110B正是正是74的补码,因此结果正的补码,因此结果正确。确。2.3 信信 息息 的的 编编 码码 2.3.1 2.3.1 二进制编码的十进制数二进制编码的十进制数二进制编码的十进制数二进制编码的十进制数(BCD(BCD编码编码编码编码)虽然二进制数对计算机来说是最佳的数制,但是人们却不习虽然二进制数对计算机来说是最佳的数制,但是人们却不习惯使用它

18、。为了解决这一矛盾,人们提出了一个比较适合于十进惯使用它。为了解决这一矛盾,人们提出了一个比较适合于十进制系统的二进制编码的特殊形式,即将制系统的二进制编码的特殊形式,即将1位十进制的位十进制的0 9这这10个数个数字分别用字分别用4位二进制码的组合来表示,在此基础上可按位对任意位二进制码的组合来表示,在此基础上可按位对任意十进制数进行编码。这就是二进制编码的十进制数,简称十进制数进行编码。这就是二进制编码的十进制数,简称BCD码码(Binary-Coded Decimal)。4位位二二进进制制数数码码有有16种种组组合合(0000 1111),原原则则上上可可任任选选其其中中的的10个个来来

19、分分别别代代表表十十进进制制中中0 9这这10个个数数字字。但但为为了了便便于于记记忆忆,最最常常用用的的是是8421 BCD码码,这这种种编编码码从从0000 1111这这16种种组组合合中中选选择择前前10个个即即0000 1001来来分分别别代代表表十十进进制制数数码码0 9,8、4、2、1分分别别是是这这种种编编码码从从高高位位到到低低位位每每位位的的权权值值。BCD码码有有两两种种形形式式,即压缩型即压缩型BCD码和非压缩型码和非压缩型BCD码。码。1 1压缩型压缩型压缩型压缩型BCDBCD码码码码 压压缩缩型型BCD码码用用一一个个字字节节表表示示两两位位十十进进制制数数。例例如如

20、,10000110B表示十进制数表示十进制数86。2 2非压缩型非压缩型非压缩型非压缩型BCDBCD码码码码 非压缩型非压缩型BCD码用一个字节表示一位十进制数。高码用一个字节表示一位十进制数。高4位总是位总是0000,低,低4位用位用0000 1001中的一种组合来表示中的一种组合来表示0 9中的某一个十中的某一个十进制数。进制数。表表2.2 8421 BCD 码部分编码表码部分编码表 十进制数压缩型BCD码非压缩型BCD码1239101119202100000001000000100000001100001001000100000001000100011001001000000010000

21、1000000010000001000000011 0000100100000001 0000000000000001 00000001 00000001 0000100100000010 0000000000000010 00000001 需要说明的是,虽然BCD码可以简化人机联系,但它比纯二进制编码效率低,对同一个给定的十进制数,用BCD码表示时需要的位数比用纯二进制码多,而且用BCD码进行运算所花的时间也要更多,计算过程更复杂,因为BCD码是将每个十进制数用一组4位二进制数来表示,若将这种BCD码送计算机进行运算,由于计算机总是将数当作二进制数来运算,所以结果可能出错,因因此需要对计算结

22、果进行必要的此需要对计算结果进行必要的修正修正修正修正,才能使结果为正确的,才能使结果为正确的BCD码码形式。详见本小节例形式。详见本小节例2.17。例2.15 十进制数与BCD数相互转换。将十进制数69.81转换为压缩型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=12

23、7+026+025+124+023+122+121+020=150 x为原码:x原=10010110B x=-026+025+124+023+122+121+020=-22x为补码:x补=10010110B x原=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码码 计算结果100

24、0 0001是81的BCD数,而正确结果应为87的BCD数1000 0111,因此结果是错误的。其原因是,十进制数相加应该是“逢十进一”,而计算机按二进制数运算,每4位为一组,低4位向高4位进位是“逢十六进一”,所以当相加结果超过9时将比正确结果少6,因此结果出错。解决办法是对二进制加法运算结果采用“加6修正”,从而将二进制加法运算的结果修正为BCD码加法运算结果。BCDBCD数相加时,对二进制加法运算结果修正的规则如下:数相加时,对二进制加法运算结果修正的规则如下:数相加时,对二进制加法运算结果修正的规则如下:数相加时,对二进制加法运算结果修正的规则如下:如如如如果果果果两两两两个个个个对对

25、对对应应应应位位位位BCDBCD数数数数相相相相加加加加的的的的结结结结果果果果向向向向高高高高位位位位无无无无进进进进位位位位,且且且且结结结结果果果果小小小小于于于于或或或或等等等等于于于于9 9,则则则则该该该该位位位位不不不不需需需需要要要要修修修修正正正正;若若若若得得得得到到到到的的的的结结结结果果果果大大大大于于于于9 9而而而而小小小小于于于于1616,则该位需要加,则该位需要加,则该位需要加,则该位需要加6 6修正。修正。修正。修正。如如如如果果果果两两两两个个个个对对对对应应应应位位位位BCDBCD数数数数相相相相加加加加的的的的结结结结果果果果向向向向高高高高位位位位有有

26、有有进进进进位位位位(结结结结果果果果大大大大于于于于或等于或等于或等于或等于16)16),则该位需要进行加,则该位需要进行加,则该位需要进行加,则该位需要进行加6 6修正。修正。修正。修正。因此,两个BCD数进行运算时,首先按二进制数进行运算,然后必须用相应的调整指令进行调整,从而得到正确的BCD码结果。有关BCD运算结果的调整指令将在第4章“80 x86指令系统”中介绍。2.3.2 ASCII2.3.2 ASCII字符编码字符编码字符编码字符编码 所谓字符,是指数字、字母以及其他一些符号的总称。所谓字符,是指数字、字母以及其他一些符号的总称。目前,国际上广泛使用的字符编码系统是ASCIIA

27、SCII码码码码(American American Standard Standard Code Code for for Information Information InterchangeInterchange)美美美美国国国国标标标标准准准准信信信信息息息息交交交交换换换换码码码码。ASCII码采用7位二进制代码来对字符进行编码,7位ASCII码能表示27=128种不同的字符,其中包括数码(09),英文大、小写字母,标点符号及控制字符等,见表2.3。表表2.3 美国标准信息交换码美国标准信息交换码ASCII(7位代码位代码)2.4 数的定点与浮点表示法数的定点与浮点表示法 2.4.1

28、 2.4.1 定点表示定点表示定点表示定点表示 所谓定点表示法,是指小数点在数中的位置是固定的。原理上讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示成纯小数或纯整数形式,如图2.1所示。图2.1 定点数的两种表示方法(a)纯小数形式;(b)纯整数形式 设用一个n+1位字来表示一个数x,其中一位表示符号位(0表示正,1表示负),其他n位为数值位。对于纯小数表示法,所能表示的数x(原码表示,下同)的范围为:-(1-2-n)x1-2-n (2.4.1)它能表示的数的最大绝对值为1-2-n,最小绝对值为0。对于纯整数表示法,所能表示的数x的范围为:-(2n-1)x2n-1 (2.4.2)它能

29、表示的数的最大绝对值为2n-1,最小绝对值为0。2.4.2 浮点表示浮点表示 所谓浮点表示法,就是小数点在数中的位置是浮动的。任意一个二进制数x总可以写成:其中,d称为尾数,是二进制纯小数,指明数的全部有效数字,前面的符号称为数符,表示数的符号,该位为0,表明该浮点数为正,该位为1,表明该浮点数为负;p称为阶码,它前面的符号称为阶符,阶码为正时,用0表示,阶码为负时,用1表示。阶符阶码(p)数符尾数(d)1 位m位1位n位 可以看出,阶阶码码p指指明明小小数数点点的的位位置置,小小数数点点随随着着阶阶码码的的大大小小和正负而浮动,和正负而浮动,因此把这种数称为浮点数。设阶码的位数为m位,尾数的位数为n位,则该浮点数表示的数值范围为:(2.4.4)在字长相同的情况下,浮点数能表示的数值范围比定点数大得多,且精度高,但浮点运算规则复杂。作业:作业:P31 1(1)2(2)6(1)、()、(2)、(、(3)、()、(4)7(1)、()、(3)8(2)、()、(4)、()、(6)、()、(8)10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁