Как исправить «синтаксическую ошибку:» и «неопределенный символ» - PullRequest
0 голосов
/ 03 октября 2019

Я выполняю задание, в котором мне нужно объявить символьные константы в MASM вместе с некоторыми другими функциями в программе. Я написал всю программу и думаю, что все сделал правильно, но у меня все еще есть синтаксическая ошибка для объявлений символических констант. Я должен объявить символические константы A = 5120, B = 260, C = 170 и D = 2200. В соответствии с директивой code с использованием инструкции mov переместите значения A, B, C и D в EAX, EBX, ECX и EDX соответственно. Однако он продолжает говорить, что есть синтаксическая ошибка для запятой перед 'C', что 'C' является синтаксической ошибкой, а все остальные мои символические константы не определены.

Я изменил «С» на «Е», и это сработало, но я чувствую, что смена букв здесь не проблема.

 .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 ]

2 голосов
/ 03 октября 2019

C - это имя операции MASM, поэтому вы не можете использовать ее в качестве имени переменной. Вот список всех зарезервированных терминов, которые я смог найти.

0 голосов
/ 03 октября 2019

Я думаю, что проблема undefinied symbols такова:

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

Вы должны сначала определить эти символы

...