【发布时间】:2016-02-01 14:25:39
【问题描述】:
在X86汇编语言中,为了将数据段的起始地址移动到数据段寄存器,必须先将它移动到AX,然后再将AX移动到DS。像这样:
DTSEG SEGMENT
...
DTSEG ENDS
CDSEG SEGMENT
MAIN PROC FAR
MOV AX,DTSEG
MOV DS,AX
CDSEG ENDS
END MAIN
我想知道,我们是否在第一行使用直接寻址模式?现在考虑,我们像这样在数据段中定义一个字符串字节
DTSEG SEGMENT
DATA DB 'HELLO'
DTSEG ENDS
这一次,我们必须使用MOV AX,OFFSET DATA 或LEA AX,DATA 加载有效地址。两者都是有效的。现在,第二个问题是我们还使用直接寻址模式吗?
那么,第三个问题为什么不加载数据段的有效地址呢?像这样:
MOV AX,OFFSET DTSEG ; ???
LEA AX,DTSEG ; ???
有什么理由吗?
【问题讨论】:
标签: assembly