Пытаюсь вызвать процедуру сборки из другого файла сборки и получаю ошибку неопределенного символа

#assembly #x86 #masm

#сборка #x86 #masm

Вопрос:

Я пытаюсь вызвать несколько процедур, которые находятся в другом месте, и я не уверен, почему мои объявленные постоянные переменные в моем main.asm не идентифицируются при вызове в моем файле algorithm.asm. Вот фрагмент кода algorithm.asm:

  INCLUDE C:/Irvine/Irvine32.inc
 .data 
 .code 
 getUserData PROC
     push ebp
     mov ebp, esp
     jmp userPrompt

 error:
     mov edx, [ebp   8]  ;// Out of range prompt 
     call WriteString
     call CrLf
 userPrompt:
     mov eax, [ebp   12]
     mov eax, 0
     mov edx, [ebp   16] ;// Displays instructions for user
     call WriteString
     call ReadInt        ;// Gets user input

     cmp eax, MIN
     JL error
     cmp eax, MAX
     JG error

     mov ebx, [ebp   12]
     mov[ebx], eax

     pop ebp
     ret 12

 getUserData ENDP
 END
  

И для моего кода main.asm:

  INCLUDE C:/Irvine/Irvine32.inc
 INCLUDE algorithm.inc 

 .data  
 MIN = 16
 MAX = 256
  

Почему это не позволяет считывать мои константы в main.asm в algorithm.asm?
Я попытался скопировать и вставить свои константы в algorithm.asm’s .data, и хотя это работает, я хочу знать, как ссылаться, не выполняя этот метод, если это возможно.

Комментарии:

1. Как именно вы «объявляете» MIN и MAX в другом файле?

2. просто под .data как: MAX = 256, затем под этим MIN = 16 в основном файле.asm

3. Если они являются константами, они не будут находиться в разделе данных. Ассемблер будет использовать их для создания выходных данных, но в этом объектном файле не будет определено никаких значений MIN / MAX. Возможно, вы могли бы создать constants.inc, а затем включить его в оба файла?