第二章 寄存器(CPU工作原理)

1、8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。AX、BX、CX、DX通用寄存器。

2、8086CPU所有的寄存器都是16位的,可以存放两个字节。

3、几条汇编指令(汇编指令不区分大小写

4、al溢出不会进到ah里面,它们是两个单独的寄存器。进制位不能在8位寄存器中保存,但是CPU不会丢弃这个值。

检测点:老简单了。。

5、物理地址:CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,将这个唯一的地址称为物理地址。

6、16位结构描述了一个CPU具有特征:1.运算器一次最多可以处理16位的数据;2.寄存器的最大宽度为16位;3.寄存器和运算器之间的通路是16位的

7、8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址,通过地址加法器,方法:物理地址=段地址*16 + 偏移地址。(16进制数乘以16相当于向左移一位

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

注意两点:1.段地址*16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;2.偏移地址为16位,16位地址的寻址能力为64K,所以一个段的长度最大为64K。

内存单元地址小结:

1.CPU可以用不同的段地址和偏移地址形成同一个物理地址;

2.偏移地址16位,仅用偏移地址来寻址最多可寻址64K存储单元。

3.数据在21F60H内存单元中,对于8086PC机的两种描述:a数据存在内存2000:1F60单元中;(常用)b数据存在内存的2000段中的1F60H单元中。

 

9、段寄存器:段寄存器就是提供段地址的。8086CPU有4个段寄存器:CS(Code Segment)代码段寄存器、DS(Data Segment)数据段寄存器、SS(Stack Segment)堆栈段寄存器、ES(Extra Segment)附加段寄存器。

10、CS和IP是8086CPU中最关键的寄存器,他们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP(Instruction pointer)为指令指针寄存器。在任何时候CPU将CS、IP的内容当做指令的段地址和偏移地址,用他们合成指令的物理地址,到内存中读取指令码,执行。程序员可以通过改变CS、IP中的内容来控制CPU执行目标指令。

11、mov指令可以改变8086CPU大部分寄存器的值,被称为传送指令。

12、8086CPU提供了转移指令jmp来改变CS、IP的值。1.同时修改CS、IP的内容:jmp 段地址:偏移地址,例jmp 2AE3 : 3。2.仅修改IP的内容:jmp 合法寄存器,例jmp ax(类似于mov IP ax)。

13、CPU只认被CS:IP指向的内存单元中的内容为指令。

14、sub ax bx 将ax-bx的值保存在ax中

实验一:debug使用。查看CPU和内存,用机器指令和汇编指令。

R命令 查看、改变CPU寄存器的内容;

D命令 查看内存中的内容

E命令 改写内存中的内容

U命令 将内存中的机器指令翻译成汇编指令

T 命令 执行一条机器指令

A 命令 以汇编指令的格式在内存中写入一条机器指令。

3、查看PC主板日期:d fff0:0 ff。

4、出现彩色图案。

 

原文地址:https://www.cnblogs.com/quantumplan/p/2389543.html