我試圖在NASM中編寫一個簡單的彙編程序,它將打印5次Hello World。但是,在無限循環印刷hello world中執行失敗。我試圖調試代碼,發現ecx
沒有正確執行,並且eax
顯示了一些其他值。我的代碼如下:無法在NASM中執行循環
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
你能幫我通過顯示我的缺點。
我不知道太清楚的ASM,但我認爲你可以從http://www.csee.umbc.edu/portal/help/nasm/sample啓動.shtml和http://blog.markloiseau.com/2012/04/hello-world-nasm-linux/ – user1929959