下载此文档

第4章 80868088指令系统3(算术运算指令)(楼俊君).ppt


文档分类:IT计算机 | 页数:约47页 举报非法文档有奖
1/47
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/47 下载此文档
文档列表 文档介绍
算术运算指令
涉及两种类型数据: 无符号数和有符号数。对加减法指令,无符号和有符号数可采用同一套指令,但应注意:
参加的操作数必须都是无符号数或都是有符号数。
需使用不同的标志位(CF,OF)来检查无符号数和有符号数的运算结果是否溢出。
这类指令一般都影响标志寄存器FLAGS。
表4 - 2 算术运算类指令表
两个8位数相加时有4种情况:
①无符号数和有符号数均不溢出
二进制相加无符号数加有符号数加
0000 1000 8 +8
+0001 1110 + 30 + (+30)
0010 0110 38 +38

结果38 CF=0 OF=0
无符号数范围0~255
带符号数范围-128~127
②无符号数溢出
无符号数有符号数
0000 1000 8 +8
+1111 1101 +253 +(-3)
10000 0101 261 +5
结果5 CF=1 OF=0
③有符号数溢出
0000 1000 8 +8
+0111 1101 +125 +(+125)
1000 0101 133 +133
结果-123 CF=0 OF=1
(补码表示)
④无符号数和有符号数均溢出
无符号数有符号数
1000 1000 136 -120
+1111 0111 +247 +(-9)
10111 1111 383 -129
结果127 CF=1 OF=1
上面四种情况说明,
CF标志可用来表示无符号数的溢出,
OF标志可用来表示有符号数的溢出。
有符号数的溢出是一种出错状态,在运算过程中应当避免。
所有的算术运算指令,都会影响FLAGS标志寄存器的6个状态标志CF/OF/ZF/SF/AF/PF(3个控制标志IF/DF/TF不受影响)。
总的讲,有这样一些规则:
当无符号数运算产生溢出(即最高位向前有进位
或借位)时,CF=1,否则为0;
当有符号数运算产生溢出时,OF=1(即OF=CF⊕CF-1) ,
否则为0;
当运算结果为0时,ZF=1 ,否则为0;
当运算结果为负数时,SF=1 ,否则为0;
当运算一半位置有进位或借位时,AF=1 ,否则为0;
当运算结果中有偶数个1时,PF=1 ,否则为0。
共有5条:
(1) 不带进位的加法指令ADD
格式: ADD acc,data
ADD mem/reg,data
ADD mem/reg1,mem/reg2
注:

例:ADD AL,30H
ADD AX,[BX+20H]
ADD CX,SI
ADD [DI],200H
ADD指令对标志位(指6个状态标志)都有影响。

例:MOV AL,7EH
ADD AL,5BH 两条指令执行后,标志位(指6个状态标志)都有影响。
AF=1 表示bit3向bit4有进位
CF=0 表示最高位向前无进位
OF=1 表示若为有符号数加法,其运算结果产生溢出
PF=0 表示8位的运算结果中,1的个数为奇数
SF=1 表示运算结果的最高位为1
ZF=0 表示运算结果不为0
不带进位的加法指令ADD
(2) 带进位位的加法指令ADC
ADC指令在形式上和功能上都有与ADD类似,只是相加时还要包括进位标志CF的内容。
例如:
ADC AL,68H ;AL←(AL)+68H+(CF)
ADC AX,CX ;AX←(AX)+(CX)+(CF)
ADC BX,[DI] ;BX←(BX)+[DI+1][DI]+(CF)
例:有两个4字节的无符号数相加:
2C 56 F8 AC + 30 9E 47 BE = ?
设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。
因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。
ADC指令主要用于多字节加法运算中

第4章 80868088指令系统3(算术运算指令)(楼俊君) 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数47
  • 收藏数0 收藏
  • 顶次数0
  • 上传人ranfand
  • 文件大小1.81 MB
  • 时间2017-10-30