[024][汇编语言]检测点6.1 在同一个代码段里使用数据和栈

程序6.2

功能: 8个数据加和计算

assume cs:code

code segment
    
    dw 0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H

    start:  mov bx,0
            mov ax,0

            mov cx,8
        s:  add ax,cs:[bx]
            add bx,2
            loop s

            mov ax,4c00H
            int 21H
    code ends
    end start

  • start 指明程序的入口所在,即 CS:IP
  • dw 即(define word),定义 型数据

程序加载到内存后

  • 8个字型数据,占用16个内存单元
  • 用 dw 定义的数据 被放在 从CS:0 开始到 CS:F 的前16个内存单元里面
  • 后面的内存单元从CS:0010 开始,存放汇编指令对应的机器码
    CS IP 指明程序的入口(指令的开始).png

检测点6.1

第一问

检测点6.1 第一问.png

审题: 什么叫用内存单元中的内容改写程序中的数据?

  • 程序中的数据,就是dw关键词后面那一串8个数据,要改写这些数据,就是要找到这些数据所在的位置(内存单元的地址),而这些数据就排在 从 CS:0 开始到 CS:F 的前 16个内存单元,使用 CS:[bx] 依次访问即可

第二问

检测点6.1 第二问.png

审题:如何使用栈来传送数据?

  • 完全参考书上 程序6.3 来写
  • 第一个dw关键词开辟了8个字的空间,并且存入了数据
  • 第二个dw关键词开辟了10个字的空间,用作栈空间
  • 可以计算出栈顶的偏移地址 SP = (8+10)x2= 36 =24H
  • 8个字的数据依旧使用 CS:[bx] 来访问
  • 弹出操作 pop 即可

简单复习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容