下载此文档

第3章 80868088指令系统3(算术运算指令).ppt


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

结果38 CF=0 OF=0
无符号数范围0~255
带符号数范围-128~127
3
②无符号数溢出
无符号数有符号数
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
(补码表示)
4
④无符号数和有符号数均溢出
无符号数有符号数
1000 1000 136 -120
+1111 0111 +247 +(-9)
10111 1111 383 -129
结果127 CF=1 OF=1
上面四种情况说明,
CF标志可用来表示无符号数的溢出,
OF标志可用来表示有符号数的溢出。
有符号数的溢出是一种出错状态,在运算过程中应当避免。
5
所有的算术运算指令,都会影响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。
6
共有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个状态标志)都有影响。

7
MOV AX,7896H;AX=7896H,即 AH=78H,AL=96H
ADD AL,AH;AL=0EH,AH=78H,即AX=780EH
;CF=1,ZF=0,SF=0,OF=0,AF=0,PF=0
ADD AH,AL;AH=86H,AL=0EH,即AX=860EH
;CF=0,ZF=0,SF=1,OF=1,AF=1,PF=0
ADD AL,0F2H;AL=00H,AH=86H,即AX=8600H
;CF=1,ZF=1,SF=0,OF=0,AF=1,PF=1
ADD AX,1234H;AX=9834H, 即AH=98H,AL=34H
;CF=0,ZF=0,SF=1,OF=0,AF=0,PF=0
8
(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)
9
例:有两个4字节的无符号数相加:
2C 56 F8 AC + 30 9E 47 BE = ?
设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。
因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。
ADC指令主要用于多字节加法运算中
10

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

非法内容举报中心
文档信息
  • 页数50
  • 收藏数0 收藏
  • 顶次数0
  • 上传人sxlw2017
  • 文件大小1.68 MB
  • 时间2018-03-26