• 第2章 寄存器小结


    CPU

    CPU由运算器、控制器、寄存器等器件构成,运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作,内部总线连接各种器件,在它们之间进行数据的传送。程序员通过改变各种寄存器中的内容来实现对CPU的控制。

    位宽:CPU通过外部数据总线与内存之间一次能够传送的数据位。

    8086 16位CPU(字长16位,位宽16位)

    通用寄存器

    8086CPU的所有寄存器都是16位的,通用寄存器包括AX,BX,CX,DX,这四个寄存器都可分为两个可独立使用的8位寄存器来用:

      • AX可分为AH和AL

      BX可分为BH和BL

      CX可分为CH和CL

      DX可分为DH和DL

    AX的低8位(0位~7位)构成了AL寄存器,高8位(8位~15位)构成了AH寄存器。AH和AL寄存器是可以独立使用的8位寄存器。

    字在寄存器中的存储

    字节:记为byte,一个字节由8个bit组成,可以存在8位寄存器中。

    字:记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节,一个字可以存在一个16位寄存器中。

    几条汇编指令

    在进行数据传送或运算时,要注意指令的两个操作对象的位数应当时一致的

    如:

    mov  ax,bl             (在8位寄存器和16位寄存器之间传送数据)

    mov  bh,cx            (在16位寄存器和8位寄存器之间传送数据)

    mov  al,20000        (8位寄存器最大可存放值为255的数据)

    mov  al,100H         (将一个高于8位的数据加到一个8位寄存器中)

    如 add AL,93H时,AL作为一个独立的8位寄存器使用,和AH没有关系,产生的进位不会储存在AH中。

    8086CPU给出物理地址的方法

    所有的内存单元构成的存储空间是一个一维的线性空间

    当8086CPU要读写内存时:

    (1) CPU中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;

    (2) 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;

    (3) 地址加法器将两个16位地址合成为一个20位的物理地址;

    (4) 地址加法器通过内部总线将20位物理地址送入输入输出控制电路;

    (5) 输入输出控制电路将20位物理地址送上地址总线;

    (6) 20位物理地址被地址总线传送到存储器;

    地址加法器如何完成段地址*16的运算?就是将以二进制形式存放的段地址左移4位

    地址加法器采用物理地址=段地址*16+偏移地址的方法用段地址和偏移地址合成物理地址。

    “段地址*16+偏移地址=物理地址”的本质含义

    CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址

    段的概念

    内存并没有分段,段的划分来自于CPU

    偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB

    如果给定一个段地址,仅通过变化偏移地址来进行寻址,最多可以定位多少个内存单元?偏移地址为16位,变化范围为0~FFFFH,仅用偏移地址来寻址最多可寻64KB个内存单元。

    可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

    在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址*16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。

    段寄存器

    包括:CS、DS、SS、ES

    CS和IP

    8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。

    CS为代码段寄存器,IP为指令指针寄存器,jmp指令可修改CS和IP

    “jmp  某一合法寄存器”指令的功能为:用寄存器中的值修改IP。

    8086CPU的工作过程:

    (1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;

    (2)IP=IP+所读取指令的长度,从而指向下一条指令;

    (3)执行指令,转到(1)

    R命令查看、改变寄存器中的内容:1.-r    2.-r 寄存器 Enter

    D命令查看内存中的内容:1.d 段地址:起始偏移地址 结尾偏移地址 2.d 段地址:起始偏移地址 长度

    E命令改写内存中的内容:1.-e 起始地址 数据 数据 数据... 2.-e 段地址:偏移地址 Enter 3.-e 起始地址 ‘字符’(向内存单元中写入字符的ASCII码值)

    U命令反汇编:1.-u 2.-u 起始地址 3.与d命令类似

    T命令执行一条机器指令:先修改CS、IP

    A命令以汇编指令格式在内存中写入一条机器指令:-a 起始地址

  • 相关阅读:
    Ubuntu安装pyaudio找不到python.h的问题
    使用Django根据已有数据库生成models.py文件
    Ubuntu 16.04 安装MySQL
    Pycharm连接Github
    python中str内置函数isdigit、isdecimal、isnumeric的区别
    Python函数详解
    python递归详解+汉诺塔小案例
    Windows中git使用教程
    win10安装VirtualBox+使用
    AWK如何打印从某一列到最后一列的内容
  • 原文地址:https://www.cnblogs.com/547hh/p/9859370.html
Copyright © 2020-2023  润新知