Hello World を 5 回出力する単純なアセンブリ プログラムを NASM で作成しようとしました。しかし、実行は無限ループで失敗し、hello world を出力します。コードをデバッグしようとしましたecx
が、正しく実行されておらずeax
、他の値を示していることがわかりました。私のコードは次のとおりです。
section .data
msg: db "Hello World",10,0
section .text
global main
extern printf
main: push ebp
mov ebp,esp
mov ecx,0
mov DWORD[esp-4],0x5
mov eax,DWORD[esp-4]
jmp .loop
.loop:
push eax
push ecx
add esp,8
pop ecx
pop eax
cmp ecx,eax
jne .task
jmp .done
.task:
push DWORD msg
call printf
add esp,4
add ecx,1
jmp .loop
.done:
mov esp,ebp
pop ebp
ret
私の過ちを示すことによって私を助けてくれませんか。