过多的废话就不多说了,只把每次的课程笔记整理一下,可能比较繁琐,但希望一来可以加深记忆,二是可以方便日后复习。
1.cpu对设备的读写
在学习这个问题之前,我们先了解一个问题:“程序是如何运行的呢?(运行程序的先决条件)”
答案:首先找到程序的位置,然后通过某种途径把程序输送给cpu执行。在这里,整个主板是通过地址总线、数据总线、控制总线 来进行交互
接下来了解cpu是如何通过这些总线来进行交互。
- 1.cpu必须找到程序在内存中的具体位置,通过cpu与内存之间的地址总线。
- 2.找到地址之后,通过cpu与内存之间的数据总线传递给cpu执行。
- 3.cpu控制外围设备的通道,控制总线。
8086 CPU 有20根地址总线,从cpu连接到内存单元,寻址范围就是2的20次方=1MB
数据传送示意:
地址总线从cpu到内存把地址传送给内存,找到内存中的数据,然后通过数据总线,再把数据传输给cpu,此时通过控制总线告诉内存进行读和写操作。
总线的宽度:cpu有多少根线连接到内存中。或者说地址总线有多少条。
什么是cpu寻址能力?地址总线有多少条就决定了cpu最大的内存使用量。
cpu内部是由以下部件组成:寄存器,存放数据的仓库;运算器,对数据进行运算;控制器,用来控制各个器件的运行、内部总线连接各种器件,在他们之间进行数据传输
2.寄存器的概念 (重点)以及寄存器的作用
寄存器就是用来存放cpu要执行的数据或者指令
寄存器分为通用寄存器和段寄存器
下面我们以8086CPU为例了解cpu寄存器:
AX寄存器 (通过寄存器、专门存放数据库的仓库)
分为AH AL,其中,AH表示高位寄存器、AL表示低位寄存器、AX寄存器有两个字节 有16位二进制。
如果对二进制进行组织呢?
- 字节:用8个二进制数表示一个字节
- 字:用两个字节表示一个字,即16个二进制表示
- 双子:用两个字表示,即32个二进制数
3.段地址和偏移地址 (重点)
物理地址的表示方法:以下以8086cpu为例:
8086主板地址线20根要进行寻址必须一次传20位二进制数,但CPU最大一次只能传16个二进制位,如何解决?
引入“地址加法器”概念
234+23?xxxx
234*10+23
234成为基地址,23表示偏移地址。
内存地址的表示方法:
- 基地址:偏移地址=实际内存地址
- 实际内存地址=基地址*16+偏移地址
具体例子:
1402:100 cpu表示物理内存的方式:
1402H*16+0100=14120H
16进制一般用四位表示
14020
+0100=
14120
debug
-d 查看物理内存信息
段概念:
- 10000H 转换为内存地址:1000H:0000
- 1007FH 转换为内存地址:1007H:000F
- 10000H-1007FH 这样组成一个段。
这里引出,段寄存器就是专门存放基地址的。