#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, а затем включить его в оба файла?