[ASM]汇编语言栈的理解

[ASM]汇编语言栈的理解

引言

众所周知,栈是一种数据类型在汇编语言中自然也包含
(PS:好像ASM只能使用栈访问内存空间,即使能直接访问也极其麻烦)
汇编语言的栈遵从"先进后出,后进先出"的规则
王爽先生在<汇编语言>一书中用一张图形象的表达了栈

入栈:

image

出栈:

image
一个开口的盒子就是一个栈空间,盒子装不下了就是栈溢出,盒子里什么也没有就是空栈

指令

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

习题

既然理解了栈,所以不如在习题中实践它吧!

习题一

image
image

点击查看代码
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

习题二

image

点击查看代码
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
posted @ 2022-11-04 16:15  HANDMICRO  阅读(159)  评论(0)    收藏  举报
1