汇编指令大全

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1MOVE数据传送指令MOV格式:MOVOPRD1,OPRD2功能:本指令将一个源操作数送到目的操作数中,即OPRD1--OPRD2.说明:1.OPRD1为目的操作数,可以是寄存器、存储器、累加器.OPRD2为源操作数,可以是寄存器、存储器、累加器和立即数.2.MOV指令以分为以下四种情况:1寄存器与寄存器之间的数据传送指令2立即数到通用寄存器数据传送指令3寄存器与存储器之间的数据传送指令4立即数到存储器的数据传送3.本指令不影响状态标志位2PUSH堆栈操作指令PUSH和POP格式:PUSHOPRDPOPOPRD功能:实现压入操作的指令是PUSH指令;实现弹出操作的指令是POP指令.说明:1.OPRD为16位(字)操作数,可以是寄存器或存储器操作数.2.PUSH的操作过程是:(SP)--(SP)-2,((sp))--OPRD即先修改堆栈指针SP(压入时为自动减2),然后,将指定的操作数送入新的栈顶位置.此处的((SP))--OPRD,也可以理解为:[(SS)*16+(SP)]--OPRD或[SS:SP]--OPRD3POPPOPPOPPOP堆栈操作指令PUSH和POP格式:PUSHOPRDPOPOPRD功能:实现压入操作的指令是PUSH指令;实现弹出操作的指令是POP指令.说明:1.OPRD为16位(字)操作数,可以是寄存器或存储器操作数.2.POP指令的操作过程是:POPOPRD:OPRD--((SP)),(SP)--(SP)+2它与压入操作相反,是先弹出栈顶的数顶,然后再修改指针SP的内容.3.示例:POPAXPOPDSPOPDATA1POPALFA[BX][DI]4.PUSH和POP指令对状态标志位没有影响.4XCHGXCHGXCHGXCHG数据交换指令XCHG格式:XCHGOPRD1,OPRD2其中的OPRD1为目的操作数,OPRD2为源操作数功能:将两个操作数相互交换位置,该指令把源操作数OPRD2与目的操数OPRD1交换.说明:1.OPRD1及OPRD2可为通用寄存器或存储器,但是两个存储器之间是不能用XCHG指令实现的.2.段寄存器内容不能用XCHG指令来交换.3.若要实现两个存储器操作数DATA1及DATA2的交换,可用以下指令实现:示例:PUSHDATA1PUSHDATA2POPDATA1POPDATA24.本指令不影响状态标志位.5XLATXLATXLATXLAT查表指令XLAT格式:XLATTABLE其中TABLE为一待查表格的首地址.功能:把待查表格的一个字节内容送到AL累加器中.说明:1.在执行该指令前,应将TABLE先送至BX寄存器中,然后将待查字节与在表格中距表首地址位移量送AL,即(AL)--((BX)+(AL)).2.本指令不影响状态标位,表格长度不超过256字节.6LAHFLAHFLAHFLAHF标志传送指令LAHF格式:LAHF功能:取FLAG标志寄存器低8位至AH寄存器.(AH)--(FLAG)7~0说明:该指令不影响FLAG的原来内容,AH只是复制了原FLAG的低8位内容.7SAHFSAHFSAHFSAHF标志传送指令SAHF格式:SAHF功能:将AH存至FLAG低8位说明:本指令将用AH的内容改写FLAG标志寄存器中的SF、ZF、AF、PF、和CF标志,从而改变原来的标志位.8PUSHFPUSHFPUSHFPUSHF标志传送指令PUSHF格式:PUSHF功能:本指令可以把标志寄存器的内容保存到堆栈中去9POPFPOPFPOPFPOPF标志传送指令POPF格式:POPF功能:本指令的功能与PUSHF相反,在子程序调用和中断服务程序中,往往用PUSHF指令保护FLAG的内容,用POPF指令将保护的FLAG内容恢复.说明:如果对堆栈中的原FLAG内容进行修改,如对TF等标志位进行修改,然后再弹回标志位寄存器FLAG.这是通过指令修改TF标志的唯一方法.10LEALEALEALEA有效地址传送指令LEA格式:LEAOPRD1,OPRD2功能:将源操作数给出的有效地址传送到指定的的寄存器中.说明:1.OPRD1为目的操作数,可为任意一个16位的通用寄存器.OPRD2为源操作数,可为变量名、标号或地址表达式.示例:LEABX,DATA1LEADX,BETA[BX+SI]LEABXBX,[BP],[DI]2.本指令对标志位无影响。11LDSLDSLDSLDS从存储器取出32位地址的指令LDS格式:LDSOPRD1,OPRD2功能:从存储器取出32位地址的指令.说明:OPRD1为任意一个16位的寄存器.OPRD2为32位的存储器地址.示例:LDSSI,ABCDLDSBX,FAST[SI]LDSDI,[BX]注意:上面LDSDI,[BX]指令的功能是把BX所指的32位地址指针的段地址送入DS,偏移地址送入DI.12LESLESLESLES从存储器取出32位地址的指令LES格式:LESOPRD1,OPRD2功能:从存储器取出32位地址的指令.说明:OPRD1为任意一个16位的寄存器.OPRD2为32位的存储器地址.示例:LESSI,ABCDLESBX,FAST[SI]LESDI,[BX]注意:上面LESDI,[BX]指令的功能是把BX所指的32位地址指针的段地址送入ES,偏移地址送入DI.13ADDADDADDADD加法指令ADD(Addition)格式:ADDOPRD1,OPRD2功能:两数相加说明:1.OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2.OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3.加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.加法指令适用于无符号数或有符号数的加法运算.14ADCADCADCADC带进位加法指令ADC(AdditionCarry)格式:ADCOPRD1,OPRD2功能:OPRD1--OPRD1+OPRD2+CF说明:1.OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2.OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3.加法指令运算的结果对CF、SF、OF、PF、ZF、AF都会有影响.以上标志也称为结果标志.4.该指令对标志位的影响同ADD指令.15INCINCINCINC加1指令INC(INCrementby1)格式:INCOPRD功能:OPRD--OPRD+1说明:1.OPRD为寄存器或存储器操作数.2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.3.示例:INCSI;(SI)--(SI)+1INCWORDPTR[BX]INCBYTEPTR[BX+DI]INCCL;(CL)--(CL)+1注意:上述第二,三两条指令,是对存储字及存储字节的内容加1以替代原来的内容.16AAAAAAAAAAAA未组合的十进制加法调整指令AAA(ASCIIAdgustforAddition)格式:AAA功能:对两个组合的十进制数相加运算(存在AL中)的结果进行调整,产生一个未组合的十进制数放在AX中.说明:1.组合的十进制数和未组合的十进制数:在计算中,十进制数可用四位二进制数编码,称为BCD码.当一个节(8位)中存放一位BCD码,且放在字节的低4位,高4位为时称为未组合的BCD码.2.AAA的调整操作若(AL)and0FH9或AF=1,则调整如下:(AL)--(AL)+6,(AH)--(AH)+1,AF=1,CF--AF,(AL)--(AL)and0FH17DAADAADAADAA组合的十进制加法调整指令DAA(DecimalAdjustforAddition)格式:DAA功能:对AL中的两个组合进制数相加的结果进行调整,调整结果仍放在AL中,进位标志放在CF中.说明:1.调整操作如下(1)若(AL)and0FH9或AF=1,则(AL)--(AL)+6,AF--1,对低四位的调整.(2)若(AL)and0F0H90H或CF=1,则(AL)--(AL)+60H,CF--1.2.示例:(AL)=18H,(BL)=06HADDAL,BL;(AL)--(AL)+(BL);(AL)=1EHDAA;(AL)299SUBSUBSUBSUB减法指令SUB(SUBtract)格式:SUBOPRD1,OPRD2功能:两个操作数的相减,即从OPRD1中减去OPRD2,其结果放在OPDR1中.说明:示例SUBDX,CXSUB[BX+25],AXSUBDI,ALFA[SI]SUBCL,20SUBDATA1[DI][BX],20A5H300SBBSBBSBBSBB带借位减去指令SBB(SuBtractionwithBorrow)格式:SBBOPRD1,OPRD2功能:是进行两个操作数的相减再减去CF进位标志位,即从OPRD1--OPRD1-OPRD2-CF,其结果放在OPDR1中.说明:示例SBBDX,CXSBBAX,DATA1SBBBX,2000HSBBALFA[BX+SI],SISBBBETAP[DI,030AH301DECDECDECDEC减一指令DEC(Decrementby1)格式:DECOPRD功能:OPRD--OPRD-1说明:1.OPRD为寄存器或存储器操作数.2.这条指令执行结果影响AF、OF、PF、SF、ZF标志位,但不影响CF标志位.3.示例DECAXDECCLDECWORDPTR[DI]DECALFA[DI+BX]302NEGNEGNEGNEG取补指令NEG(NEGate)格式:NEGOPRD功能:对操作数OPRD进行取补操作,然后将结果送回OPRD.取补操作也叫作求补操作,就是求一个数的相反数的补码.说明:1.OPRD为任意通用寄存器或存储器操作数.2.示例:(AL)=44H,取补后,(AL)=0BCH(-44H).3.本指令影响标志位CF、OF、SF、PF、ZF及AF.303CMPCMPCMPCMP比效指令CMP(CoMPare)格式:CMPOPRD1,OPRD2功能:对两数进行相减,进行比较.说明:1.OPRD1为任意通用寄存器或存储器操作数.OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.2.对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.3.在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.304AASAASAASAAS未组合十进制减法调整指令AAS(ASCIIAdjustforSubtraction)格式:AAS功能:对两个未组合十进制数相减后存于AL中的结果进行调整,调整后产生一个未组合的十进制数数且仍存于AL中.说明:1.本指令影响标志位CF及AF.2.调整操作若(AL)and0FH9或AF=1则(AL)--(AL)-6,(AH)--(AH)-1,CF--AF,(AL)--(AL)and0FH,否则(AL)--(AL)and0FH305DASDASDASDAS组合十进制减法调整指令DAS(DecimalAdjustforSubtraction)格式:DAS功能:对两个组合十进制数相减后存于AL中的结果进行调整,调整后产生一个组合的十进制数且仍存于AL中.说明:调整操作若(AL)and0FH9或AF=1,则(AL)--(AL)-6,AF=1若(AL)and0F0H90H或CF=1,则(AL)--(AL)-60,CF=1306MULMULMULMUL无符

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功