ITEEDU

3、交换指令XCHG(Exchange Instruction)

交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。其指令格式如下:

 XCHG   Reg/Mem, Reg/Mem

该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。

XCHG指令的功能如图5.3所示。


图5.3 XCHG指令的执行功能示意图

例5.2 已知:AX=5678H,BX=1234H,指令XCHG  AX, BX执行后,AX和BX的值是什么?

解:这是两个寄存器内容进行交换,指令执行后,有:(AX)=1234H,(BX)=5678H。

4、取有效地址指令LEA(Load Effective Address)

指令LEA是把一个内存变量的有效地址送给指定的寄存器。其指令格式如下:

 LEA Reg, Mem

该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。其功能如右图所示。

例如:

图5.4 LEA指令的功能示意图
…
  BUFFER? DB  100 DUP(?)
  …
  LEA BX, BUFFER     ;把字节变量BUFFER在数据段内的偏移量送给BX
…

问题:指令“LEA  BX BUFFER”和“MOV  BX, OFFSET BUFFER”的执行效果是一样的吗?指令“LEA BX,[BX+200]”和“MOV BX,OFFSET [BX+200]”二者都正确吗?