CPU提供的栈的机制

一、栈的机制

栈是一种后进先出(LIFO)的机制,8086CPU提供一些指令可以将一段内存当做栈来使用,提供了两个基本操作:入栈(push)和出栈(pop)。这两个操作是以字为单位进行的。例:push ax 是将ax里的数据送人栈中,pop ax是将栈顶数据送入ax。

二、段寄存器SS和寄存器SP

我们如何知道栈的位置在哪?故我们利用段寄存器SS和寄存器SP来指出栈的位置,栈的段地址储存在段寄存器SS中,偏移地址储存在sp中,SS:SP始终指向栈顶。

三、入栈与出栈过程

push ax的过程:
(1)、SP=SP-2,以指向的新的内存单元为新的栈顶。
(2)、将ax内容送入SS:SP指向的内存单元处
在这里插入图片描述
pop ax的过程:
(1)、将SS:SP指向的内存单元数据送入ax。
(2)、SP=SP+2,SS:SP指向的内存单元为新的栈顶。
在这里插入图片描述
注意:之前出栈的内存里的数据并未丢失,还是在内存中,只不过它不在栈中了。

四、栈空状态

栈空时,因为没有了栈顶元素,所以ss:sp只能指向栈底后面的单元,偏移地址SP=栈底偏移地址+2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Z-Stack协议中OSAL(Operating System Abstraction Layer)是一个抽象层,用于将应用程序与底层操作系统隔离开来,从而实现跨平台的应用程序开发。OSAL主要提供了以下功能: 1. 任务管理:OSAL提供了任务管理功能,可以通过创建、删除、暂停、继续等API函数来管理任务。 2. 事件管理:OSAL提供了事件管理功能,可以通过创建、删除、发送、接收等API函数来管理事件。 3. 定时器管理:OSAL提供了定时器管理功能,可以通过创建、删除、启动、停止等API函数来管理定时器。 4. 内存管理:OSAL提供了内存管理功能,可以通过申请、释放等API函数来管理内存。 OSAL的工作机制如下: 1. OSAL初始化:在系统启动时,首先需要调用OSAL的初始化函数,完成任务、事件、定时器和内存等资源的初始化。 2. 创建任务:在应用程序中,可以通过调用OSAL的API函数来创建任务,并指定任务的优先级、堆大小、入口函数等参数。 3. 任务调度:当系统中有多个任务时,OSAL会按照任务的优先级进行调度,将CPU时间片分配给不同的任务,以完成任务切换。 4. 事件管理:当某个任务需要等待某个事件时,可以调用OSAL的API函数来等待事件的发生。当事件发生时,OSAL会将任务从等待队列中唤醒,并将事件传递给任务处理函数。 5. 定时器管理:当某个任务需要定时执行某个操作时,可以调用OSAL的API函数来创建定时器。定时器到期时,OSAL会将定时器事件发送给任务,并执行相应的操作。 6. 内存管理:当应用程序需要申请内存时,可以调用OSAL的API函数来申请内存。当内存不再使用时,可以调用OSAL的API函数来释放内存。OSAL会负责管理内存的分配和回收。 总之,OSAL为应用程序提供了一个抽象层,使得应用程序可以跨平台开发,同时也为底层操作系统提供了一些常用的功能,如任务管理、事件管理、定时器管理和内存管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值