- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据传送指令总结 二、算术运算类指令 算术运算类指令用来执行二进制的算术运算:加减乘除。 这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志 方法:通过理解指令含义、多读程序掌握指令。 二、算术运算指令(四类,20条) 运算数据格式和对标志位影响 2)运算数据格式和对标志位影响 3)加法和减法指令 加法指令:ADD, ADC和INC 减法指令:SUB, SBB, DEC, NEG和CMP 他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位 操作数组合: 运算指令助记符 reg, imm/reg/mem 运算指令助记符 mem, imm/reg 加和减指令 ADD dest,src ;加法:dest←dest+src ;ADD指令使目的操作数加上源操作数,和的结果送到目的操作数 SUB dest,src ;减法:dest←dest-src ;SUB指令使目的操作数减去源操作数,差的结果送到目的操作数 (1)加法指令 ① 加法指令ADD (ADDition)。指令格式及操作: ADD dst,src ;(dst)←(dst)+(src) ② 带进位加法指令ADC (ADdition with Carry)。 ADC dst,src ;(dst)←(dst)+(src)+(CF) 例、4字节的加法 MOV AX,[SI] ADD [DI],AX MOV AX,[SI+2] ADC [DI+2],AX (2) 减法指令。减法指令包括不带借位减法指令、带借位减法指令、减1指令、求补指令和比较指令。 SUB 目的,源;不带借位的减法 SBB 目的,源;带借位的减法 DEC 目的 ;减1指令 NEG 目的 ;求补指令 CMP 目的,源 ;结果不送回,只影响状态位 AAS ;减法的ASCII调整指令 DAS ;减法的十进制调整指令 例、加减运算对状态位影响 mov ax,7348h ;AX=7348H add al,27h ;AL=48H+27H=6FH,AX=736FH ;OF=0,SF=0,ZF=0,PF=1,CF=0 add ax,3fffh ;AX=736FH+3FFFH=B36EH ;OF=1,SF=1,ZF=0,PF=0,CF=0 sub ah,0f0h ;AH=B3H-F0H=C3H,AX=C36EH ;OF=0,SF=1,ZF=0,PF=1,CF=1 mov word ptr[200h],0ef00h ;[200H]=EF00H,标志不变 sub [200h],ax ;[200H]=EF00H-C36EH=2B92H ;OF=0,SF=0,ZF=0,PF=0,CF=0 sub si,si ;SI=0 ;OF=0,SF=0,ZF=1,PF=1,CF=0 (3) 乘法指令 (4) 除法指令 DIV 源 :无符号数除法 8位除法:AX/源的商在AL中,AX/源的余数在AH中 16位除法:(DX,AX)/源的商在AX中,余数在DX IDIV 源 (Integer Division) :有符号数除法 AAD(ASCII Adjust for Division) :调整非压缩十进制数,调整被除数, 调整算法:AL=AH*10+AL AH=0 8086/8088CPU执行除法时规定:除数只能是被出数的一半字长。当被除数为16位时,除数应为8为;当被除数为32位时,除数应为16为 AAA指令的操作为: 如果 (AL) ∧0FH9 或 (AF)=1 则 (AL) ←(AL)+06H (AH) ←(AH)+1 (AF) ← 1 (CF) ←(AF) (AL) ←((AL) ∧ 0FH) 否则 (AL) ←((AL) ∧ 0FH) DAA指令的操作为: 如果 (AL) ∧0FH9, (AF)=1 则 (AL) ←(AL)+06H (AF) ← 1 如果 (AL) 9FH 或 (CF)=1 则 (AL) ←(AL)+60H (CF) ← 1 [例]要求计算两个十进制数之和,7+8=?。可用以下指令实现: MOV AX, 0007H ;(AL)=07H,(AH)=00H MOV BL, 08H ;(BL)=08H ADD AL,
文档评论(0)