8086CPU的基本理论
基础理论部分
数制码制:
1. 有符号二进制数的补码表示:
正数的补码是它本身,负数的补码是它绝对值的原码所有位取反再加一。
对一个有符号数,连续求两次补码还是得到原数。
2. 运算和溢出:
有符号数以补码表示时可以直接运算,运算之后的结果任是一个用补码表示的数。
两个数想减的时候计算过程是用前一个数加上后一个数的补码。
溢出的类型(若相减则变为补码相加):
-
两个正数相加,超过上限溢出成负数:次高位相加形成进位,而最高位(符号位)相加没有进位;
-
两个负数相加,超出下限溢出为正数:次高位相加没有形成进位,而最高位(符号位)相加进位。
-
OF 溢出标志位可以来源于最高位和次高位是否进位(借位)标志的异或。
3. 某些特殊的ASCII码值需要记住:
-
‘0’-‘9’ : 30h-39h
-
‘A’-‘Z’ : 41h-5ah
-
‘a’-‘z’ : 61h-7ah
-
空格(space): 20h
-
回车(enter) : 0dh
-
换行(LF): 0ah
8086基本结构
1. 外部结构:
双列直插式封装,40个引脚,16条数据线、20条地址线、16条控制线。
微处理器级总线:数据总线、地址总线、控制总线。
外部需要配置存储器(20位地址编址,可寻址1M)和I/O接口(低16位地址线编址,可寻址64K)。
8086对外部存储器和I/O接口采用独立的地址空间。
2. 寄存器组织:
通用寄存器:
-
累加器AX(AH、AL)
-
基址寄存器BX(BH、BL)(经常用作[BX]存储器间接寻址)
-
计数寄存器CX(CH、CL)(循环的默认循环次数)
-
数据寄存器DX(DH、DL)(经常用作I/O端口间接寻址)
地址寄存器:
-
源变址寄存器SI(字符串操作指令中提供源串EA)
-
目的变址寄存器DI(字符串操作指令中提供目的串EA)
-
堆栈指针SP(不能他用,默认SEG为堆栈段,保存堆栈段的EA)
-
基址指针BP(默认SEG为堆栈段,辅助堆栈操作)
段寄存器:
-
代码段SS(EA为IP提供)
-
数据段DS(EA为任意可用寄存器)
-
堆栈段SS(EA为SP或者BP)
-
附加段ES(EA为任意可用寄存器)
控制寄存器:
-
指令指针IP(也叫程序计数器PC)
-
状态字PSW
3. 内部结构和功能结构:
内部结构包括:算数逻辑单元ALU、工作寄存器、控制器、I/O控制逻辑。
两个控制寄存器IP、PSW和堆栈指针SP属于控制器部分,其他寄存器属于工作寄存器部分
功能结构包括:
-
执行单元(EU):执行指令规定的操作
-
总线接口单元(BIU):取指令、存取数据
4. PSW的各位的含义:
5. 物理地址的形成:
-
字的对准和未对准:一个字从偶地址开始时则该字是对准的,否则是未对准;存取对准字需要一个总线周期,存取未对准字需要两个总线周期。
-
逻辑地址表示为(段地址:偏移地址),每个段起始点地址(其高16位即为段地址)必须能被16整除,每个段最多可以有64KB空间。
-
由逻辑地址计算物理地址: