section .rodata
MSG: DB "welcome",10,0
S1: DB "%d",10,0 ; 10 = '\n' , 0 = '\0'
section .data
array DB 5,1,7,3,4,9,12,8,10,2,6,11
len DB 12
section .text
global main
extern printf
main:
mov ecx,12
mov eax,0
xor esi, esi
again:
mov al, byte[array+esi]
push al
pop ebx
add eax,ebx
inc esi
jmp again
push eax
call printf
mov eax, 1 ;exit system call
int 0x80
答案 0 :(得分:2)
push al
指令不存在
即使它确实存在,然后按下一个字节然后弹出一个dword会让你的堆栈不平衡
幸运的是,这个程序没有编译,因为它也进行了无限循环。您需要将jmp again
更改为loop again
。