SS 寄存器和 SP 寄存器:
SS 寄存器:Stack Segment (堆栈段寄存器)
SP 寄存器:Stack Pointer(堆栈指针寄存器)
这两个寄存起是为了访问内存用的,SS为段寄存器,SP为偏移。
SP受PUSH和POP两个指令的影响。
PUSH SP=SP+入栈数据的字节数
POP SP=SP-出栈数据的字节数
每次 PUSH入栈的数据是2字节还是1字节呢?
取决于入栈的数据?还是取决于入栈的基础器呢?
举例
ASSUME CS:CODES
CODES SEGMENT
START:
MOV AX,1000H ;首先是定义好栈的段地址
MOV SS,AX
MOV AX,10H ;再定义好栈的长度(初始时刻的栈顶偏移地址即栈的长度)
MOV SP,AX ;SP=10
MOV AX,0001H
PUSH AX ;SP=9
MOV AX,0002H
PUSH AX ;SP=8
MOV AX,0003H
PUSH AX ;SP=7
POP AX ;SP=8
POP AX ;SP=9
POP AX ;SP=10
MOV AH,4CH
INT 21H
CODES ENDS
END START