#visual-studio #assembly #x86 #masm #subroutine
#visual-studio #сборка #x86 #masm #подпрограмма
Вопрос:
Я пытаюсь отладить свою программу, чтобы я мог справиться с проблемой HW. Проблема с HW не имеет отношения к проблеме, поскольку я тестировал ее с помощью 2 отдельных процедур.
По сути, когда я пытаюсь отлаживать, я могу установить точку останова для первой процедуры, и она будет работать нормально.
Точка останова во второй процедуре будет через ошибку.
Код компилируется просто отлично.
Код отлично работает только с одной процедурой, и я протестировал базовые процедуры.
INCLUDE Irvine32.inc
.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
.data
myString BYTE "Hello World",0dh,0ah
.code
main proc
;------DigitValue2ASCII-----
DigitValue2ASCII proc
mov eax, 0000h
mov edx, 0ch
mov al, 00h
cmp dl, 0ah
jae letter
cmp dl, 0ah
jb number
letter: add dl, 37h
jmp final
number: add dl, 30h
final: mov al, dl
call writechar
mov eax, 0000h
mov edx, 09h
mov al, 00h
cmp dl, 0ah
jae letter1
cmp dl, 0ah
jb number1
letter1: add dl, 37h
jmp final1
number1: add dl, 30h
final1: mov al, dl
call writechar
ret
DigitValue2ASCII endp
WriteHexByte proc
mov eax, 00h
ret
WriteHexByte endp
call DigitValue2ASCII
invoke ExitProcess,0
main endp
end main
Ошибка
'Project.exe' (Win32): Loaded 'C:WindowsSysWOW64ucrtbase.dll'. Symbols loaded.
'Project.exe' (Win32): Loaded 'C:WindowsSysWOW64imm32.dll'. Symbols loaded.
The thread 0x2cd0 has exited with code 0 (0x0).
The thread 0x4f7c has exited with code 0 (0x0).
The thread 0x13a4 has exited with code 0 (0x0).
The program '[18384] Project.exe' has exited with code 57 (0x39).```
Комментарии:
1.
myString
отсутствует,0
завершающий байт 0, который является строкой C неявной длины. (помимо проблемы, которую вы обнаружили при размещении других ваших функций внутриmain
…)
Ответ №1:
Мне пришлось переместить процедуры ниже main endp
, а не между main proc
ними и main endp