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寄存器

  • 相关阅读:
    oracle授权另外一个用户访问自己创建的数据对象
    popupWindow使用详解
    oracle用户管理实例
    oracle用户管理入门
    sqlite数据库修改及升级
    android之listView定位到指定行同时隐藏输入键盘
    oracle数据库常用命令
    Oracle11g安装完成后给用户解锁
    Git学习笔记(一)
    gson使用详解
  • 原文地址:https://www.cnblogs.com/bowentianxia/p/9841700.html
Copyright © 2011-2022 走看看