1
我创建的召开基本信息,以及一些字节字符串..例如,一个结构:汇编语言86:胶印间接操作的一个结构
EXAMPLESTRUCT STRUCT
somePrompt BYTE 20 DUP (0)
;other fields
EXAMPLESTRUCT ENDS
我的意图是建立一个结构数组有关该特定结构的消息,线沿线的初始化:
ex1 EXAMPLESTRUCT <"Enter first">
ex2 EXAMPLESTRUCT <"Enter second">
直接引用该结构域的地址(MOV EDX,OFFSET ex1.somePrompt)工作得很好,但使用间接寻址时,我一直得到的偏移量错误:
mov esi,OFFSET ex1
mov edx,OFFSET (EXAMPLESTRUCT PTR [esi]).somePrompt ;Error here
那么,是我的代码错了,还是这只是由于某种原因非法使用OFFSET?
唯一的解决办法,我发现是使结构包含指针,然后初始化它们在已经取得的消息指向:
WORKAROUND STRUCT
somePTR DWORD ?
;...
WORKAROUND ENDS
.data
msg BYTE "Hello World",0
struct1 WORKAROUND <OFFSET msg>
,然后沿显示的
mov esi,OFFSET struct1
mod edx,(WORKAROUND PTR [esi]).somePTR
行的消息
任何其他解决方案/解决方法,或者我应该坚持指针?
非常有用的指令,非常感谢,做了伎俩。 – user994121