x86 - 将 8 位值压入堆栈

Adr*_*ang 1 assembly stack x86-16

是否可以将 8 位值压入堆栈?当我尝试将 AL 压入堆栈时,NASM 给出错误;后来我发现这是因为堆栈保存的是16位值。将 8 位值压入堆栈的正确方法是什么?

(这是8086的)

fuz*_*fuz 5

您不能将 8 位值压入堆栈。最明智的方法是将相应的 16 位寄存器压入堆栈:

push ax
Run Code Online (Sandbox Code Playgroud)

请注意,除了您想要写入的一个字节之外,这还会推送一个垃圾字节ah,但这应该没有问题。