程序集转换字节并将其推入堆栈

时间:2017-03-23 18:11:29

标签: assembly x86

我想告诉编译器AL是2个字节变量,我想将AL推入堆栈。

然后我想要弹出值,告诉它是1个字节并将其移动到dl。 我想到了类似的东西:

push word ptr al
pop byte ptr dl

我该怎么做? 我不想改变AH和DH中的值

1 个答案:

答案 0 :(得分:0)

堆栈被组织为WORDS数组。你无法推送或弹出BYTE。要存储AL,您可以将AH设置为0和PUSH AX。如果你不想改变AH,你可以推动AX并操纵堆栈中AH的推送值。

mov ax, 0102h               ; Any value for testing

; PUSH WORD PTR AL
push ax
mov bp, sp                  ; BP needed for indexed operations
mov BYTE PTR [bp+1], 0      ; Clear high byte (pushed AH)

; POP BYTE PTR DL
mov bp, sp                  ; BP needed for indexed operations
mov dl, BYTE PTR [bp]       ; Load low byte (pushed AL) into DL
add sp, 2                   ; POP