我对使用带有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运算符和间接操作数
答案 0 :(得分:0)
你需要准确告诉汇编器struct esi指向的是什么......如果有多个结构具有相同名称的元素(在本例中为.Years)会怎样?
你可以通过强制使用ASSUME来完成类似的事情:
assume esi:ptr Employee
然后当esi不再持有有效的员工ptr时:
assume esi:nothing