zoukankan      html  css  js  c++  java
  • 第3章 寄存器(内存访问)小结

    内存中字的存储

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

    DS和[address]

    “[...]”表示一个内存单元,“[...]”中的0表示内存单元的偏移地址。8086CPU自动取ds中的数据为内存单元的段地址。8086CPU不支持将数据直接送入段寄存器的操作,只能用一个寄存器来进行中转,即先将1000H送入一个一般的寄存器,如bx,再将bx中的内容送入ds。

    mov、add、sub指令

    mov指令可以有以下几种形式:

    add指令可以有以下几种形式:

    add、sub指令的操作数不能是段寄存器

    sub指令可以有以下几种形式:

     常数作第二个操作数时,如果是最高位是16进制的a~f前面要加0,如mov ax,0a400h

     在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应

    CPU提供的栈机制

    后进先出的操作规则

    push  ax表示将寄存器ax中的数据送入栈中,pop   ax表示从栈顶取出数据送入ax。8086CPU的入栈和出栈操作都是以字为单位进行的。

    8086CPU中,有两寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。

    出栈后,SS:SP指向新的栈顶,但pop操作前的栈顶元素依然存在,但是它以不在栈中,当再次执行push等入栈指令后,它将被新的数据覆盖。

     

    Push、Pop指令

    执行push时,CPU的两步操作是:先改变SP,后向SS:SP处传送。执行pop时,CPU的两步操作是:先读取SS:SP处的数据,后改变SP。

    操作对象不能是常数

    栈顶的变化范围最大为0~FFFFH

     

    在D、E、U、A命令中可使用段寄存器,如-d cs:0(查看当前代码段中的指令代码)-d ss:0(查看当前栈段中的内容)

    debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行

  • 相关阅读:
    jQuery EasyUI API 中文文档 数字框(NumberBox)
    jQuery EasyUI API 中文文档 数值微调器(NumberSpinner)
    jQuery EasyUI API 中文文档 日期时间框(DateTimeBox)
    jQuery EasyUI API 中文文档 微调器(Spinner)
    jQuery EasyUI API 中文文档 树表格(TreeGrid)
    jQuery EasyUI API 中文文档 树(Tree)
    jQuery EasyUI API 中文文档 属性表格(PropertyGrid)
    EntityFramework 数据操作
    jQuery EasyUI API 中文文档 对话框(Dialog)
    jQuery EasyUI API 中文文档 组合表格(ComboGrid)
  • 原文地址:https://www.cnblogs.com/547hh/p/9885959.html
Copyright © 2011-2022 走看看