我在 64 位 lubuntu 中对 nasm 进行堆栈实现时遇到问题。在其他 ubuntu 操作系统中,它可以正常工作和运行,当我在在线编译器上运行它时,它也可以正常运行。我一直在考虑我的操作系统是否不支持 nasm 上的堆栈,或者只是需要应用一些代码。
section .data
num dw 0
x dw 5
y dw 4
newline db "",10
newlineLen equ $-newline
section .bss
section .text
global _start
_start:
sub esp,2
push word[x]
push word[y]
call sum
pop word[num] ;fetch the sum from the stack
;convert num for printing
add word[num],30h
mov eax,4
mov ebx,1
mov ecx,num
mov edx,1
int 80h
mov eax,4
mov ebx,1
mov ecx,newline
mov edx,newlineLen
int 80h
mov eax,1
mov ebx,0
int 80h
sum:
mov ebp,esp
mov ax,[ebp+6] ;5
add ax,[ebp+4] ;4+5
mov [ebp+8],ax ;store the result in the space allocated for the sum
ret 4 ;esp+4