如何修复“语法错误:”和“未定义符号”

时间:2019-10-03 04:39:21

标签: assembly masm

我正在做一个分配,需要在MASM中声明符号常量以及程序中的某些其他函数。我编写了整个程序,并认为一切都做得很好,但是对于符号常量声明,我仍然遇到语法错误。我应该声明符号常量A = 5120,B = 260,C = 170和D = 2200。在代码指令下,使用mov指令,将A,B,C和D的值分别移动到EAX,EBX,ECX和EDX。但是,它总是说'C'之前的逗号存在语法错误,'C'是语法错误,而我的所有其他符号常量均未定义。

我将'C'更改为'E'并且它起作用了,但是我觉得更改字母并不是这里的问题。

 .data
 mystring BYTE 20 DUP('a')
 val1 SDWORD 2147483647
 sum DWORD 0
 firstName BYTE "Akash", "Akash", "Akash", "Akash", "Akash"
 firstNameSize = ($ - firstName)
 A = 5120
 B = 260
 C = 170
 D = 2200

 .code
 main proc
 mov eax, A             
 mov ebx, B
 mov ecx, C
 mov edx, D             
 sub ebx, ecx
 add eax, ebx
 sub eax, edx
 mov sum, eax
 invoke ExitProcess,0

我希望输出的结果是不会出现构建错误,寄存器将包含正确的值,并对数字进行数学运算。

2 个答案:

答案 0 :(得分:2)

C是MASM的名称,所以您不能将其用作变量名称。 Here's我可以找到的所有保留术语的列表。

答案 1 :(得分:0)

我认为undefinied symbols问题是:

A = 5120
B = 260
C = 170
D = 2200

您应该首先定义此符号