LEA的源操作数(第二个操作数)可以是任意的内存寻址方式,举几个例子:
LEA si,[4]
LEA si,[bx]
LEA si,[bx+4]
LEA si,[bx+di]
LEA si,[bx+di+4]
LEA si,BUFFER
LEA si,[bx]BUFFER
LEA si,[bx+di]BUFFER
都是可以的
而offset后面只能接一个标号
另外由于LEA有对应的指令,所以会编译成对应的指令
而offset是个伪指令,最后连同offset和后面的标号只会编译成一个表示偏移地址的常量,比如如果这样定义的话:
data segment
BUFFER DB 100
data ends
MOV SI,OFFSET BUFFER最后会编译成MOV SI,[0]
所以结论是:
在地址比较复杂的时候最好选用LEA,因为可以节省一些指令,如果只是一个标号的话,看你心情