汇编OFFSET在一条指令中使用了两次,offset是什么?

问题描述

我正在一个Assembly项目中,其中出现了offset指令的某些奇怪属性。我写下了以下说明:

mov ax,offset offset variable

当我执行程序时,我预期会出现错误,但是程序运行时未显示任何错误,并且行mov ax,offset offset variable在调试工具中显示为mov ax,0784,这与指令相同出现mov ax,offset variable(0784是数据段中变量的偏移量)。一阵困惑之后,我执行了以下指令:mov ax,offset offset offset offset offset offset variable(是的,有点可笑),它具有相同的效果和相同的结果(ax值成为变量的偏移量)

我的问题是,为什么寄存器AX中存储的值是变量的偏移量(我可以确定总是偏移量=偏移量吗?),为什么这些行不产生任何错误?并且,如果 offset的偏移量的含义是什么,它的含义是什么? (这些示例中汇编程序遵循的含义)

谢谢。 如果相关,我正在使用程序集x86,TASM,DOSBox仿真器和Turbo调试器:)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)