通用寄存器之间,通用寄存器和存储器之间交换数据。例317XCHGAX,BX;通用寄存器之间交换数据16位XCHGESI,EDI;通用寄存器之间交换数据32位XCHGBX,SI;通用寄存器和存储器之间交换数据16位XCHGAL,BX;通用寄存器和存储器之间交换数据8位使用该指令应注意以下问题:操作数OPR1和OPR2不允许同为存储器操作数;操作数数据类型必须一致;交换指令不影响标志位。如要实现存储器操作数交换,可用如下指令实现:MOVAL,BLOCK1XCHGAL,BLOCK2
fMOVBLOCK1,AL2格式:BSWAPREG功能:将32位通用寄存器中,第1个字节和第4个字节交换,第2个字节和第3个字节交换。例318MOVEAX,44332211HBSWAPEAX;EAX11223344H使用该指令应注意以下问题:操作数为32位通用寄存器;交换指令不影响标志位。二、堆栈操作指令1压栈指令1格式:PUSHSRC功能:将源操作数压下堆栈,源操作数允许为16位或32位通用寄存器、存储器和立即数以及16位段寄存器。当操作数数据类型为字类型,压栈操作使SP值减2;当数据类型为双字类型,压栈操作使SP值减4。例319PUSHAX;通用寄存器操作数入栈16位PUSHEBX;通用寄存器操作数入栈32位PUSHSI;存储器操作数入栈16位PUSHDWORDPTRDI;存储器操作数入栈32位PUSHW0A123H;立即数入栈16位PUSHD20H;立即数入栈32位2格式:PUSHAPUSHAD功能:PUSHA将16位通用寄存器压入堆栈,压栈顺序为AX,CX,DX,BX,SP,BP,SI,DI。PUSHAD将32位通用寄存器压入堆栈,压栈顺序为EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI。2出栈指令1格式:POPDEST功能:从栈顶弹出操作数送入目的操作数。目的操作数允许为16或32位通用寄存器、存储器和16位段寄存器。当操作数数据类型为字类型,出栈操作使SP加2;当操作数数据类型为双字类型,出栈操作使SP加4。例320POPAX;操作数出栈送寄存器16位POPECX;操作数出栈送寄存器32位POPBX;操作数出栈送存储器16位POPDWORDPTRSI;操作数出栈送存储器32位2格式:POPAPOPAD功能:POPA从堆栈移出16字节数据,并且按顺序存入寄存器DI,SI,BP,SP,BX,DX,CX,AX中。POPAD从堆栈移出32字节数据,并且按顺序存入寄存器EDI,ESI,EBP,ESP,
fEBX,EDX,ECX,EAX中。使用堆栈操作指令应注意以下问题。1目的操作数不允许为CS以及立即数。2堆栈操作指令不影响标志位。三、地址传送指令1格式:LEAREG,MEM功能:将源操作数的有效地址传送到通用寄存器,操作数REG为16位或32位通用寄存器,源操作数为16位或32位存r