我想告诉编译器AL是2个字节变量,我想将AL推入堆栈。
然后我想要弹出值,告诉它是1个字节并将其移动到dl。 我想到了类似的东西:
push word ptr al
pop byte ptr dl
我该怎么做? 我不想改变AH和DH中的值
答案 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