基础知识
概念
- 总线: 就是一根根导线的集合
- 地址总线的宽度: 宽度决定CPU寻址能力, 宽度为N, 这样的CUP最多可以寻找2的N次方个内存单元
- 控制总线: 是一些不同控制线的集合, 控制总线的宽度决定了CPU对外部器件的控制能力
寄存器
一个16位寄存器可以分为两个8位寄存器
- word, 一个字由两个字节组成, 这两个字分别称为高位字和低位字
- `mov ax, 18’: send 18 to ax
mov ax, bx: send bx to axadd ax, 18: add 18 to axadd ax, bx: add bx to ax
物理地址
每个内存单元在一维线性空间中的地址就是物理地址
16位CPU
- 运算器一次最多可以处理16位的数据
- 寄存器最大宽度位16位
- 寄存器和运算器之间的通路位16位
8086CPU寻址方法
8086CPU有20位地址总线, 可以传输20位地址, 但是它又是16位的, 所以它只能寻址2的16次方个内存单元, 因此它采用两个16位地址通过地址加法器来合成20位的地址
物理地址= 短地址 $\times$ 16 + 偏移地址
此外CPU可以通过不同的短地址和偏移地址合成同一个物理地址
段寄存器
CS和IP位指令指针寄存器, CPU将CS:IP指向的内容当作指令执行, 所有CPU执行的指令都需要被这两个寄存器指向
jmp指令
jmp ax: 用ax中的值去修改IP的值
Debug的使用
- Debug用R命令查看, 改变CPU寄存器的内容
- 用D命令查看内存中的内容
- 用E命令修改内存中的内容
- 用T命令执行一条机器指令
- 用U命令将内存中的机器指令翻译成汇编指令
- 用A命令一汇编指令的格式在内存中写入一条机器指令