我正在用NASM在16位x86组件中制作自己的操作系统,在代码的一部分中,我必须将AL寄存器push
添加到堆栈中。但当我做push al
时,我只是说:
firstos.asm:127:错误:操作码和操作数的组合无效
我还尝试将堆栈指针与mov sp, al
一起使用,但没有成功。
我该怎么做?
没有推送8位寄存器的指令。指令集的设计假设您将按照16位字来组织堆栈,因此所有的推送和弹出都应该是字大小的。
所以很可能你只想push ax
,然后再pop ax
。
在此期间,如果您想在ah
中放入不想覆盖的内容,则会变得有点困难。最好为该字节使用其他寄存器。