- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4章80868088指令系统3(算术运算指令)(建筑君君)
4.3.2 算术运算指令;表4 - 2 算术运算类指令表;两个8位数相加时有4种情况:;② 无符号数溢出
无符号数 有符号数
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
注:1.源和目的操作数不能同时为存储器操作数
2.不能把段寄存器作为操作数
例: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;(2) 带进位位的加法指令ADC;例:有两个4字节的无符号数相加:
2C 56 F8 AC + 30 9E 47 BE = ?
设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区,如下页图所示。
因CPU只能进行8位或16位的加法运算,为此可将加法分4次进行。;56H;程序段如下:
MOV CX,4 ;置循环次数
MOV SI,0 ;置SI初值为零
CLC ;清进位标志CF
LL: MOV AL,BUFFER2[SI]
ADC BUFFER1[SI],AL ;带进位加
INC SI ;(SI)+1
DEC CX ;(CX)-1
JNZ LL ;若(CX)?0,则转LL
;ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:;格式:INC reg/mem
功能:类似于C语言中的++操作:对指定的操作数加1
例: INC AL
INC SI
INC BYTE PTR[BX+4]
注意:本指令不
文档评论(0)