zoukankan      html  css  js  c++  java
  • 汇编语言之第三章寄存器(内存访问)

    3.1 内存中字的存储

      cpu中用16位寄存器储存一个字,高八位储存高位字节,低八位储存低位字节。字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。我们将起始地址为N的字单元简称N地址字单元。

    3.2DS和address

      地址由段地址和偏移地址构成。DS寄存器,存放要访问数据的段地址。【....】表示内存单元的偏移地址。8086CPU将自动取出DS的数据作为内存单元的段地址。

    注意,因为DS是一个短寄存器,所以不能把数据直接送入DS中,可以通过一个一般的寄存器进行中转一下。

    3.3字的传送

    一个字为16位数据,在mov指令中给出16位储存器就可以进行16位数据的传送。用mov要注意,两个操作数长度要一致,内存单元间不能传送,不能使用mov修改cs,ip的值。

    3.4mov,add,sub指令

      mov,sub,add指令都有两个操作对象,

      指令  寄存器  数据

      指令  寄存器  寄存器

      指令  寄存器  内存单元

      指令  内存单元  寄存器

      指令  段寄存器  寄存器

    jmp是具有一个操作对象的指令

    3.5数据段

      将一组长度为N<=64kb,地址连续,起始地址为16的倍数的内存单元当做专门存储数据的内存空间,从而定义一个数据段。

    3.6栈

      栈:进栈,出栈。后进先出

    3.7CPU提供的栈机制

      8086CPU的入栈出栈已字为单位。段寄存器SS,寄存器SP,任意时刻SS:SP指向栈顶元素。push 进栈指令,pop出栈指令

    3.8栈顶超界的问题

      8086CPU不保证对栈的操作不会超栈。当栈满时使用push 指令入栈,当栈空时使用pop指令出栈,都会栈顶出栈。

    出栈是危险的,会修改其他数据,发生意外

    3.9push,pop指令

      后可跟段寄存器,寄存器,内存单元

     

    3.10栈段

      将一组长度为N<=64kb,地址连续,起始地址为16的倍数的内存单元当做专门存储数据的内存空间,当做一个栈空间,从而定义一个栈段,最大容量为64kB

      数据段,将段地址放在DS寄存器

      代码段,将段地址放在CS寄存器

      栈段,将段地址放在SS寄存器

  • 相关阅读:
    团队项目冲刺第五天
    团队项目冲刺第四天
    团队项目冲刺第三天
    团队项目冲刺第二天
    团队项目冲刺第一天
    团队任务命题
    java报错the superclass was not found 解决方案
    Buildings 分类: ACM 多校 2015-07-23 22:09
    1009 数字1的数量 分类: 51nod 2015-07-20 21:44 3人阅读 评
    1284 2 3 5 7的倍数 分类: 51nod 2015-07-18 22:06 6人阅读
  • 原文地址:https://www.cnblogs.com/bowentianxia/p/9841700.html
Copyright © 2011-2022 走看看