我试图用 printf 打印逗号后的每个字符,但它给了我分段错误
global main
extern printf
section .data
num db "%d",0
array db 2,4,3
arrlen equ $ - array
section .text
main:
mov ecx, 0
mainloop:
cmp ecx, arrlen
je exit
movzx ebx, byte [array + ecx]
push ebx
push num
call printf
add esp, 8
inc ecx
jmp mainloop
exit:
mov eax, 1
xor ebx, ebx
int 0x80
我什至尝试使用chatGPT xd
ECX 不是调用保留寄存器。
printf
可能会修改它,使基于 ECX 的循环运行时间过长,从而寻址超出数组的内存。main:
xor ebx, ebx
jmp beginloop
mainloop:
movzx eax, byte [array + ebx]
push eax
push num
call printf
add esp, 8
inc ebx
beginloop:
cmp ebx, arrlen
jb mainloop
exit:
mov eax, 1
xor ebx, ebx
int 0x80