我试图用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
1条答案
按热度按时间k7fdbhmy1#
ECX不是一个保留调用的寄存器。
printf
可能会修改它,使基于ECX的循环运行太长时间,从而寻址数组之外的内存。尝试使用EBX,它是一个保留调用的寄存器:
字符串