当前位置:网站首页>【汇编语言】从最底层的角度理解“堆栈”
【汇编语言】从最底层的角度理解“堆栈”
2022-04-23 01:59:00 【怪&】
前言
你好啊,我是“ 怪& ”,是一名在校大学生哦。
主页链接:怪&的个人博客主页
️博文主更方向为:课程学习知识、作业题解、期末备考。随着专业的深入会越来越广哦…一起期待。
️一个“不想让我曾没有做好的也成为你的遗憾”的博主。
很高兴与你相遇,一起加油!
一、什么是堆栈?
堆栈是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的 。堆这个存储区存入的数据,是一种特殊的数据结构。所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后进栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;用寄存器构成的堆栈,叫硬件堆栈。
简介:
- 一种数据结构
- 堆栈的元素进出遵循:“先进后出”原则
想必大家在使用高级语言,例如:java,c,c++,python等都使用过堆栈,其运行机理大体明白,但细节部分还较模糊。
此篇文章将从《汇编语言》即计算机最底层的角度让你重新认识堆栈。
二、堆栈的前言知识
提及《汇编语言》,不可避免的要讲14个寄存器,如图 (基于8086CPU的哦)
江湖上流传着:“把这14个寄存器学明白,汇编语言就毕业了”的传说。
即然此文讲堆栈,则我们就需要了解:
- SS:堆栈段寄存器
- SP:堆栈指针寄存器组
8086CPU的入栈和出栈操作都是以字(word)为单位进行的。一个字(word)为两个字节(byte)。
任意时刻,SS:SP指向栈顶元素
栈为空时,SS:SP指向栈空间最高地址单元的下一个单元。(因为“任意时刻,SS:SP指向栈顶元素”,所以栈空时不存在栈顶元素,所以SS:SP只能指向栈的最底部单元下面的单元。)
三、堆栈的操作
1、栈的初始化
mov ax,1000H
mov ss,ax ;设置栈的段地址ss=1000H,不能直接向段寄存器SS送入数据,所以用ax中转
mov sp,0010H
2、入栈
mov ax,1234
push ax
Push ax
实际是执行了两个操作:
- SP=SP-2
- 将ax内容送入SS:SP指向的内存单元中,SS:SP此时指向新栈顶
存储,遵循“高位存高位,低位存低位”的原则。
3、出栈
Pop bx
pop bx
实际是执行了两个操作:
- 将SS:SP指向的内存单元处的数据送入BX中
- SP=SP+2,SS:SP指向当前栈顶下面的单元(新的栈顶)
三、注意事项
- 汇编语言不区分大小写
- 编程时小心栈顶超界:防止“ 栈满继续入栈” 和 “ 栈空继续出栈 ”的超界现象。
- 堆栈空间也是内存空间的一部分
️️️忙碌的敲代码也不要忘了浪漫鸭!
版权声明
本文为[怪&]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_21471309/article/details/124298794
边栏推荐
猜你喜欢
What are the test steps of dynamic proxy IP?
Communication summary between MCU and 4G module (EC20)
Under the pressure of sales, domestic mobile phones began to reduce prices, but they haven't put down their final face
2022 Saison 6 perfect Kid Model IPA national race Leading the Meta - Universe Track
Find the largest number of two-dimensional arrays
J-link v9 使用技巧之虚拟串口功能
The sixth season of 2022, the perfect children's model IPA national race leads the yuanuniverse track
W801 / w800 / w806 unique ID / CPUID / flashid
Shardingsphere introduction and sub table usage
Summary of LSF usage
随机推荐
How to change the size of SVG pictures without width in openlayer
Ziguang micro financial report is outstanding. What does the triple digit growth of net profit in 2021 depend on
Performance introduction of the first new version of cdr2022
Batch multiple files into one hex
【dpdk】10. Dpdk DNS learning notes
Makefile文件是什么?
[经验教程]支付宝余额自动转入余额宝怎么设置关闭取消支付宝余额自动转入余额宝?
EBS:PO_EMPLOYEE_HIERARCHIES_ALL
CDR2022首发全新版本性能介绍
《维C中国》乡村助农暖人心第三站嘉宝果农场
腾讯云接口进行人脸检测 和签名出错问题
Why is one plus one equal to two
Shardingsphere broadcast table and binding table
NPM -- configure Taobao image
What is a dial-up server and what is its use?
一些使用代理IP的小技巧。
RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimensio
2022 crane driver (limited to bridge crane) examination question bank and online simulation examination
角色個人屬性英文縮寫
leetcode:27. Remove element [count remove]