注:此文章是我回答CSDN论坛的一个问题整理后的结果。
如下程序(可正常编译、运行):
.MODEL SMALL
.DATA
BUF DB '0123456789'
.CODE
MAIN:
MOV AX,@DATA
MOV DS,AX
LEA DX,BUF ;问题在这里
MOV AH,4CH
INT 21H
END MAIN
当运用debug查看结果时,其中的 LEA DX,BUF 被转换为 LEA DX,[000E],为什么是 [000E]呢?
当把 LEA DX,BUF 改为 MOV DX,OFFSET BUF 时,debug程序中的相应语句变成了 MOV DX,000C ,
而当同时写上 LEA DX,BUF 和 MOV DX,OFFSET BUF 时,debug中的语句变成了 LEA DX,[0000] 和 MOV DX,0000 。
dataare segment
BUF DB '01234567891'
dataare ends
code segment
assume cs:code,ds:dataare
MAIN PROC FAR
start:
MOV AX,dataare
MOV DS,AX
LEA DX,BUF ;问题在这里
MOV AH,4CH
INT 21H
MAIN