cpu架构
单元
- 运算单元
- 运算工厂。源数据从数据单元获取,运算完成后输出回数据单元。运算逻辑从控制单元获取。
- 数据单元
- 数据寄存器和数据缓存集合,避免每次从内存获取数据设置的cache。通过数据总线与内存读写交互。
- 控制单元
- 通过地址/数据指针指向当前运行程序的地址段/数据段,主要功能是指令解析。
总线
- 数据总线
- 位数越高代表一次能获取的数据位数越多。
- 地址总线
- 位数越高代表寻址范围越大,平时说的20位(8086),32位(80386)都是说的地址总线位数。
- 控制总线
- 传输控制信令。
经典8086 寄存器组成
-
控制单元
- CS
- 代码段寄存器,指向当前运行进程内存中的代码段。
- DS
- 数据段寄存器,指向当前运行进程内存中的数据段。
- SS
- 堆栈段寄存器
- ES
- 拓展段寄存器
- IP
- 代码段偏移量,由CS中取出的地址左移4位 + 本寄存器的偏移,总线共20位,最大可寻址1M。当然个人理解,CS中的地址左移动16位置,刚好能体现8086最大的页64K(16位)
- CS
-
数据单元
- AX
- BX
- CX
- DX
- SP
- BP
- SI
- DI
实模式和保护模式
- 不同模式实际上是指CPU和OS约定好以何种方式使用寄存器
- 实模式
- CPU控制单元寄存器中存的是内存中的实际地址,因为8086定下了架构,所以实模式下能访问的最大内存是1M。
- 保护模式
- CPU控制单元寄存器中的内容改为选择子,根据GDT,LDT表查找内存。简单点说是加了一个中间层。
https://www.cnblogs.com/chenwb89/p/operating_system_003.html
一些常用汇编命令
- mov
- call
- jmp
- int
- ret
- add
- or
- xor
- shl
- shr
- push
- pop
- inc
- dec
- sub
- cmp