汇编 学到哪里写哪里——栈

---恢复内容开始---

栈的两个操作入栈(PUSH) 出栈(POP)

原谅色

注意:任意时刻SS:SP指向栈定元素 SS和SP定义栈

PUSH AX的执行, 做了两件事:

(1)SP=SP-2

(2)将AX的内容放到SS:SP指向的内存单元

栈空的时候 SP指向什么?

比如这个栈的战地(栈底)是1000FH 那么空战(空栈)的时候指向的是10010H

POP AX 执行过程与PUSH相反

(1)将SS:SP指向的内存单元的数据放到AX中

(2)SP=SP+2

SS 和 SP只能指向栈的顶 但是存在栈的越界的问题

哼,你以为会有吗?不存在的。

8086CPU不保证我们对栈的操作不会越界,全靠自己。

编程的时候要小心。

原谅色

PUSH 和 POP指令的格式

PUSH __

POP   __

可以填:寄存器(AX)、段寄存器(SS)、内存单元(DS:[0000H])

PUSH 和 POP 实质上是一种内存传送指令

时间: 2024-10-10 17:43:19

汇编 学到哪里写哪里——栈的相关文章

汇编 学到哪里写哪里——这只是一个开始

在我学习中遇到的第一个问题: 关于汇编语言中的立即寻址和直接寻址 由于版本问题 直接寻址的时候要写成 DS:[0000H] 这种形式如图: 编译链接debug一下如图: 2333 这是为什么是 33 23 的原因

【总结】学用python写程序

工作多年,因为项目需要,用过的编程语言不少了:c/c++.java.c#.汇编.vb.objective c.apple script.不过主要使用的还是c/c++,一方面是用得久了,习惯了.另一方面,思考问题的方式已经偏"底层"了,不想内存.不考虑指针,似乎就浑身冷汗,无法编程了.连带我在面试一些小朋友的时候也会不自觉的问一些底层的知识点.再有一方面,就是想要程序的运行效率更高一些,个人一直以写高效的(算法)程序为目标,而c/c++是除了汇编之外的,能写出的运行效率最高的编程语言--

【转载】学用python写程序

学用python写程序 工作多年,因为项目需要,用过的编程语言不少了:c/c++.java.c#.汇编.vb.objective c.apple script.不过主要使用的还是c/c++,一方面是用得久了,习惯了.另一方面,思考问题的方式已经偏“底层”了,不想内存.不考虑指针,似乎就浑身冷汗,无法编程了.连带我在面试一些小朋友的时候也会不自觉的问一些底层的知识点.再有一方面,就是想要程序的运行效率更高一些,个人一直以写高效的(算法)程序为目标,而c/c++是除了汇编之外的,能写出的运行效率最高

64位汇编第二讲——64位汇编中局部变量使用及抬栈方法29171230

一.纯写64位汇编时局部变量处理和参数寄存器保存位置 纯写64位汇编和用VS2013写64位C代码生成的汇编会有一些格式上的区别,VS2013写64位C代码生成的汇编中是没用到栈基址寄存器rbp的,但是纯写汇编时只要申明了参数和使用了@LOCAL定义的局部变量,就会用到rbp.且看如下例子:1)用C写64位程序空函数生成的汇编代码, ;C代码 void FunTest2() { } ;汇编代码 000000013F753290 40 57 push rdi 000000013F753292 5F

用数组写出栈(先进后出)

<pre name="code" class="java">//用数组写出栈(先进后出) import java.util.Collection; import java.util.NoSuchElementException; public class ArrayStack<E> { private int initalSize = 5; private Object[] stack; private int head; private i

我要带徒弟学JAVA架构 ( 写架构,非用架构 )

我要带徒弟学JAVA架构 (写架构.非用架构) 非常多人做java开发2,3年后.都会感觉自己遇到瓶颈. 什么都会又什么都不会.怎样改变困境,为什么非常多人写了7,8年还是一个码农,工作中太多被动是由于不懂底层原理. 公司的工作节奏又比較快,难有机会学习架构原理,也没人教.所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要. 相同公司的两个新人,一个新人一点就通.学东西非常快,有的人.学东西非常慢,也非常痛苦,处处都是新技术.为什么?由于那个人懂原理,万物都有规律,掌握了规律学其它

汇编学后感

一直听说程序员中存在一个鄙视链,当然这有点玩笑成分,但学好汇编想必是可以提高对其他高级语言的理解吧. 作为最接近机器语言的语言,汇编拥有超过其他高级语言的速度,所以作为系统核心的代码总会是由汇编语言编写的,汇编语言在我看来是机器语言的映射,只是换成更容易被人所理解的方式. 计算机由CPU.存储器.输入和输出设备组成,CPU由控制器和运算器构成.我们知道信息在计算机内通过地址.数据.控制总线传输的,然而实际上他们并不是分成3块,只是依照各自的功能将他们分开叫了. 下面来看信息如何在内部传输的,要谈

汇编中call printf参数压栈时错误理解

EAX, ECX,EDX,EBX均可以32bit,16bit,8bit访问,如下所示: <-------------------EAX------------------------>|<----------------------|-----------|----------->|  |<---------AX--------->|  |<---AH--->|<---AL--->| 测试代码如下: 1 .section .data 2 outp

呃呃呃,开始学编程,写一点感受

呃呃呃,编程神马的果然难多了,一天都在蒙,不过总在最后一个多小时柳暗花明了,虽然以前曾经学过给机器人编程,不过现在看来那真心不能叫编程啊! 呃呃呃,不着说啥了,不过确实有点难,但仔细看书,咱低智商都看懂了,应该不会上来就不及格吧,还是有信心的(握拳) 回去又看了看书,又写了一页的笔记,顿时有信心了,加油吧!星辰! 呃呃呃,想睡觉了,那就不写啦,精力充沛明天才好努力学习! 奋斗吧!