Das ist mein x86-Assembler-Code:Warum ist Segmention-Fehler beim Drucken?
section .data
output db '%d',10,0
section .text
global main
extern printf
main :
xor ecx,ecx
xor eax,eax
mov eax,1
mov ecx,5
lable1:
push ecx
push eax
cmp eax,0
jg print
pop eax
pop ecx
inc eax
loop lable1
ret
print:
push eax
push output
call printf
add esp,8
ret
Dieses Programm alle Zahlen zwischen 1 bis 5. gedruckt werden soll Warum erhalte ich einen Segmentation Fault immer nach ‚1‘ Druck?
Sehen Sie sich die Aufrufkonvention/ABI-Links im [x86-Tag-Wiki] (http://stackoverflow.com/tags/x86/info) an. Sie könnten Ihre Zähler in Call-Conserved-Registern behalten, anstatt sie über printf zu verschieben. –