【发布时间】:2013-09-19 09:27:57
【问题描述】:
在 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?还有,为什么我上面的建议无效?
【问题讨论】:
标签: linux ubuntu assembly nasm 32-bit