一、计算机组成
计算机由运算器、控制器、存储器、输入设备、输出设备组成。
1. 运算器:
a. 由算术逻辑单元ALU(arithmetic logic unit)、累加器、状态寄存器、通用寄存器组等构成
b. 运算器的操作和操作种类由控制器决定
c. 运算器处理的数据来自存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中
d. 和控制器共同组成CPU
2. 控制器:
a. 负责从存储器中取出指令,并对指令进行译码;根据指令的要求,按时间的先后顺序,负责向其它各部件发出控制信号,保证各部件协调一致地工作,一步一步地完成各种操作。
b. 由指令寄存器IR(InstructionRegister)、程序计数器PC(ProgramCounter)、操作控制器0C(OperationController)和译码器等部件组成。
3. 存储器:分为外存和内存
4. 输入设备:键盘、鼠标等
5. 输出设备:显示器、耳机等
二、 寄存器
8086有14个16位寄存器,类别是通用寄存器、指令指针、标志寄存器、段寄存器。
1. 通用寄存器:分为数据寄存器(4个)和指针寄存器及变址寄存器(4个)两组
a. 数据寄存器又分为:
AH&AL=AX(accumulator register):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据
BH&BL=BX(base register):基址寄存器,常用于地址索引
CH&CL=CX(counter register):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器
DH&DL=DX(data register):数据寄存器,常用于数据传递
b. 指针寄存器和变址寄存器包括:
SP(stack pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置
BP(base pointer):基址指针寄存器,可用作SS的一个相对基址位置
SI(source index):源变址寄存器可用来存放相对于DS段之源变址指针
DI(destination index): 目的变址寄存器,可用来存放相对于 ES 段之目的变址指针
2. 指令指针:指令指针IP(instruction pointer)是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动加1,指向下一个指令字节。注意,IP指向的是指令地址的段内地址偏移量,又称偏移地址(Offset Address)或有效地址(EA,Effective Address)。
3. 标志寄存器:8086有一个18位的标志寄存器FR,在FR中有意义的有9位,其中6位是状态位,3位是控制位。
OF
DF
IF
TF
SF
ZF:零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。
AF
PF
CF
4. 段寄存器:为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器 CS,DS,SS 来指向这些起始位置。
CS(code segment):代码段寄存器
DS(data segment):数据段寄存器
SS(stack segment):堆栈段寄存器
ES(extra segment):附加段寄存器