一个典型的CPU由运算器,控制器和寄存器几部分构成,这些器件靠内部总线连接。程序员可以通过修改寄存器的数据,来实现对CPU的控制。不同CPU的寄存器的结构,数量都不相同。8086CPU所有的寄存器都是16位的,可以存放两个字节。AX,BX,CX,DX这四个寄存器一般用来存放一般性数据,称为通用寄存器。
由于上一代CPU都是8位,出于兼容性考虑,将通用寄存器分为两个8位寄存器。如AX由AH和AL组成,例如:
在数据运算和传输的时候,操作对象位数应该一致。
由于8086CPU的地址总线有20位,而内部总线只有16位,8086CPU有一套独特的计算物理地址的方法,可以通过两次16位数据的传输加权算出20位的地理地址:
物理地址=段地址*16+偏移地址
乘以16是因为地址都是16进制计算,相当于让段地址左移一位,然后在这个基础上偏移。
低位字节存在低地址,高位字节存在高地址,起始地址为N的字单元简称N地址单元。
三者用法基本一致,具体情况如图:
段的划分来源于CPU,在编程时可将一段连续地址视为段。受16位寻址能力影响,段的最大长度位64KB(216B)。也由于段地址要乘一个16,所以段首地址必为16的倍数。这里要理解一下,记住这些话都是基于16进制而言,不要用十进制的思维去看待,比如2200H就是16的整数倍。