我是汇编语言的新宠。当我学习编写结构时,发生了奇怪的事情。
这是我定义的结构
User struct
name byte 20 dup(0)
password byte 10 dup(0)
more byte "bbbbbbbbbbbbbbbbbbbbbbbbbbbb"
User ends
这就是我声明变量的方式
user1 User <"chi","fan">
但是当我在Visual Studio 2019中检查变量user1时,我看不到结构名称的第一个成员
我的data.asm完整代码
Employee struct
IdNum byte "000000000" ; 9
LastName byte 30 DUP(0) ; 30
ALIGN word ;
Years word 0 ; 2
ALIGN dword ;
SalaryHistory dword 0,0,0,0 ; 16
Employee ends
Employee2 struct
IdNum byte "000000000" ; 9
LastName byte 30 DUP(0) ; 30
ALIGN word ;
Years word 0 ; 2
ALIGN dword ;
SalaryHistory dword 0,0,0,0 ; 16
Employee2 ends
User struct
name byte 20 dup(0)
password byte 10 dup(0)
more byte "bbbbbbbbbbbbbbbbbbbbbbbbbbbb"
User ends
user1 User <"chi","fan">
worker4 Employee <"888","555">
worker2 Employee2 <"aaa","bbb">
我在main.asm中的完整代码
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
include data.asm
.code
main PROC
mov worker4.SalaryHistory, 1000H ;
;
invoke ExitProcess,0
main ENDP
END main
环境:Windows,Visual Studio 2019
NAME
是MASM中的reserved word。 MASM在User
结构中使用它作为成员名称似乎没有问题,但是Visual Studio调试器似乎对此感到困惑。
修复:
name
成员重命名为uname
。使用NOKEYWORD
选项告诉MASM您想覆盖NOKEYWORD
作为保留字。将此添加到name
(或data.asm
)的顶部
OPTION NOKEYWORD:
这告诉MASM不要将main.asm
视为保留字。