■DST是16位操作数时,SRC必须8位操作数, SRC作为DST的低8位,DST的高8位设为全0或 全1,与SRC的最高位相同。 ■DST是32位操作数时,SRC可以8位或16位 操作数。 SRC作为DST的低8位或低16位,DST的高24位 或高16位为SRC的最高位
◼ DST是16位操作数时,SRC必须8位操作数。 ◼ SRC作为DST的低8位,DST的高8位设为全0或 全1,与SRC的最高位相同。 ◼ DST是32位操作数时,SRC可以8位或16位 操作数。 ◼ SRC作为DST的低8位或低16位,DST的高24位 或高16位为SRC的最高位
4.1.2数据交换指令 ■1.XCHG指令 格式: XCHG OPRDI,OPRD2 功能:将OPRD1和OPRD2中的内容相互交换 两个操作数中有一个是通用寄存器,另一个 可以是寄存器或内存操作数; ■两个操作数中不能有立即数,也不能同时为 内存操作数
4.1.2 数据交换指令 ◼ 1.XCHG指令 格式:XCHG OPRD1,OPRD2 功能:将OPRD1和OPRD2中的内容相互交换 ◼ 两个操作数中有一个是通用寄存器,另一个 可以是寄存器或内存操作数; ◼ 两个操作数中不能有立即数,也不能同时为 内存操作数
举例: MOV AX. 0382H AH=03H. AL=82H XCHG AH. AL ;交换后,AH=82H,AL=03H MOV EAX ;EAX=0000003H mov dvar, O dvar=oo000000h XchG dvar, EAX ;交换后,EAⅩ=0000000J,dVar=000000
举例: MOV AX, 0382H ; AH=03H, AL=82H XCHG AH, AL ; 交换后, AH=82H, AL=03H MOV EAX, 3 ; EAX=00000003H MOV dVar, 0 ; dVar=00000000H XCHG dVar, EAX ; 交换后, EAX=00000000H,dVar=00000003H
■2. BSWAP指令 格式: BSWAP OPRD 功能:OPRD必须是32位寄存器,将OPRD中 的最高1字节和最低1字节互换;中间的2 字节互换。 举例: MOV EAX,7F860382H ;EAX=7F860382H BSWAP EAX ;互换后,EAⅩ=8203867FH
◼ 2.BSWAP指令 格式:BSWAP OPRD 功能:OPRD必须是32位寄存器,将OPRD中 的最高1字节和最低1字节互换;中间的2 字节互换 。 举例:MOV EAX, 7F860382H ; EAX=7F860382H BSWAP EAX ; 互换后,EAX=8203867FH
4.1.3取地址指令 ■1.LEA指令 格式: LEA DST,SRC 功能:把SRC的有效地址传送给DST SRC必须是一个内存操作数; DST必须是一个寄存器 举例将dvar的有效地址0040400AH送给EAX。 LEA EAX DVAR
4.1.3 取地址指令 ◼ 1.LEA指令 格式:LEA DST,SRC 功能:把SRC的有效地址传送给DST ◼ SRC必须是一个内存操作数; ◼ DST必须是一个寄存器 举例将dVar的有效地址0040400AH送给EAX。 LEA EAX, DVAR