当我在 MASM 中使用带有间接操作数的 PTR 运算符时



我对将 PTR 运算符与 mov 指令一起使用感到困惑

在我的书中,

.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 运算符时

你需要准确地告诉汇编程序 esi 指向什么结构......如果有多个结构具有同名元素(在本例中为 .年(?

您可以通过强制假设来完成类似的事情:

    assume esi:ptr Employee

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

    assume esi:nothing

最新更新