[ASM]汇编语言栈的理解
引言
众所周知,栈是一种数据类型在汇编语言中自然也包含
(PS:好像ASM只能使用栈访问内存空间,即使能直接访问也极其麻烦)
汇编语言的栈遵从"先进后出,后进先出"的规则
王爽先生在<汇编语言>一书中用一张图形象的表达了栈
入栈:
出栈:
一个开口的盒子就是一个栈空间,盒子装不下了就是栈溢出,盒子里什么也没有就是空栈
指令
push指令
语法:
push 寄存器
实践指令:
点击查看代码
mov AX,1000H
mov SS,AX
mov SP,0010H;设置栈空间``
mov AX,1111H ;把1111复制到AX
push AX ;将AX压入栈
pop指令
语法:
pop 寄存器
实践指令:
点击查看代码
mov AX,1000H
mov SS,AX
mov SP,0010H;设置栈空间``
mov AX,1111H ;把1111复制到AX
push AX ;将AX压入栈
pop BX ;将栈中的值取出存入BX
习题
既然理解了栈,所以不如在习题中实践它吧!
习题一
点击查看代码
mov AX,1000H
mov SS,AX
mov SP,0010H
mov AX,001AH
mov BX,001BH
push AX
push BX
mov AX,0000H
mov BX,0000H
pop BX ;先入后出,后入先出!!!
pop AX
习题二
点击查看代码
mov AX,1000H
mov SS,AX
mov SP,0010H
mov AX,001AH
mov BX,001BH
push AX
push BX
mov AX,0000H
mov BX,0000H
pop AX
pop BX