8、栈与子程序入门

栈与子程序入门

1. 栈的基础概念

栈是程序中用于临时存储数据和地址的区域,它是一种一维的数据结构,遵循“后进先出”(LIFO)的原则。就像一摞盘子,最后放上去的盘子总是最先被拿走,栈中最后添加的数据项就是栈顶元素。

在程序中,需要预留一块内存来作为栈。可以通过声明栈段来实现,例如:

.STACK
lOOH

当程序被汇编并加载到内存中时, SS 寄存器会包含栈段的段号。对于上述栈段声明,栈指针 SP 初始化为 lOOh ,这表示空栈的位置。当栈不为空时, SP 包含栈顶的偏移地址。

2. 栈操作指令
2.1 PUSH 和 PUSHF
  • PUSH 指令 :用于将一个新的字添加到栈中。语法为 PUSH source ,其中 source 是一个 16 位寄存器或内存字。例如, PUSH AX 。执行 PUSH 指令会导致以下操作:
    1. SP 减 2。
    2. source 内容的副本被移动到 SS:SP 指定的地址, source 本身不变。
  • PUSHF 指令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值