当我在MASM中使用PTR运算符和间接操作数时?

时间:2017-06-15 07:03:17

标签: assembly masm

我对使用带有mov指令的PTR运算符感到困惑

在我的书中,

.data
byteVal BYTE 10h
.code
mov esi, OFFSET, byteVal
mov al, [esi]

此代码有效

但是

Employee STRUCT
   IDNum BYTE "000000000"
   Years WORD 0
Employee ENDS

.data
worker Employee <>
.code
mov esi, OFFSET worker
mov ax, [esi].Years

此代码无效

 mov ax, (Employee PTR [esi]).Years

此代码有效

我想知道何时使用带有mov指令的PTR运算符和间接操作数

1 个答案:

答案 0 :(得分:0)

你需要准确告诉汇编器struct esi指向的是什么......如果有多个结构具有相同名称的元素(在本例中为.Years)会怎样?

你可以通过强制使用ASSUME来完成类似的事情:

    assume esi:ptr Employee

然后当esi不再持有有效的员工ptr时:

    assume esi:nothing