鱼C论坛

 找回密码
 立即注册
查看: 3273|回复: 0

[学习笔记] 《零基础入门学习汇编语言》第十六讲

[复制链接]
发表于 2017-6-27 21:17:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 shuiyu 于 2017-6-29 22:07 编辑

小白刚学,不对的请各位大佬指正,谢谢

一、栈
(1)先进后出:可以想象成一个装羽毛球的羽毛球筒,只有一个出口,先放进去的肯定在最下面喽
(2)栈有两个基本的操作:入栈和出栈。
入栈:将一个新的元素放到栈顶;
出栈:从栈顶取出一个元素。
(3)现今的CPU中都有栈的设计。8086CPU提供相关的指令来以栈的方式访问内存空间。这意味着,我们在基于8086CPU编程的时候,可以将一段内存当作栈来使用。
(4)8086CPU提供入栈和出栈指令:PUSH(入栈)         POP  (出栈)
push ax:将寄存器ax中的数据送入栈中;
pop ax :从栈顶取出数据送入ax。
8086CPU的入栈和出栈操作都是以字为单位进行的。
(5)栈里面的信息用PUSH,POP只是复制出去了而已,本身还是在里面的;我们在存东西进去的时候,只是把以前的覆盖掉。比如:我们平时的格式化硬盘,只是把一个硬盘的索引改了;里面的东西并没有删除,我们再存东西进去只是覆盖掉以前的内存而已(PS:不然那些专业人才怎么恢复硬盘数据呢


二、两个疑问引出的思考
(1)8086CPU中,有两个寄存器:
段寄存器SS   存放栈顶的段地址
寄存器SP      存放栈顶的偏移地址
任意时刻,SS:SP指向栈顶元素。
(2)CPU如何知道一段内存空间被当作栈使用?:任意时刻,SS:SP指向栈顶元素。指向这里了,肯定就是要用到栈了。
(3)执行push和pop的时候,如何知道哪个单元是栈顶单元?:任意时刻,SS:SP指向栈顶元素。
(4)PUSH、POP指令的执行过程:字型数据用两个单元存放,高地址单元放高 8 位,低地址单元放低8 位。
在PUSH过程中:SP=SP-2
在POP过程中:SP=SP+2
(5)当栈中只有一个元素的时候,SS = 1000H,SP=000EH(即指向栈顶)为空时,SS=1000H,SP=0010H(即指向栈的最底部单元下面的单元)
(6)当栈为空的时候,栈中没有元素,也就不存在栈顶元素所以SS:SP 只能指向栈的最底部单元下面的单元,该单元的偏移地址为栈最底部的字单元的偏移地址+2,栈最底部字单元的地址为1000:000E,所以栈空时,SP=0010H。






谢谢小甲鱼带来的视频教程,感谢!!


   
本节结束,多谢览阅!
小白刚学,不对的请各位大佬指正,谢谢

评分

参与人数 1鱼币 +3 收起 理由
小甲鱼 + 3 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-6 10:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表