寄存器
CPU是由运算器、控制器、寄存器等器件构成,他们依靠内部总线连接。
- 运算器进行信息处理:
- 寄存器进行信息存储;
- 控制器控制各种器件进行工作;
- 内部总线连接各种器件,在它们之间进行数据的传送。
寄存器是程序员可以使用指令读写的器件,我们通过控制寄存器控制CPU
1 通用寄存器
8086CPU所有的寄存器都是16位的。可以存放2个字节。AX 、BX 、CX、DX 这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RW0lvMjR-1670244555041)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204152234335.png)]](https://img-blog.csdnimg.cn/85817608ac964818a6245969101ec492.png)
8086CPU 的上一代CPU 中的寄存器都是8 位的,为了保证兼容,使原来基于上代CPU 编写的程序稍加修改就可以运行在8086 之上, 8086CPU 的AX 、BX 、CX 、DX 这4个寄存器都可分为两个可独立使用的8 位寄存器来用:
- AX 可分为AH 和AL
- BX 可分为BH 和BL
- CX 可分为CH 和CL
- DX 可分为DH 和DL
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUpFEzZ9-1670244555042)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204152332865.png)]](https://img-blog.csdnimg.cn/0b2a1a9616d34098ba913f42d124e236.png)
字在寄存器的存储
出于对兼容性的考虑, 8086CPU 可以一次性处理以下两种尺寸的数据。
- 字节:记为byte , 一个字节由8 个bit 组成,可以存在8 位寄存器中。
- 字:记为word, 1个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节
2 物理地址
2.1 16位结构的CPU
16位CPU说明具有以下特性:
- 运算器一次最多处理16位数据
- 寄存器最大宽度是16位
- 寄存器和运算器的通路最大是16位
2.2 8086CPU给出物理地址的方法
8086CPU 有20 位地址总线,可以传送20 位地址,达到l1MB 寻址能力。8086CPU 又是16 位结构,在内部一次性处理、传输、暂时存储的地址为16 位。从8086CPU 的内部结构来看,如果将地址从内部简单地发出,那么它只能送出16 位的地址,表现出的寻址能力只有64KB 。
不要混淆:20位是用来确定存储单元的地址的,2的20次方就是可以寻找多少个B,而不是多少个b
8086CPU 采用一种在内部用两个16 位地址合成的方法来形成一个20 位的物理地址。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETP79KFQ-1670244555042)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204154141380.png)]](https://img-blog.csdnimg.cn/e04aabe9623c4c06a86110b0424df1cd.png)
地址加法器采用物理地址=段地址×16+偏移地址的方法用段地址和偏移地址合成物理地址
2.3 物理地址的本质含义
CPU 在访问内存时,用一个基础地址(段地址× 16)和一个相对于基础地址的偏移地址相力日,给出内存单元的物理地址。
段的划分来自于CPU ,由于8086CPU 用“基础地址(段地址xl6)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。我们可以认为:地址lOOOOH~ IOOFFH 的内存单元组成一个段,该段的起始地址(基础地址)lOOOOH,段地址为lOOOH ,大小为lOOH :我们也可以认为地址lOOOOH~ 1007FH, I 0080H~ lOOFFH 的内有单元组成两个段,它们的起始地址(基础地址)为: lOOOOH 和10080H ,段地址为: lOOOH 和1008H,大小都为80H 。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXd1d1z8-1670244555042)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204154359472.png)]](https://img-blog.csdnimg.cn/3480bf86c4e14779a1e1387d302b94a7.png)
2.4 CS和IP
CS是代码段寄存器,IP是指令指针寄存器。8086 机中,任意时刻, CPU 将CS:IP 指向的内容当作指令执行。
“jmp 段地址:偏移地址”指令的功能为: 用指令中给出的段地址修改c s ,偏移地址修改IP 。
3 汇编编程基础
Debug 是DOS 、Windows 都提供的实模式(8086 方式)程序的调试工具。使用它,可以查看CPU 各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
3.1 R命令
可以使用R命令查看全部寄存器的值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KZ8MW5Lh-1670244555043)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204155044621.png)]](https://img-blog.csdnimg.cn/85d8eeaaad7c40599451ebea0a4e256a.png)
也可以使用R命令修改某个寄存器的值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-agKT6C3v-1670244555043)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204155205082.png)]](https://img-blog.csdnimg.cn/a11811d2b7d04c3e90cdc256d99e2912.png)
3.2 D命令
使用D命令查看内存中的值
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ipLAcSv4-1670244555044)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204155327221.png)]](https://img-blog.csdnimg.cn/3a7ac2530b464e808d4b54f1da58795b.png)
3.3 E命令
使用E命令修改内存中的值

3.4 U命令和T命令
U命令用来将指定位置的机器码翻译为汇编指令
T命令执行当前指令
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RIZXbg0Q-1670244555045)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221204155834094.png)]](https://img-blog.csdnimg.cn/cc96c472ff4947f680827d8514b2dcdc.png)
3.5 A命令
A命令将以汇编指令的形式将内存中保存机器码
翻译为汇编指令
T命令执行当前指令

![[附源码]Python计算机毕业设计Django社区住户信息管理系统](https://img-blog.csdnimg.cn/097f6469c1e5432b855ab5c8153d95aa.png)




![[附源码]JAVA毕业设计流行病调查平台(系统+LW)](https://img-blog.csdnimg.cn/dff8c562a06c4b20b3ba206960130c4a.png)





![[附源码]JAVA毕业设计楼宇管理系统(系统+LW)](https://img-blog.csdnimg.cn/358a480986c54203bf2c293d13151b04.png)






