汇编语言(一)

CPU的组成

  • 运算器进行信息处理;
  • 寄存器进行信息存储;
  • 控制器协调各种器件进行工作;
  • 内部总线实现CPU内各个器件之间的联系。

8086上一代CPU的寄存器是八位的,那如何保证兼容性呢?

把16位寄存器分成AHAL两个独立的8位寄存器使用;
同样,32位或64位的寄存器也可以分,从而实现兼容性。
比如AX中现在存储0101010110101010,可以分为AH01010101和AL10101010来存储

汇编指令

汇编指令 控制CPU完成的操作

  • mov ax,18 将18送入AX
  • mov ah,78 将78送入AH
  • add ax,8 将AX中的值和8相加并把值存入AX
  • mov ax,bx 将BX中的值赋值给AX
  • add ax,bx 将AX和BX中的内容相加并把值存于AX
    注意:汇编指令不区分大小写,MOV也行

在进行低八位运算的时候,比如最后一行85+93,结果等于158,但发生了溢出,只能显示58,1舍弃而不是进位到高位。

物理地址

每一个内存单元在存储空间中都有唯一的位置。8086CPU有20位地址总线,可传送20位地址,寻址能力为1MB(2的20次方)。8086是16位的CPU,16位地址表示的是地址总线的宽度,即CPU可以直接访问的地址范围。如果地址总线是16位,那么可表示的地址数量为2的十六次方=65536个字节(即 64KB)。这意味着 CPU 最多只能寻址 64KB 的内存空间。
使用地址加法器将两个16位地址合成一个20位的物理地址。一个叫做段地址,另一个叫做偏移地址
段地址✖16 + 偏移地址 = 物理地址,也称之为左移四位(二进制中),在十六进制里左移1位即可。
最后得到的20位物理地址被地址总线传送到存储器里。
描述存储单元的方法(物理地址为21F60H,段地址为2000H,则偏移地址为1F60H)

  • 数据存放在内存2000:1F60单元中
  • 数据存放在内存的2000段中的1F60H中