• 关于寄存器的总结


       本章学习围绕寄存器展开,学习了CPU概述、通用寄存器、字在寄存器中的存放、汇编指令: mov, add、8086给出物理地址的方法、段寄存器CS和指令指针寄存器IP这几个知识点。以下我便逐个写出我认为该知识点中的值得注意的地方。

    1、CPU中有字长与位宽两个概念,字长表示CPU在单位时间内能一次处理的二进制位数。该指标反映出CPU内部运算处理的速度。位宽表示CPU通过外部数据总线与内存之间一次能够传送的数据位。我们常说的x位寄存器其实指的便是CPU的字长。

    2、8086CPU的14个寄存器中只有AX、BX、CX、DX这四个通用寄存器可拆分为高八位和低八位两个寄存器.。

    3、在mov和add指令中,两个操作对象的位数应一致。也就是说执行指令之前数据位数不可高于寄存器位数,而执行指令之后可以(高于部分将被舍去)。如add 案例,100H便是一条错误的语句。

    4、每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。而8086结构表现物理地址时会出现障碍,因为8086内部的寄存器都是16位的,而外部地址总线宽度为20位。也就是说8086存只能存16位(64KB),传却能传20位(1MB)。为了解决这一问题8086CPU采用了用两个16位地址合成一个20位的物理地址的方法,方法公式如下:

                      基础地址(段地址*16)+偏移地址=物理地址

    值得注意的是,段只是一个逻辑上的概念,同一个物理地址可以拆分为多个不同的段地址和偏移地址的组合,可以根据需要,将地址连续、起始物理地址为16倍数的一组内存单元(不超过64KB)当作一个段使用。

    5、段地址*16还有一个更常用的说法是左移四位,此处的位数指的是二进制位数。一个数值的二进制形式左移N位,相当于该数据乘以2的N次方。一个X进制的数据左移1位,相当于乘以X。故而二进制左移4位其实就是十六进制左移一位。举例:20H的数据乘以16后便会变成200H。

    6、CS是代码段段寄存器,用于存放代码段的段地址。IP是指令指针寄存器,用于存放CPU将要读取的指令在代码段中的偏移地址。CS:IP对应的物理地址存放的是CPU将要读取的指令。CS和IP在总是成对出现,(CS) × 16 + (IP)  = 指令的物理地址

    7、计算机的工作过程有如下三个步骤:

    第1步: CPU基于CS:IP,计算出物理地址,然后到相应的内存单元读取指令,送到指令缓冲区。

    第2步: CPU自动修改IP的值,IP = IP + 所读取指令的长度,从而为下一条指令读取做准备;

    第3步: 执行指令。 转第1步,重复此过程。

    8、在CPU刚开始工作时,CS和IP被设置为CS=FFFFH,IP=0000H。若需指定CS和IP的值,则用指令cmp修改其二者内容。

    (1) 同时修改CS、IP的内容:jmp   段地址: 偏移地址

        (2) 只修改IP的内容:jmp   某一合法寄存器(注意此处需要用一寄存器来对IP赋值,不可直接将数据传给IP)

    关于课前做的quiz我有一个小提议,希望能多给我们一些时间。每次做题总感觉很仓促,来不及思考便要开始下一题,导致很多会做的题目做错。

  • 相关阅读:
    DC(四)——笔试题
    验证&system verilog笔试题
    Centos和redhat6.0后关于虚拟机克隆后无法启用网卡问题
    搭建 CentOS 6 服务器(1)
    搭建 CentOS 6 服务器(16)
    搭建 CentOS 6 服务器(14)
    搭建 CentOS 6 服务器(15)
    搭建 CentOS 6 服务器
    搭建 CentOS 6 服务器(2)
    搭建 CentOS 6 服务器(3)
  • 原文地址:https://www.cnblogs.com/wlxnw/p/9785663.html
Copyright © 2020-2023  润新知