我对将 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