Operating System-操作系统的硬件环境
8086处理器的结构
8086处理器内部结构有两个功能模块,完成一条指令的取值和执行:
- 总线接口单元BIU,主要负责读取指令和操作数;
- 执行单元EU,主要负责指令译码和执行。
8086处理器的寄存器:
8个通用寄存器(以16位为例)
数据寄存器
AX:累加器(Accumulate Rerister),使用频度最高,用于算术、逻辑运算以及与外设传送信息等;
BX:基址寄存器(Base Rerister),常用做存放存储器地址;
- CX:计数器(Counter Rerister),作为循环和串操作等指令中的隐含计数器;
- DX:数据寄存器(Data Rerister),常用来存放双字长数据的高16位,或存放外设端口地址。
变址寄存器(常用于存储器寻址时提供地址)
- SI:源变址寄存器 (Source index)
- DI:目的变址寄存器(Destination index)
指针寄存器(用于寻址内存堆栈内的数据)
- SP:堆栈指针寄存器(Stack Pointer),指示栈顶的偏移地址
- BP:基址指针寄存器(Base Pointer),表示数据在堆栈段中的基地址
SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址
1个指令指针寄存器
指令指针寄存器IP,指示代码段中指令的偏移地址。它与代码段寄存器CS联用,确定下一条指令的物理地址
计算机通过CS : IP寄存器来控制指令序列的执行流程
IP寄存器是一个专用寄存器
1个标志寄存器
标志(Flag)用于反映指令执行结果或控制指令执行形式
8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)
程序设计需要利用标志的状态,比如C语言里的条件语句,if (a=b) {…}
1个段寄存器
32位通用寄存器
EAX EBX ECX EDX
ESI EDI EBP ESP
标志的分类:
状态标志
用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它
CF 对于无符号数运算,当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。Debug表示: CY(Carry) CF = 1; NC(No Carry) CF = 0
ZF若运算结果为0,则ZF = 1;否则ZF = 0.Debug表示: ZR(Zero) ZF = 1; NZ(No Zero) ZF = 0
SF 运算结果最高位为1,则SF = 1;否则SF = 0.Debug表示: NG(Negative) SF = 1; PL(Plus) SF = 0
PF
OF 对于有符号数运算,若算术运算的结果有溢出,则OF=1;否则 OF=0
Debug表示: OV(Overflow) OF = 1; NV(No Overflow) OF = 0
AF
控制标志
可由程序根据需要用指令设置,用于控制处理器执行指令的方式
- DF
- IF
- TF
Debug中对标志位不同状态的表示:
NV UP DI PL NZ NA PO NC 状态为 0
OV DN EI NG ZR AC PE CY 状态为 1
CPU五类指令:
- 访问存储器指令
处理器和存储器间数据传送
I/O指令
处理器和I/O模块间数据传送和命令发送
算数逻辑指令
执行数据算数和逻辑操作
控制转移指令
指定一个新的指令的执行起点
处理器控制指令
修改处理器状态,该边处理器工作方式。
数据信息的表达单位:
- 二进制位bit:存储一位二进制数,0或者1
- 字节Byte:8个二进制位,D7~D0
- 字Word:16位,2个字节,D15~D0
- 双字DWord:32位,4个字节,D31~D0
8086的寻址(数据存取)方式
立即数寻址方式
指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)
这种操作数被称为立即数imm
它可以是8位数值i8(00H~FFH)
也可以是16位数值i16(0000H~FFFFH)
立即数寻址方式常用来给寄存器赋值
寄存器寻址方式
操作数存放在CPU的内部寄存器reg中,可以是:
8位寄存器r8:
AH、AL、BH、BL、CH、CL、DH、DL
16位寄存器r16:
AX、BX、CX、DX、SI、DI、BP、SP
4个段寄存器seg:
CS、DS、SS、ES
存储器寻址方式
指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
直接寻址方式
有效地址在指令中直接给出
默认的段地址在DS段寄存器,可使用段超越前缀改变
MOV AX,[2000H]
;AX←DS:[2000H]
;指令代码:A10020
MOV AX,ES:[2000H]
;AX←ES:[2000H]
;指令代码:26A10020
寄存器间接寻址方式
有效地址存放在基址寄存器BX或变址寄存器SI、DI中
默认的段地址在DS段寄存器,可使用段超越前缀改变
MOV AX,[SI] ;AX←DS:[SI]
寄存器相对寻址方式
有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI
有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变.
寄存器相对寻址指令
MOV AX,[DI+06H]
;AX←DS:[DI+06H]
MOV AX,[BP+06H]
;AX←SS:[BP+06H]
基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变
相对基址变址寻址方式
有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:
有效地址=BX/BP+SI/DI+8/16位位移量
段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变
相对基址变址寻址指令
MOV AX,[BX+SI+06H]
;AX←DS:[BX+SI+06H]
中断机制
CPU暂停正在执行的程序,保留现场后自动转去执行相应事件的处理程序,处理完成后返回断点,继续执行被打断的程序。
特点:
1) 中断是随机的
2) 中断是可恢复的
3) 中断是自动处理的
引入中断的目的:
解决主机与外设的并行工作问题
实现实时控制
I/O系统
I/O控制使用下面几种技术:
程序控制
中断驱动
直接存储器存取(DMA)
通道
程序控制I/O技术
由处理器提供I/O相关指令来实现
I/O处理单元处理请求并设置I/O状态寄存器相关位
不中断处理器,也不给处理器警告信息
处理器定期轮询I/O单元的状态,直到处理完毕
I/O软件包含直接操纵I/O的指令
控制指令: 用于激活外设,并告诉它做什么
状态指令: 用于测试I/O控制中的各种状态和条件
数据传送指令: 用于在设备和主存之间来回传送数据
主要缺陷:处理器必须关注I/O处理单元的状态,因而耗费大量时间轮询信息,严重地降低了系统性能
中断驱动I/O技术
为了解决程序控制I/O方法的主要问题
应该让处理器从轮询任务中解放出来
使I/O操作和指令执行并行起来
具体作法:
当I/O处理单元准备好与设备交互的时候
通过物理信号通知处理器,即中断处理器的执行
DMA技术
中断的引入大大地提高了处理器处理I/O的效率,但是当处理器和I/O间传送数据时,效率仍旧不高。
解决方法:
——直接存储器访问(DMA:Direct Memory Access)
通过系统总线中一独立控制单元——DMA控制器,自动控制成块数据在内存和I/O单元间的传送。
大大提高处理I/O的效能。
通道
通道又称为I/O处理机,独立于中央处理器,是专门负责数据I/O传输的处理机。
它对外设实现统一管理
代替CPU对I/O操作进行控制
使CPU和外设可以并行工作
引入通道的目的:
为了使CPU从I/O事务中解脱出来
同时为了提高CPU/设备、设备/设备之间的并行度


