文档介绍:数据传送指令通用传送指令MOVMOVSXMOVZXLEA指针传送指令LDSLESLFSLOSLSS标志寄存器传送指令LAHFSAFH交换指令XCHG字节交换指令 BSWAP查表指令 XLAT堆栈操作指令进栈指令 PUSH出栈指令 POP16位标志寄存器栈操作进栈指令PUSHF出栈指令POPF32位标志寄存器栈操作进栈指令PUSHFD出栈指令POPFD16位通用寄存器栈操作进栈指令PUSHA出栈指令POPA32位通用寄存器栈操作进栈指令PUSHAD出栈指令POPAD通用传送指令指令名格式功能描述影响标志位注意事项MOVMOVDST,SRC(DST)←(SRC)将一个字节或一个字操作数从源地址传送至目的地址。MOV指令不改变源操作数,也不影响标志位1)源和目的操作数不能同时为存储器操作数例:MOV[DI],[SI];是非法指令2)立即数不能作为目的操作数例:MOV1234H,AX;是非法指令3)不能将立即数直接传送到段寄存器例:MOVDS,1000H;是非法指令4)源和目的操作数的数据位应等长,即同为字节、字或双字。必须用PTR运算符说明目的操作数的属性(可以是BYTE、WORD、DWORD)。MOVBYTEPTR[BX],12H5)以CS为目标的一切转送都是非法的。MOVSXMOVSXDST,SRCMovewithSignExtend(386+)将SRC的符号位向高位扩展,使其与目标操作数字长相同,再送到DST,而SRC保持不变。MOV指令不改变源操作数,也不影响标志位(1)DST为REG16或REG32,SRC为小于等于DST的立即数或存储器操作数或寄存器操作数。(2)对于带符号数的补码,扩展前后的真值相等,只有补码的位数不同。例:MOVDL,-16;DL=0F0HMOVSXBX,DL;BX=0FFF0H,DL不变MOVZXMOVZXDST,SRCMovewithZeroExtend(386+)将SRC的高位用0补充,使其与目标操作数字长相同,再送到DST,而SRC保持不变。MOV指令不改变源操作数,也不影响标志位(1)DST为REG16或REG32,SRC为小于等于DST的立即数或存储器操作数或寄存器操作数。(2)对于无符号数的真值不变。例:MOVZXEAX,CXLEA有效地址送寄存器指令LEAREG,SRC;MOVDES,OFFSETSRCREG←(EAOFSRC)把源操作数的有效地址送到指定的寄存器。SRC为内存操作数。LEA等效于MOVOFFSET所以不影响标志位 LEA:LoadEffectiveAddressREG为16位或32位寄存器(除段寄存器)     指令名格式功能描述影响标志位注意事项指针传送指令LDSLESLSSLFSLOS操作码助记符REG,SRCLDS等英文含义:LoadtoDataSegReg其后两位字母表段寄存器,;不影响标志位若源操作数是32位内存操作数,,。LAHF:LoadtoAHwithFlagAH←(PSW的低位字节)不影响标志位PSW的低位字节包括SF符号标志ZF零标志AF半进位标志PF奇偶标志CF进位标志SAHF操作数为隐含的AH和标志寄存器。SAHF:SentAHtoFlag(PSW低位字节)←(AH)这不是废话吗! 交换指令XCHGXCHGOPR1,OPR2XCHG:exchange交换(OPR1)<=>(OPR2)不影响标志位。OPR1与OPR2须是等长操作数,OPR1,OPR2必须有一个是寄存器。(段寄存器不能作为XCHG的操作数)查表指令XLAT表头变量名AL←(DS:[BX+AL])不影响标志位使用方法:XLATAL←(DS:[EBX+AL])把一种码转换为另一种码1、建立表格,将表格的首地址预先存入BX或EBX。2、要转换的代码与表格首地址的偏移量存入AL。3、执行换码指令,(DS:[BX+AL])→AL示例:第一步:在数据段按字形0~F的顺序设置一张字形编码表。TABDB3FH,06H,5BH,4FH,NUMDB02H;第二步:在代码段设置如下指令:MOVDS,数据段段基址MOVBX,OFFSETTAB;(LEABX,TAB)MOVAL,NUMXLATTABBSWAPBSWAPREG32ByteSwap(486+)将32位REG的位31~位24与位7~位0交换,位23~位16与位15~位8交换。不影响标志位      堆栈操作指令指令名格式功能描述影响标志位注意事项进栈指令PUSHPUSHSRC执行时,首先调整堆栈指针,然后把源操作数压栈。不影响标志位内存操作数若