我正在使用x86 NASM学习汇编语言。我想编写一个简单的递归阶乘函数,使用EAX寄存器将一个参数传递给该函数。之后,我想在屏幕上打印结果,但是什么也没有发生。坐在电脑上凝视着我之后,我不知道我的代码有什么问题。你们可以帮助新手解决这个问题吗?
我知道阶乘函数的序言和结尾不是必需的,因为我没有使用堆栈,但是对我来说代码更易读;)
这是我的代码:
urlpatterns = [
path('player/<str:playerid>/', views.player_info, name='player_info'),
答案 0 :(得分:1)
C库-我猜您使用的是GCC中的库-无法立即输出printf
的结果。而是将其存储在称为缓冲区的单独内存中,并偶然输出。在这种情况下,程序将以int 0x80/eax=1
结束的速度比刷新缓冲区的速度快。您可以插入手动刷新:
...
extern fflush
...
push 0
call fflush
add esp, 4
...
最好的解决方案是使用C exit
函数。替换
mov ebx,0
mov eax,1
int 0x80
作者
push 0
call exit
或简单地替换为
ret
在这种情况下,您不需要手动刷新缓冲区。这将exit
或ret
为您服务。
BTW:LF(换行符)编码为10个十进制和0x0A十六进制。