资源描述:
《第3章 8086的指令系统—3.2.2算术运算指令 - 副本.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章3.2.2算术运算类指令算术运算类指令用来执行二进制的算术运算:加减乘除。有些指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志重点掌握加法指令:ADD、ADC、INC减法指令:SUB、SBB、DEC、CMP、NEG加法和减法指令加法指令:ADD,ADC和INC减法指令:SUB,SBB,DEC,NEG和CMP他们分别执行字或字节的加法和减法运算,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位操作数组合:运算指令助记符reg,imm/reg/mem运算指令助记符mem,imm/reg1.加和减指令ADDdest,s
2、rc;加法:dest←dest+src;ADD指令使目的操作数加上源操作数,和的结果送到目的操作数SUBdest,src;减法:dest←dest-src;SUB指令使目的操作数减去源操作数,差的结果送到目的操作数例题1加法MOVAX,7348H;AX=7348HADDAL,27H;AL=48H+27H=6FH,AX=736FH;OF=0,SF=0,ZF=0,PF=1,CF=0ADDAX,3FFFH;AX=736FH+3FFFH=B36EH;OF=1,SF=1,ZF=0,PF=0,CF=0例题2减法SUBAH,0F0H;AH=B3H-F0H=C3H,AX=C36EH;OF=0,SF
3、=1,ZF=0,PF=1,CF=1MOVWORDPTR[200H],0EF00H;[200H]=EF00H,标志不变SUB[200H],AX;[200H]=EF00H-C36EH=2B92H;OF=0,SF=0,ZF=0,PF=0,CF=0SUBSI,SI;SI=0;OF=0,SF=0,ZF=1,PF=1,CF=02.带进位加和减指令ADCdest,src;加法:dest←dest+src+CF;ADC指令除完成ADD加法运算外,还要加上进位CF,结果送到目的操作数SBBdest,src;减法:dest←dest-src-CF;SBB指令除完成SUB减法运算外,还要减去借位CF,结
4、果送到目的操作数例3无符号双字加法和减法MOVAX,7856H;AX=7856HMOVDX,8234H;DX=8234HADDAX,8998H;AX=01EEH,CF=1ADCDX,1234H;DX=9469H,CF=0SUBAX,4491H;AX=BD5DH,CF=1SBBDX,8000H;DX=1468H,CF=0DX.AX=82347856H+12348998H-80004491H=1468BD5DH3.比较指令CMP(compare)CMPdest,src;做减法运算:dest-src;CMP指令将目的操作数减去源操作数,但差值不回送目的操作数,但影响标志位比较指令通过减法
5、运算影响状态标志,用于比较两个操作数的大小关系CMPAX,BXCMPAL,1004.增量和减量指令INCreg/mem;增量(加1):reg/mem←reg/mem+1DECreg/mem;减量(减1):reg/mem←reg/mem-1INC指令和DEC指令是单操作数指令与加法和减法指令实现的加1和减1不同的是:INC和DEC不影响CF标志INCSI;SI←SI+1DECbytePTR[SI];[SI]←[SI]-15.求补指令NEG(NEGtive)NEGreg/mem;reg/mem←0-reg/memNEG指令对操作数执行求补运算,即用零减去操作数,然后结果返回操作数求补运
6、算也可以表达成:将操作数按位取反后加1NEG指令对标志的影响与用零作减法的SUB指令一样NEG指令也是一个单操作数指令例题4求补运算MOVAX,0FF64HNEGAL;AL=0-64H=9CH,AX=FF9CH;OF=SF=1,ZF=0,PF=1,CF=1SUBAL,9DH;AL=AL-9DH=9CH-9DH=FFH,AX=FFFFH;OF=0,SF=1,ZF=0,PF=1,CF=1NEGAX;AX=0-FFFFH=0001H;OF=0,SF=0,ZF=0,PF=0,CF=1DECAL;AL=01H-1=0,AX=0000H;OF=0,SF=0,ZF=1,PF=1,CF=1NEGA
7、X;AX=0-0=0;OF=0,SF=0,ZF=1,PF=1,CF=03.4.2符号扩展指令符号扩展是指用一个操作数的符号位(最高位)形成另一个操作数,后一个操作数的高位是全0(正数)或全1(负数)符号扩展虽然使数据位数加长,但数据大小并没有改变,扩展的高部分仅是低部分的符号扩展符号扩展指令有两条,用来将字节转换为字,字转换为双字CBW;AL符号扩展成AXCWD;AX符号扩展成DX例题5符号扩展MOVAL,64H;AL=64H(机器数),表示10进制数100(真值)C