第二章 寄存器(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、出现彩色图案。