栈
-
栈:是一种具有特殊的访问方式的存储空间
后进先出, Last In Out Firt,LIFO
-
8086提供了PUSH(入栈)和POP(出栈)指令来操作栈段的数据比如
- push ax是将ax的数据入栈,
- pop ax是将栈顶的数据送入ax
push ax (先挪后放:写数据)
SP = SP - 2,SS:SP 指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;
将ax中的内容送入 SS:SP 指向的内存单元处,SS:SP此时指向新栈顶
pop ax (读数据)
将SS:SP指向的内存单元处的数据送入ax中;
SP=SP+2,SS:SP 指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶
思考
如果将10000H 到 1000FH 这段空间当做栈,初始状态栈是空的,此时,SS=1000H,SP=?思考后看分析
SP的值应10H
练习
编程:
(1)将10000H到1000FH 这段空间当做栈,初始状态栈是空的;
(2)设置AX=001AH,BX=001BH;
(3)利用栈,交换AX和BX中的数据.
mov ax,1000H
mov ss,ax
mov sp,0010H
mov ax,001AH
mov bx,001BH
push ax
push bx
pop ax
pop bx
栈段
用SS存放栈段的段地址,用SP存放栈顶的偏移地址
段总结
练习
分析
分析