• 汇编语言 第三章小节


    汇编语言第三章小结

    概述: 此章节的总标题叫做 “寄存器(内存访问)”, 其教学目的是“从访问内存的角度继续学习几个寄存器“。那么,介绍了哪些寄存器呢。其一: 用来访问数据段的”DS寄存器“; 其二:用来访问栈段的SS:SP寄存器。

    第一部分:提炼几个基础而又关键的知识点

    1. 8086CPU的入栈和出栈操作都是以字为单位进行的。
    2. push指令的执行步骤:a. SP = SP – 2; b. 向SS:SP指向的字单元中送入数据。
    3. pop指令的执行步骤: a. 从SS:SP 指向的字单元中读取数据; b. SP = SP + 2;
    4. 关于push 指令和pop指令的执行步骤,其实有点像 “拉抽屉—SP = SP - 2“, “放东西——向字单元中送入数据”, “拿东西——读取数据”,

                “关抽屉—SP-= 2”。胡乱地打个比方。

       5.从栈操作指令完成的功能角度上来看,push, pop等指令在执行的时候只修改SP, 所以栈顶的变化范围是 0 到 FFFF,从栈空时候的SP = 0;一直压栈,直    到栈满时SP = 0;如果再次压栈,栈顶将环绕,覆盖了原来栈中内容。所以一个栈段的容量最大为64KB。

       6.一段内存,可以既是代码的存储空间,又是数据的存储空间,还可以是栈空间,也可以什么也不是。关键在于CPU中寄存器的设置,即CS, IP, SS, SP, DS的    指向。

       7.关于 “将 10000 – 1FFFF 这段空间当作栈段,初始状态栈是空的,此时,SS = 1000, SP = 0”, 为啥SP会等于零呢。首先栈底的偏移地址必然为FFFE,把     栈底元素踢掉就是空栈了,那么FFFE + 2 = 10000。其中 1 就被进位舍掉了。所以SP = 0。

  • 相关阅读:
    maven学习(四)maven的生命周期
    maven学习(六)依赖、聚合、继承
    Koa2学习(三)GET请求
    Koa2学习(二)async/await
    Koa2学习(一)环境搭建
    实现一个简易的express中间件
    js生成页面水印
    使用 dva + antd 快速开发react应用
    使用ab 进行并发压力测试
    python3 使用http.server模块 搭建一个简易的http服务器
  • 原文地址:https://www.cnblogs.com/sunguanglin/p/9863545.html
Copyright © 2020-2023  润新知