1.8086与8088的区别
对内: 二者都是16位数据总线,20根地址总线,
对外: 8086CPU外部总线宽度为16位,8088外部总线宽度为8位
2.8086CPU结构
从功能上8086分为两部分,总线接口单元(BIU:bus interface unit) 和 指令执行单元(EU:execution unit),如图所示。
由8086CPU的内部结构框图可知CPU内部设置了许多寄存器,它可以用来存放运算过程中所需要的操作数、操作数的地址、中间结果及最后的运算结果,它的存取速度比存储器快许多。
8086与8088的内部寄存器完全一样。
2.1 数据寄存器
4个16位数据寄存器(可存数据或地址),也可以分成8个8位寄存器(此时只能用来存放8位数据,而不能存地址)使用.
- AX (accumulator 累加器) 是使用最频繁的寄存器,AX(AH和AL)在乘除法中也有专门的用途.
- BX (base 基址寄存器或基地址指针) 可用来存放偏移地址.
- CX (count 计数寄存器) 在循环时做计数器使用,用于控制循环程序的执行次数.
- DX (data 数据寄存器) 在乘除法和I/O操作时有专门的用途.
2.2 地址指针和变址寄存器
地址指针和变址寄存器加上BX基址寄存器,可以与段寄存器配合使用,一起构成内存的物理地址.
- SP (stack pointer 堆栈指针)
- BP (base pointer 基址指针)
SP与BP可以与SS(stack segment 堆栈段寄存器)联合使用,用于设置或访问堆栈段.
- SI (source index 源变址寄存器) 源地址
- DI (destination index 目的变址寄存器) 目标地址
SI和DI具有通用寄存器的功能,通过SI,DI以及基址寄存器BX,可以在内存中灵活寻找存储器操作数.
2.3 段寄存器
- CS 代码段寄存器
- DS 数据段寄存器
- SS 堆栈段寄存器
- ES 附加段寄存器
用来存放各段起始地址的高16位值,称为段基地址或段基址.段基地址与段内偏移地址offset 组合起来就可以形成20位物理地址.
2.4 指令指针
- IP(instruction pointer 指令指针)
用来存放将要执行的下一条指令在现在代码段中的偏移地址,与CS一起形成将要取出指令的物理地址.也就是说下一条指令的地址由CS:IP决定.
2.5 标志寄存器共16位
a. 状态标识6个
a) 符号标志 SF
b) 零标志 ZF
c) 奇偶标志 PF
d) 进位标志 CF (carry flag) 最高位有进位或借位则CF=1
e) 辅助进位标志 AF
f) 溢出标志 OF
b. 控制标志3个
a) 方向标志 DF
b) 中断允许标志 IF
c) 跟踪标志 TF
有符号有意义:ZF SF PF OF
无符号有意义:PF ZF CF AF
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/functions.php on line 1078
Warning: Undefined variable $robot_comments in /www/wwwroot/blog.moonlet.cn/wp-content/themes/Sakura/comments.php on line 97