汇编语言-基础

基础知识

概念

  • 总线: 就是一根根导线的集合
  • 地址总线的宽度: 宽度决定CPU寻址能力, 宽度为N, 这样的CUP最多可以寻找2的N次方个内存单元
  • 控制总线: 是一些不同控制线的集合, 控制总线的宽度决定了CPU对外部器件的控制能力

寄存器

一个16位寄存器可以分为两个8位寄存器

  • word, 一个字由两个字节组成, 这两个字分别称为高位字和低位字
  • `mov ax, 18’: send 18 to ax
  • mov ax, bx: send bx to ax
  • add ax, 18: add 18 to ax
  • add 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命令一汇编指令的格式在内存中写入一条机器指令