1、基础概念
寄存器:嵌入到CPU中的内存,也可以理解为CPU里面的存储器,一个CPU有多个寄存器;
总线:连接CPU和其它芯片的导线;
总线在物理上:是一根根导线的集合;逻辑上分为:地址总线、数据总线、控制总线
地址总线:CPU通过地址总线来指定存储单元的。根据地址总线的根数来确定最大的寻址;
数据总线:CPU与内存或其它器件的数据传送;数据总线的宽度决定了CPU和外界数据的传送速度;
控制总线:用来控制外部器件;无非就是读/写;
CPU可以直接使用的信息在存储器中存放;
总结:地址总线决定CPU的寻址能力;数据总线决定一次数据传送量;控制总线决定CPU对其它器件的控制能力;
主板上有核心器件和主要器件(他们通过地址、数据、控制)总线来连接;接口卡;
存储器:(1)、读写属性分:随机存储器(RAM)、只读存储器(ROM);
(2)、功能上分类:随机存储器(RAM)、装有BIOS的ROM、接口卡上的RAM;
BIOS:主板、网卡、显卡、接口卡上都有的软件系统,通过这个可以对该硬件设备进行最基本的输入输出,
内存地址空间:最终运行程序的是CPU,所以用汇编编程的时候,必须要从CPU的角度来考虑问题;
计算机内部都是从0开始的;
任何的指令、命令、数据,在计算机中都为二进制;
2、CPU的内部工作原理
CPU由运算器、控制器、寄存器等组成;
8086CPU有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。
8086CPU所有的寄存器都是16位的,可以存放2个字节;
AX、BX、CX、DX通常用来存放一般性数据,所以被称为通用寄存器;
AX可以分为:AH和AL;分高8位和低8位;BX、CX、DX也一样分高低位;
为什么划分:为了兼容以前8位寄存器;
AX寄存器模型:
AH和AL寄存器是可以独立使用的8位寄存器;
3、汇编指令
一个字可以存在一个16位的寄存器中,word = 2B;
add ax, bx :将AX,BX中的内容相加,结果放到AX中;
物理地址:CPU访问内存时要给出内存单元的地址,内存是一维、线性的连续空间;
4、16位的CPU怎么理解
(1)、运算器(ALU)一次最多可以处理16位的数据;
(2)、寄存器的最大宽度为16位;
(3)、寄存器和运算器之间的通路是16位的;
5、地址加法器
8086有20位的地址总线,可传送20位地址,寻址能力1M;但是内部为16位的结构,表现寻址能力却只有64k;
原因:地址加法器合成物理地址的方法:物理地址 = 段地址*16+偏移地址(将2个16位的地址合成物理地址)
对段地址*16的理解:就是数据左移4位(对二进制);
可以得到一个规律:一个数据的X进制左移1位,相当于乘以X。
6、段
本质:内存并没有分段,段的划分来自CPU,我们自己通过(段地址*16)+偏移地址来得到内存单元的物理地址,这才使得我们用分段的方式来管理内存。
(1)、一个段的起始地址一定是16的倍数;
(2)、一个段的最大长度为64K。
结论:CPU可以用不同的段地址和偏移地址来形成同一个物理地址。
7、段寄存器
(1)、段寄存器就是提供段地址的。
(2)、8086CPU有4个段寄存器:CS、DS、SS、ES;当8086要访问内存时,由这4个段寄存器提供内存单元的段地址。
CS:代码段寄存器;
DS:数据段寄存器;
SS:堆栈段寄存器;
ES:附加段寄存器;
8、CS和IP
(1)、CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。
CS:代码段寄存器;IP:指令指针寄存器(偏移地址的寄存器);
此时,8086PC工作过程简要:
i>、从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
ii>、IP = IP + 所读取指令的长度,从而指向下一条指令;(任务:索引到下一条指令)
iii>、读取指令,一次这样执行工作;
(2)、8086PC工作过程
:在8086CPU加电启动或复位后(就是CPU刚开始工作时,)CS=FFFFH, IP=0000H。
即刚启动时,CPU从内存FFFF0H单元读取指令执行。
FFFF0H单元中的指令是8086开机执行的第一条指令。
(3)、任何时候,CPU将CS、IP中的内容都当做指令的段地址和偏移地址,用他们来合成指令的物理地址,到内存中读取指令码执行。
可以这么理解:内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。
(4)、可以修改CS:IP中的值来控制CPU的执行目标指令的地址。用jmp来修改段地址和偏移地址;如:jmp 2AE3:3
9、代码段
存放代码的地方,CPU不认识代码段,怎么执行这里的代码呢?
CPU只认被CS:IP指向的内存单元中的内容为指令;
8086机器上,任意时刻,CPU将CS:IP指向的内容当作指令执行;
10、Debug汇编调试器
在winxp系统上,cmd–>debug进入即可(不区分大小写的)。
(1)、常用命令:
R:查看、改变CPU寄存器的内容;
D:查看内存中的内容;
E:改写内存中的内容;
U:将内存中的机器指令翻译成汇编指令;
T:执行一条机器指令;
A:以汇编指令的格式在内存中写入一条机器指令。
截图:
debug中的命令还的多加练习,熟悉即可!!!
来源:CSDN
作者:qq_43592587
链接:https://blog.csdn.net/qq_43592587/article/details/104450411