• / 38
  • 下载费用:10 金币  

微机原理溢出判断

关 键 词:
微机原理溢出判断
资源描述:
第2章 计算机中的数制和编码 2.2.42.2.4 补码的加减运算补码的加减运算 1. 1. 补码加法补码加法 在计算机中,带符号数一般用补码表示,运算结果自然也 是补码。其运算特点是:符号位和数值位一起参加运算,并且 自动获得结果(包括符号位与数值位)。 补码加法的运算规则为: 即:两数补码的和等于两数和的补码。 (2.2.5) 第2章 计算机中的数制和编码 例2.11 已知 [+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 日常生活我们用十进制算计算机用二进制补码算 对比结果 是否正确 第2章 计算机中的数制和编码 二进制(补码)加法 十进制加法 0100 0010 [+ 66]补 +66 +) 1100 1101 [-51]补 +) -51 0000 1111 [+15]补 +151自动丢失 由于 [+66]补+[+51]补=[(+66)+(+55)]补=01110101B 结果为正,因此 [(+66)+(+55)]原=[(+66)+(+55)]补=01110101B 其真值为+117,计算结果正确。 对比结果 是否正确 第2章 计算机中的数制和编码 二进制(补码)加法 十进制加法 1011 1110 [- 66]补 -66 +) 1100 1101 [-51]补 +) -51 1000 1011 [-117]补 -1171自动丢失 由于 [+66]补+[−51]补=[(+66)+(−55)]补=0000111B 结果为正,因此 [(+66)+(−55)]原=[(+66)+(−55)]补=00001111 其真值为+15,计算结果正确。 对比结果 是否正确 第2章 计算机中的数制和编码 由于 [-66]补+[-51]补=10001011B=[(-66)+(-55)]补 结果为负,因此 [(-66)+(-55)]原=[[(-66)+(-55)]补]补=11110101B 其真值为-117,计算结果正确。 可以看出,不论被加数、加数是正数还是负数,只要直接用 它们的补码直接相加,当结果不超出补码所表示的范围时,计算 结果便是正确的补码形式。但当计算结果超出补码表示范围时, 结果就不正确了,这种情况称为溢出溢出。 见211.asm演示 第2章 计算机中的数制和编码 211.asm • CODE SEGMENT ASSUME CS:CODE • START: MOV AL,66 ADD AL,51 ;(AL)=? MOV AL,66 ADD AL,-51; (AL)=? MOV AL,-66 ADD AL,-51 ;(AL)=? • CODE ENDS • END START 第2章 计算机中的数制和编码 2. 2. 补码减法补码减法 补码减法的运算规则为: (2.2.6) 第2章 计算机中的数制和编码 例2.12 已知 [+51]补=0011 0011B,[+66]补=0100 0010B [−51]补=1100 1101B,[−66]补=1011 1110B 求 [+66]补−[+51]补=? [-66]补-- [-51]补=? 解 [+66]补- [+51]补=[+66]补+[-51]补 [-66]补- [-51]补=[-66]补+[+51]补 第2章 计算机中的数制和编码 二进制(补码)加法 十进制加法 1011 1110 [- 66]补 -66 +) 0011 0011 [+51]补 -) -51 1111 0001 [-15]补 -15 二进制(补码)加法 十进制加法 0100 0010 [+ 66]补 +66 +) 1100 1101 [-51]补 -) +51 0000 1111 [+15]补 +151自动丢失 对比结果 是否正确 对比结果 是否正确 第2章 计算机中的数制和编码 可以看出,无论被减数、减数是正数还是负数,上述补码减法 的规则都是正确的。同样,由最高位向更高位的进位会自动丢失 而不影响运算结果的正确性。 计算机中带符号数用补码表示时有如下优点: ①① 可以将减法运算变为加法运算,因此可使用同一个运算器可以将减法运算变为加法运算,因此可使用同一个运算器 实现加法和减法运算,简化了电路实现加法和减法运算,简化了电路。。 第2章 计算机中的数制和编码 ②② 无符号数和带符号数的加法运算可以用同一个加法器实无符号数和带符号数的加法运算可以用同一个加法器实 现,结果都是正确的。例如:现,结果都是正确的。例如: 无符号数 带符号数 11100001 225 [-31]补 +) 00001101 +) 13 +) [+13]补 11101110 238 [-18]补 若两操作数为无符号数时,计算结果为无符号数11101110B, 其真值为238,结果正确;若两操作数为补码形式,计算结果也 为补码形式,11101110B为–18的补码,结果也是正确的。 第2章 计算机中的数制和编码 2.2.5 2.2.5 溢出及其判断方法溢出及其判断方法 1. 进位与溢出 所谓进位进位,是指运算结果的最高位向更高位的进位,用来判 断无符号数运算结果是否超出了计算机所能表示的最大无符号 数的范围。 溢出溢出是指带符号数的补码运算溢出,用来判断带符号数补 码运算结果是否超出了补码所能表示的范围。例如,字长为n位 的带符号数,它能表示的补码范围为-2n-1+2n-1-1,如果运算结 果超出此范围,就叫补码溢出,简称溢出。 第2章 计算机中的数制和编码 2. 溢出的判断方法 判断溢出的方法很多,常见的有:① 通过参加运算的两个数 的符号及运算结果的符号进行判断。② 单符号位法单符号位法。该方法通 过符号位和数值部分最高位的进位状态来判断结果是否溢出。 ③ 双符号位法双符号位法,又称为变形补码法。它是通过运算结果的两个 符号位的状态来判断结果是否溢出。 上述三种方法中,第一种方法仅适用于手工运算时对结果 是否溢出的判断,其他两种方法在计算机中都有使用。限于篇 幅,本节仅通过具体例子对第②种方法做简要介绍。 第2章 计算机中的数制和编码 若符号位进位状态用CF来表示,当符号位向前有进位时, CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示 ,当该位向前有进位时,DF=1,否则,DF=0。单符号位法就 是通过该两位进位状态的异或结果来判断是否溢出的。 (2.2.7) 若OF=1,说明结果溢出;若OF=0,则结果未溢出。也就 是说,当符号位和数值部分最高位同时有进位或同时没有进位 时,结果没有溢出,否则,结果溢出。 第2章 计算机中的数制和编码 例2.13 设有两个操作数x=01000100B,y=01001000B,将这 两个操作数送运算器做加法运算,试问:① 若为无符号数,计 算结果是否正确?② 若为带符号补码数,计算结果是否溢出? 解 无符号数 带符号数 01000100 68 [+68]补 +)01001000 +)72 +) [+72]补 10001100 140 [+140]补 DF=1 CF=0 第2章 计算机中的数制和编码 ① 若为无符号数,由于CF=0,说明结果未超出8位无符号数 所能表达的数值范围(0255),计算结果10001100B为无符号数 ,其真值为140,计算结果正确。 ② 若为带符号数补码,由于=1,结果溢出;这里也可通过 参加运算的两个数的符号及运算结果的符号进行判断,由于两 操作数均为正数,而结果却为负数,因而结果溢出;+68和+72 两数补码之和应为+140的补码,而8位带符号数补码所能表达的 数值范围为−128+127,结果超出该范围,因此结果是错误的 。 第2章 计算机中的数制和编码 例2.14 设有两个操作数x=11101110B,y=11001000B,将这 两个操作数送运算器做加法运算,试问:① 若为无符号数,计 算结果是否正确?② 若为带符号补码数,计算结果是否溢出? 解 无符号数 带符号数 11101110 238 [-18]补 +)11001000 +)200 +) [-56]补 10110110 438 [-74]补 DF=1 CF=1 1自动丢失 第2章 计算机中的数制和编码 ① 若为无符号数,由于CF=1,说明结果超出8位无符号数所能 表达的数值范围(0255)。两操作数11101110B和11001000B对应 的无符号数分别为238和200,两数之和应为438255,因此,计 算结果是错误的。 ② 若为带符号数补码,由于=0,结果未溢出。两操作数 11101110B和11001000B分别为−18和−56的补码,其结果应为−74 的补码形式,而计算结果10110110B正是−74的补码,因此结果 正确。 第2章 计算机中的数制和编码 2.3 信 息 的 编 码 2.3.1 2.3.1 二二进进进进制制编码编码编码编码 的十的十进进进进制数制数(BCD(BCD编码编码编码编码 ) ) 虽然二进制数对计算机来说是最佳的数制,但是人们却不习 惯使用它。为了解决这一矛盾,人们提出了一个比较适合于十进 制系统的二进制编码的特殊形式,即将1位十进制的09这10个数 字分别用4位二进制码的组合来表示,在此基础上可按位对任意 十进制数进行编码。这就是二进制编码的十进制数,简称BCD码 (Binary-Coded Decimal)。 第2章 计算机中的数制和编码 4位二进制数码有16种组合(00001111),原则上可任选其中 的10个来分别代表十进制中09这10个数字。但为了便于记忆, 最常用的是8421 BCD码,这种编码从00001111这16种组合中选 择前10个即00001001来分别代表十进制数码09,8、4、2、1 分别是这种编码从高位到低位每位的权值。BCD码有两种形式 ,即压缩型BCD码和非压缩型BCD码。 第2章 计算机中的数制和编码 1 1.压缩型.压缩型BCDBCD码码 压缩型BCD码用一个字节表示两位十进制数。例如, 10000110B表示十进制数86。 2 2.非压缩型.非压缩型BCDBCD码码 非压缩型BCD码用一个字节表示一位十进制数。高4位总是 0000,低4位用00001001中的一种组合来表示09中的某一个十 进制数。 第2章 计算机中的数制和编码 表2.2 8421 BCD 码部分编码表 十进制数压缩型BCD码非压缩型BCD码 1 2 3 9 10 11 19 20 21 00000001 00000010 00000011 00001001 00010000 00010001 00011001 00100000 00100001 00000001 00000010 00000011 00001001 00000001 00000000 00000001 00000001 00000001 00001001 00000010 00000000 00000010 00000001 第2章 计算机中的数制和编码 需要说明的是,虽然BCD码可以简化人机联系,但它比纯二 进制编码效率低,对同一个给定的十进制数,用BCD码表示时需 要的位数比用纯二进制码多,而且用BCD码进行运算所花的时间 也要更多,计算过程更复杂,因为BCD码是将每个十进制数用一 组4位二进制数来表示,若将这种BCD码送计算机进行运算,由 于计算机总是将数当作二进制数来运算,所以结果可能出错,因 此需要对计算结果进行必要的修正修正,才能使结果为正确的BCD码 形式。详见本小节例2.17。 第2章 计算机中的数制和编码 例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章 计算机中的数制和编码 例2.16 设有变量x等于10010110B,当该变量分别为无符号数、 原码、补码、压缩型BCD码时,试分别计算变量x所代表的数值 大小。 解 无符号数: x=10010110B=127+026+025+124+023+122+121+020=150 原码:[x]原=10010110B x= -026+025+124+023+122+121+020= -22 补码:[x]补=10010110B [x]原=[[x]补]补=11101010B x= -126+125+024+123+022+121+020= -106 BCD码:[x]BCD=10010110B x=96 第2章 计算机中的数制和编码 例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时将比正确结果少6,因此结果 出错。解决办法是对二进制加法运算结果采用“加6修正”,从而将 二进制加法运算的结果修正为BCD码加法运算结果。 第2章 计算机中的数制和编码 BCDBCD数相加时,对二进制加法运算结果修正的规则如下:数相加时,对二进制加法运算结果修正的规则如下: ①① 如果两个对应位如果两个对应位BCDBCD数相加的结果向高位无进位,且结果小数相加的结果向高位无进位,且结果小 于或等于于或等于9 9,则该位不需要修正;若得到的结果大于,则该位不需要修正;若得到的结果大于9 9而小于而小于1616 ,则该位需要加,则该位需要加6 6修正。修正。 ②② 如果两个对应位如果两个对应位BCDBCD数相加的结果向高位有进位数相加的结果向高位有进位( (结果大于结果大于 或等于或等于16)16),则该位需要进行加,则该位需要进行加6 6修正。修正。 因此,两个BCD数进行运算时,首先按二进制数进行运算 ,然后必须用相应的调整指令进行调整,从而得到正确的BCD 码结果。有关BCD运算结果的调整指令将在第4章“80x86指令系 统”中介绍。 第2章 计算机中的数制和编码 2.3.2 ASCII2.3.2 ASCII字符字符编码编码编码编码 所谓字符,是指数字、字母以及其他一些符号的总称。 现代计算机不仅用于处理数值领域的问题,而且要处理大 量的非数值领域的问题。这样一来,必然需要计算机能对数字 、字母、文字以及其他一些符号进行识别和处理,而计算机只 能处理二进制数,因此,通过输入/输出设备进行人机交换信息 时使用的各种字符也必须按某种规则,用二进制数码0和1来编 码,计算机才能进行识别与处理。 第2章 计算机中的数制和编码 目前,国际上使用的字符编码系统有许多种。在微机、通信 设备和仪器仪表中广泛使用的是ASCIIASCII码码( (American American Standard Standard Code Code for for Information Information InterchangeInterchange)——)——美国标准信息交换码。美国标准信息交换码。 ASCII码用一个字节来表示一个字符,采用7位二进制代码来对 字符进行编码,最高位一般用做校验位。7位ASCII码能表示 27=128种不同的字符,其中包括数码(09),英文大、小写字母 ,标点符号及控制字符等,见表2.3。 该表的使用方法读者应熟练掌握。如数字“1”的ASCII码值 为31H,字母“A”的ASCII码值为41H,符号“?”的ASCII码值为 3FH等。 第2章 计算机中的数制和编码 表2.3 美国标准信息交换码ASCII(7位代码) 见2ASCII.asm演示 第2章 计算机中的数制和编码 2ASCII.ASM •CODE SEGMENT ASSUME CS:CODE •START: MOV AL, ‘A’ MOV AL, ’a’ MOV DL, ‘H’ MOV AH,02H INT 21H MOV AH,4CH INT 21H •CODE ENDS •END START 第2章 计算机中的数制和编码 Chars.c • 在屏幕上显示 “I am a student!”,用C实现. •main() •{ • char string[]=“I am a student!“; • printf(“%s“,string); •} • 注意考虑字符数组String中元素在计算机中是 如何表示的??? 第2章 计算机中的数制和编码 Chars.asm •在屏幕上显示 “I am a student!”,用汇编语言实现. •data segment • string db “I am a student!$“ •data ends •code segment • assume cs:code,ds:data •start: • mov ax,data • mov ds,ax • mov dx,offset string • mov ah,09h • int 21h • mov ah,4ch • int 21h • •code ends • end start 注意考虑字节型变量String中 元素在计算机中是如何表示的 ??? 第2章 计算机中的数制和编码 2.4 数的定点与浮点表示法 2.4.1 2.4.1 定点表示定点表示 所谓定点表示法,是指小数点在数中的位置是固定的。原理上 讲,小数点的位置固定在哪一位都是可以的,但通常将数据表示 成纯小数或纯整数形式,如图2.1所示。 图2.1 定点数的两种表示方法 (a) 纯小数形式;(b) 纯整数形式 第2章 计算机中的数制和编码 设用一个n+1位字来表示一个数x,其中一位表示符号位(0表示 正,1表示负),其他n位为数值位。对于纯小数表示法,所能表 示的数x (原码表示,下同)的范围为: -(1-2-n)≤x≤1-2-n (2.4.1) 它能表示的数的最大绝对值为1-2-n,最小绝对值为2-n。 对于纯整数表示法,所能表示的数x的范围为: -(2-n-1)≤x≤2-n -1 (2.4.2) 它能表示的数的最大绝对值为2n-1,最小绝对值为1。 第2章 计算机中的数制和编码 2.4.2 浮点表示 所谓浮点表示法,就是小数点在数中的位置是浮动的。 任意一个二进制数x总可以写成如下形式: (2.4.3) 其中,d称为尾数,是二进制纯小数,指明数的全部有效数字,前 面的符号称为数符,表示数的符号,该位为0,表明该浮点数为正 ,该位为1,表明该浮点数为负;p称为阶码,它前面的符号称为阶 符,阶码为正时,用0表示,阶码为负时,用1表示。 阶符阶码(p)数符尾数(d) 1 位m位1位n位 第2章 计算机中的数制和编码 可以看出,将尾数d的小数点向右(阶码p为正时)或向左(阶码p 为负时)移动p位,即可得到该浮点数表示的数值x。阶码p指明小 数点的位置,小数点随着阶码的大小和正负而浮动,因此把这 种数称为浮点数。 设阶码的位数为m位,尾数的位数为n位,则该浮点数表示的 数值范围为: (2.4.4) 在字长相同的情况下,浮点数能表示的数值范围比定点数大 得多,且精度高,但浮点运算规则复杂。 第2章 计算机中的数制和编码 本章作业 1、(1) (4) 2、(2) (4) 6、(1) (6) 7、(1) (4) 9、 12、(10 (4) 13、(5)
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:微机原理溢出判断
链接地址:https://www.maidoc.com/p-15678826.html

当前资源信息

农民佰佰

编号: 20180817184259399755

类型: 共享资源

格式: PPT

大小: 738.00KB

上传时间: 2019-11-07

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开