第2章 寄存器 笔记

P14 8086CPU有14个寄存器,每个寄存器有一个名称。这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
       8086CPU的所有寄存器都是16位的,可以存放两个字节。
       8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个可独立使用的8位寄存器来用。
P16 处于兼容性的考虑,8086CPU可以一次性处理以下两种尺寸的数据:1.字节byte;2.字word。
P17 在以后的课程中,为了区分不同的进制,在十六进制表示的数据的后面加H,在二进制表示的数据后面加B,十进制表示的数据后面什么也不加。 
       在写一条汇编指令或一个寄存器的名称时不区分大小写。
P19 在进行数据传送或运算时,要注意指令的两个操作数对象的位数应当是一致的。
P20 我们知道,CPU访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间。每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址成为物理地址。
       概括的讲,16位结构的CPU表示一个CPU具有下面几方面的结构特性:1.运算器一次最多可处理16位的数据;2.寄存器的最大宽度为16位;8.寄存器和运算器之间的通路为16位。
       8086CPU有20位地址总线,可以传送20位地址,达到1MB的寻址能力。
       内存单元的地址在送上地址总线之前,必须要在CPU中处理、传输、暂时存放,但对于8086来说,它是16位的CPU,能够一次性处理、传输、暂时存储的信息的最大长度是16位的,在8086内部一次性处理、传输、暂存的地址为16位。这里面就有个矛盾了。Intel公司的工程师通过使用一种巧妙的机制解决了这个问题。他们设计8086芯片时,在8086芯片内部用两个16位地址合成的方法来形成一个20位的物理地址。
P21 地址加法器采用物理地址=段地址*16+偏移地址的方法用段地址和偏移地址合成物理地址。
P22 “段地址*16+偏移地址=物理地址”的本质含义是:CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,得到内存单元的物理地址。
      更一般地说,8086CPU的这种寻址功能是“基础地址+偏移地址=物理地址”寻址模式的一种具体实现方案。
P24 以后,可以在编程时根据需要,将若干地址连续的内存单元看作一个段,用段地址*16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。有两点需要注意:段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16为,16位地址的寻址能力为64KB,所以一个段的最大长度为64KB。
       CPU访问内存单元时,必须向内存提供内存单元的物理地址。8086CPU在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。
P25 CPU可以用不同的段地址和偏移地址形成同一个物理地址。
       段地址在8086CPU的段寄存器中存放。8086CPU有4个段寄存器:CS、DS、ES、SS。当8086CPU要访问内存时由这4个段寄存器提供内存单元的段地址。
       8086机中,任何时刻,CPU将CS:IP指向的内容当作指令执行
P32 我们在第一章中讲过,在内存中,指令和数据没有任何区别,都是二进制信息,CPU在工作的时候把有的信息看作指令,有的信息看作数据。现在,如果提出一个问题:CPU根据什么将内存中的信息看作指令?如何回答?我们可以说,CPU将CS:IP指向的内存单元中的内容看作指令,因为,在任何时候,CPU将CS、IP中的内容当做指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码,执行。如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。
       能够修改CS、IP的内容的指令被统称为转移指令。
P32、P35 8086CPU的工作过程如下:
      (1) 从CS:IP指向的内存单元中读取指令,读取的指令进入指令缓冲区;
      (2) IP=IP+所读取指令的长度,从而指向下一条指令;
      (3) 执行指令,转到步骤(1),重复这个过程。
P45 使用debug调试工具时的一些命令:
      查看、修改CPU中寄存器的内容:R命令
      查看内存中的内容:D命令
      修改内存中的内容:E命令
      将内存中的内容解释为机器指令和对应的汇编指令:U命令
      执行CS:IP指向的内存单元处的命令:T命令
      以汇编指令的方式向内存中写入指令:A命令
      退出debug:Q命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值