|
楼主 |
发表于 2016-3-22 00:39:37
|
显示全部楼层
第2章 寄存器【1】
1、内部总线:CPU内部各个器件之间的联系。外部总线:CPU和主板上其他器件的联系。
2、CPU内部:运算器进行信息处理;寄存器进行信息储存;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据的传送。
3、8086CPU有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW
4、通用寄存器:AX,BX,CX,DX。这4个寄存器都是16位的,每个寄存器均可分为两个独立的8位寄存器来用。
AX:AH、AL;
BX:BH、BL;
CX:CH、CL;
DX:DH、DL。
5、1个字节可以存储在8位寄存器中;1个字可以存储在16位寄存器中,高位字节放寄存器的高8位;低位字节放寄存器低8位。
6、mov指令是传送8位还是传送16位,是根据操作数里的寄存器位数来决定的。如果操作数里涉及的寄存器是8位,则传送1个字节,如果操作数里涉及的寄存器是16位的,则传送1个字。同样ADD指令也是一样。
7、如果CPU要访问某个内存单元,必须知道它的物理地址,对CPU来说,所有的内存(电脑里各种各样的内存,不仅仅指内存条的那个内存)集合起来构成一个线性空间(CPU看到的是一个线性空间),每一个内存单元在这个线性空间中都有唯一的地址,这个地址叫做物理地址。
8、16位8086CPU的特点:
(1)运算器一次最多可以处理16位的数据;
(2)寄存器的最大宽度为16位;
(3)寄存器和运算器之间的通路为16位。
9、8086CPU的地址总线有20位,有1MB的寻址能力,但是CPU结构又是16位的,如果不做其他处理的话,CPU能寻址的空间只有64KB,其他1MB-64KB的空间CPU根本就看不到,这将造成极大的浪费。如何才能让CPU能够寻址1MB空间呢?
(1)8086CPU采用在内部用两个16位地址合成的方法形成一个20位的物理地址。具体表现为用地址加法器来进行合成。
(2)这两个16位地址中,一个叫做段地址,一个叫做偏移地址。
(3)最终:物理地址=段地址X16+偏移地址。段地址X16的实际表现位16位物理地址左移1位。
10、“段”的概念,内存并没有在物理上划分为一个一个的段,这里说的段,实际上的CPU在寻址时在逻辑上进行的划分。可以根据需要,将地址连续、起始地址为16的倍数、最大不超过64KB的一组内存单元定义为一个段。
第2章 寄存器【2】
11、段寄存器:8086CPU有4个段寄存器,分别是CS、DS、SS、ES。
12、CS和IP:CS为代码段寄存器,IP为指令指针寄存器。任意时刻,CPU将CS:IP指向的内容当作指令来执行。按照物理地址的计算方法,可以得知当前要执行的指令的地址位:CS * 16 + IP。要让CPU执行我们写的代码,必须把CS:IP指向我们编写的要执行的第一条指令的首地址(即代码第一条所存放的物理地址)。
13、8086CPU加电启动或复位后,CS被设置为FFFFH,IP被设置为0000H。因此8086PC机开机后执行的第一条指令的物理地址为FFFF0H。
14、JMP指令可以修改CS和IP,实际上就是跳转。实现方法为“JMP 段地址:偏移地址”,如果只是单独改变IP的值,可以采用“JMP 某一合法寄存器”的方法,该合法寄存器是指通用寄存器。
15、DEBUG的使用方法:
R: 查看、改变寄存器的内容:查看,直接输入R;改变寄存器数据:R 某寄存器
D: 查看内存中的内容
E: 改写内容中的内容
U:将内存中的机器指令翻译成汇编指令
T: 执行一条机器指令
A: 以汇编指令格式在内存写入一条机器指令;
P: 中断当前正在执行的程序。
|
|