如何正确使用PUSH?

时间:2016-06-09 13:12:24

标签: assembly stack push x86-16 emu8086

PILE SEGMENT STACK
DW 256 DUP(?)
base:
PILE ENDS

DATA SEGMENT

N1 DB 1
N2 DB 2
N3 DB 3


DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:PILE

main:

MOV AX,DATA
MOV DS,AX
MOV AX,PILE
MOV SS,AX
MOV SP,Base

MOV AH,N1
PUSH AH

fin:

MOV AH,4CH
INT 21H
CODE ENDS
END main

大家好,

我目前正在学习如何使用汇编语言进行编码,经过长时间阅读互联网上的几个课程后,现在是时候开始了。现在,这种做法并不像读书那么容易,没有任何意外。一切都很好,直到堆栈......是的。您可以在上面看到我的(非常基本的)代码,我想了解为什么Emu8086不理解指令“PUSH AH”,知道寄存器不为空并且堆栈已初始化。

由于

1 个答案:

答案 0 :(得分:1)

MOV AH,N1
PUSH AH

push指令不允许使用字节大小的寄存器操作数 你需要做的是写push ax。这是有效的,因为8位AH寄存器(与8位AL寄存器一起)是16位AX寄存器的一部分。您无需预先在AL注册表中添加任何值以使其正常工作。

MOV AH,N1
PUSH AX

以上所有内容也适用于pop指令!