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”,知道寄存器不为空并且堆栈已初始化。
由于
答案 0 :(得分:1)
MOV AH,N1 PUSH AH
push
指令不允许使用字节大小的寄存器操作数
你需要做的是写push ax
。这是有效的,因为8位AH
寄存器(与8位AL
寄存器一起)是16位AX
寄存器的一部分。您无需预先在AL
注册表中添加任何值以使其正常工作。
MOV AH,N1
PUSH AX
以上所有内容也适用于pop
指令!