在 32 位 Ubuntu 中学习 NASM 汇编。我有些困惑:
在.bss
中,我为变量保留一个字节:
num resb 1
后来我决定给它一个值5
:
mov byte [num],5
并在某些时候将其打印出来:
mov EAX,4
mov EBX,0
mov ECX,num
add ECX,'0' ; From decimal to ASCII
mov EDX,1
int 0x80
但它没有打印任何东西。
我猜问题出在我给出num
它的值时5
。我原本想这样做:
mov byte num,5
正如我认为的那样,它num
指的是内存中的一个位置,因此mov
会复制5
到这样的位置。但我得到一个错误说
操作码和操作数的无效组合
所以基本上,为什么程序不打印 5?还有,为什么我上面的建议无效?