寒假看B站小甲鱼视频的笔记二
CPU概述
一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。
内部总线和外部总线
内部总线
实现CPU内部各个器件之间的联系。
外部总线
实现CPU和主板上其他器件的联系。
寄存器概述
8086CPU有14个寄存器,其中有8个通用寄存器。
通用寄存器
8086CPU有14个寄存器,都是16位的,每个寄存器可以存放两个字节,即一个字。
什么是通用寄存器
AX、BX、CX、DX通常用来存放一般性数据,称为通用寄存器。
8086上一代CPU中的寄存器都是8位的,所以为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。
AX可以分为AH和AL,分别是高位和低位。其他三个通用寄存器同理。
如何兼容:AH都为0,单独拿个AL来用。
==兼容应该是指编写的在8位寄存器上运行的汇编代码可以在16位寄存器上运行吧?==
通用寄存器的结构
以AX为例
16位:从低地址到高地址分别是0-15。
16位数据在寄存器中的存放情况
数据 | 二进制表示 | 在寄存器AX中的存储 |
---|---|---|
18 | 10010 | 0000000000010010 |
20000 | 100111000100000 | 0100111000100000 |
一个16位寄存器所能存储的数据的最大值:2^16-1
字在寄存器中的存储
一个字是两个字节。
字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。
几条汇编指令
汇编指令不区分大小写!
汇编指令 | 高级语言描述 |
---|---|
mov ax,18 |
ax=18 |
add ax,bx |
ax=ax+bx |
在进行数据传送或运算时,要注意指令的两个操作对象的位数应该是一致的。
如果加法结果超出最大值,会存储低位,但多出来的位也没有扔掉。
AL也遵循上边的规则,多出来的位不会在AH里。
物理地址
所有的内存单元构成的存储空间是一个一维的线性空间。
CPU访问内存单元时要给出内存单元的地址。
这个唯一的地址就是物理地址。
16位结构的CPU
特征
运算器一次最多可以处理16位的数据。
寄存器的最大宽度为16位
寄存器和运算器之间的通路是16位的
8086地址加法器工作原理
物理地址=段地址*16+偏移地址
段地址*16 二进制表示的话 :段地址左移四位 十六进制表示的话 段地址左移一位
一个数的X进制左移n位,相当于乘以$X^n$。
段的概念
看P9吧,没看呢
作者:@臭咸鱼
转载请注明出处:https://chouxianyu.github.io
欢迎讨论和交流!