当前位置:文档之家› 第2章 微机原理溢出判断

第2章 微机原理溢出判断


(2.2.5)
第2章 计算机中的数制和编码 例2.11 已知 [+51]补=0011 0011B,[+66]补=0100 0010B, [-51]补=1100 1101B, [-66]补=1011 1110B
求 [+66]补+[+51]补=?[+66]补+[-51]补=?[-66]补+[-51]补=?
① 可以将减法运算变为加法运算,因此可使用同一个运算器 实现加法和减法运算,简化了电路。
第2章 计算机中的数制和编码
② 无符号数和带符号数的加法运算可以用同一个加法器实
现,结果都是正确的。例如:
无符号数 带符号数
11100001 +) 00001101 +)
225 13
[-31]补 +) [+13]补
第2章 计算机中的数制和编码 2.2.4 补码的加减运算 1. 补码加法 在计算机中,带符号数一般用补码表示,运算结果自然也 是补码。其运算特点是:符号位和数值位一起参加运算,并且
自动获得结果(包括符号位与数值位)。
补码加法的运算规则为:
[ x]补 [ y]补 [ x y]补
即:两数补码的和等于两数和的补码。
第2章 计算机中的数制和编码
二进制(补码)加法 十进制加法
0100 0010 [+ 66]补 +) 1100 1101 [-51]补
自动丢失 1 0000 1111
对比结果 是否正确
+66 -) +51 +15
[+15]补
二进制(补码)加法
十进制加法
对比结果 是否正确
1011 1110 [- 66]补
断无符号数运算结果是否超出了计算机所能表示的最大无符号
数的范围。
溢出是指带符号数的补码运算溢出,用来判断带符号数补

码运算结果是否超出了补码所能表示的范围。例如,字长为n位
的带符号数,它能表示的补码范围为-2n-1+2n-1-1,如果运算结 果超出此范围,就叫补码溢出,简称溢出。
第2章 计算机中的数制和编码 2. 溢出的判断方法 判断溢出的方法很多,常见的有:① 通过参加运算的两个数 的符号及运算结果的符号进行判断。② 单符号位法。该方法通 过符号位和数值部分最高位的进位状态来判断结果是否溢出。
• CODE ENDS
• END START
第2章 计算机中的数制和编码 2. 补码减法 补码减法的运算规则为:
[ x]补 [ y]补 [ x]补 [ y]补 [ x y]补
(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章 计算机中的数制和编码
表2.2 8421 BCD 码部分编码表
十进制数

压缩型BCD码
非压缩型BCD码
1 2 3
00000001 00000010 00000011

9 10 11

00001001 00010000 00010001
00000001 00000010 00000011
见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)=?
二进制(补码)加法 十进制加法
0100 0010 [+ 66]补
+) 1100 1101 [-51]补
自动丢失 1 0000 1111
对比结果 是否正确
+66
+) -51 +15
[+15]补
第2章 计算机中的数制和编码
由于
[+66]补+[−51]补=[(+66)+(−55)]补=0000111B 结果为正,因此 [(+66)+(−55)]原=[(+66)+(−55)]补=00001111
第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.3 信 息 的 编 码
2.3.1 二进制编码的十进制数(BCD编码) 虽然二进制数对计算机来说是最佳的数制,但是人们却不习 惯使用它。为了解决这一矛盾,人们提出了一个比较适合于十进 制系统的二进制编码的特殊形式,即将1位十进制的09这10个数 字分别用4位二进制码的组合来表示,在此基础上可按位对任意 十进制数进行编码。这就是二进制编码的十进制数,简称BCD码 (Binary-Coded Decimal)。
解:
计算机用二进制补码算
二进制(补码)加法
日常生活我们用十进制算
十进制加法
0100 0010 [+ 66]补
+) 0011 0011 [+ 51]补 0111 0101 [+117]补
对比结果 是否正确
+ 66
+) + 51 +117
第2章 计算机中的数制和编码 由于 [+66]补+[+51]补=[(+66)+(+55)]补=01110101B 结果为正,因此 [(+66)+(+55)]原=[(+66)+(+55)]补=01110101B 其真值为+117,计算结果正确。
两数补码之和应为+140的补码,而8位带符号数补码所能表达的
数值范围为−128+127,结果超出该范围,因此结果是错误的。
第2章 计算机中的数制和编码 例2.14 设有两个操作数x=11101110B,y=11001000B,将这 两个操作数送运算器做加法运算,试问:① 若为无符号数,计 算结果是否正确?② 若为带符号补码数,计算结果是否溢出?
[+68]补 +) [+72]补 [+140]补
第2章 计算机中的数制和编码 ① 若为无符号数,由于CF=0,说明结果未超出8位无符号数 所能表达的数值范围(0255),计算结果10001100B为无符号数,
其真值为140,计算结果正确。
② 若为带符号数补码,由于=1,结果溢出;这里也可通过 参加运算的两个数的符号及运算结果的符号进行判断,由于两 操作数均为正数,而结果却为负数,因而结果溢出;+68和+72

11101110 +)11001000 1 10110110
DF=1 CF=1
无符号数
带符号数
自动丢失
238 +)200 438
[-18]补 +) [-56]补 [-74]补
第2章 计算机中的数制和编码 ① 若为无符号数,由于CF=1,说明结果超出8位无符号数所能 表达的数值范围(0255)。两操作数11101110B和11001000B对应

00001001 00000001 00000000 00000001 00000001

19 20 21

00011001 00100000 00100001

00000001 00001001 00000010 00000000 00000010 00000001
第2章 计算机中的数制和编码 需要说明的是,虽然BCD码可以简化人机联系,但它比纯二 进制编码效率低,对同一个给定的十进制数,用BCD码表示时需
③ 双符号位法,又称为变形补码法。它是通过运算结果的两个
符号位的状态来判断结果是否溢出。 上述三种方法中,第一种方法仅适用于手工运算时对结果 是否溢出的判断,其他两种方法在计算机中都有使用。限于篇 幅,本节仅通过具体例子对第②种方法做简要介绍。
第2章 计算机中的数制和编码 若符号位进位状态用CF来表示,当符号位向前有进位时, CF=1,否则,CF=0;数值部分最高位的进位状态用DF来表示,
11101110
238
[-18]补
若两操作数为无符号数时,计算结果为无符号数11101110B, 其真值为238,结果正确;若两操作数为补码形式,计算结果也 为补码形式,11101110B为–18的补码,结果也是正确的。
第2章 计算机中的数制和编码 2.2.5 溢出及其判断方法 1. 进位与溢出
所谓进位,是指运算结果的最高位向更高位的进位,用来判
第2章 计算机中的数制和编码 例2.16 设有变量x等于10010110B,当该变量分别为无符号数、 原码、补码、压缩型BCD码时,试分别计算变量x所代表的数值 大小。 解 无符号数: x=10010110B=127+026+025+124+023+122+121+020=150
-66
+) 0011 0011 [+51]补
1111 0001 [-15]补
相关主题