第2章 认识CPU-2.2 16位微处理器(2)

段寄存器能在8086中实现1MB物理空间寻址,并可与8080 CPU进行兼容。段寄存器都是16位的,分别称为代码段(Code Segment)寄存器CS、数据段(Data Segment)寄存器DS、堆栈段(Stack Segment)寄存器SS和附加段寄存器。

标志寄存器在8086中有一个16位用于反映处理器的状态和运算结果的某些特征。其中,包括9个标志位。

这些标志位分为两类,其一是运算结果标志,主要用于反映处理器的状态和运算结果特征,有进位标志CF(Carry Flags)、零标志ZF(Zero Flag)、符号标志SF(Sign Flag)、溢出标志OF(Over Flag)、奇偶标志PF(Parity Flag)、辅助进位标志AF(Auxiliary Carry Flag)。

其二是状态控制标志。它控制着处理器的操作。要通过专门的指令才能使状态控制标志发生变化。其中有方向标志DF(Direction Flag)、中断允许标志IF(Interrupt Flag)、追踪标志TF(Trap Flag)。

2.2.3 内存的寻址

8086 CPU有20根地址线,可直接寻址的物理地址空间为1MB。系统

内存由以字节为单位内存的存储单元组成,存储单元的物理地址长20位,范围是00000H至FFFFFH。尽管8086/8088内部的ALU每次最多进行16位运算,但存放存储单元地址偏移的指针寄存器都是16位的,所以8080/ 8086通过内存分段和使用段寄存器的方法来有效地实现寻址1MB的空间。

逻辑段要求满足第一逻辑段的开始地址必须是16的整数倍,第二逻辑段最长不超过64KB的空间。段与段可以相互重叠和联接。

存储单元的逻辑地址由段值和偏移两部分组成,用如下的形式表示:

段值:偏移

所以根据逻辑地址可以方便地得到存储单元的物理地址,计算公式如下:

物理地址=段值×16+偏移

段值通过逻辑段的段寄存器的值来取得,偏移可由指令指针的IP、堆栈指针SP和其他可作为内存指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可以直接用16位数给出。指令中不使用物理地址,而使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。

2.2.4 中断处理

中断使CPU暂停正在运行的事件而转去处理另一事件。其实,中断还可以认为是一种函数的调用,不过,这个函数是随时都可能调用的,这样,中断就很好理解了。我们把引起这种操作的事件就叫中断源。它们可以是外设的输入输出请求,也可是计算机的一些异常事件或者其他的内部原因。

在8086/8088的计算机中,支持256种类型的中断,其中断编号依次为0~0FFH。

每种中断都有一个中断处理程序与之相对应。这些处理程序的段值和偏移量都被安排在内存的最顶端。因为它们占用1KB字节空间(256×4),所以当发生中断时,CPU根据中断向量表就可以很快地查找到对应的处理程序来处理中断事件。

我们从图中可以看到,所谓中断号其实就是中断处理的入口地址。

在IBM PC系列兼容计算机中,中断分为两种,一种是可屏蔽中断,另一种是不可屏蔽中断。DOS的部分中断分配情况如表2.1所示。

表2.1 DOS的部分中断分配表

向量号

功能

向量号

功能

0H

除法出错

10H

视频显示

01H

单步调试

11H

设备配置

02H

非屏蔽中断

12H

存储容量

03H

断点

13H

硬盘I/O

04H

溢出

14H

串行I/O

05H

打印屏幕

15H

扩充BIOS

06H

保留

16H

键盘输入

07H

保留

17H

打印输出

08H

定时器

18H

ROM BASIC

09H

键盘

19H

系统自举

0AH

保留(从中断控制器)

1AH

时钟管理

0BH

串行通信端口2

1BH

Ctrl+Break键处理

0CH

串行通信端口1

1CH

定时处理

0DH

硬盘(并行口)

1DH---1FH

参数指针

0EH

软盘

20H~2FH

DOS使用

0FH

打印机

30H~3FH

为DOS保留

相关推荐
蓝凌y1 天前
51单片机之外部中断
c语言·单片机·嵌入式硬件
AF_INET61 天前
RV1126B开发板学习篇(二)v4l2+mpp编码
c语言·经验分享·音视频·视频编解码·嵌入式软件·rv1126b
我不是懒洋洋1 天前
预处理详解
c语言·开发语言·c++·windows·microsoft·青少年编程·visual studio
计算机安禾1 天前
【数据结构与算法】第14篇:队列(一):循环队列(顺序存储
c语言·开发语言·数据结构·c++·算法·visual studio
爱编码的小八嘎1 天前
C语言完美演绎6-9
c语言
weixin_649555671 天前
C语言程序设计第四版(何钦铭、颜晖)第十一章指针进阶之奇数值结点链表
c语言·开发语言·链表
呜喵王阿尔萨斯1 天前
argc & argv
c语言·c++
爱编码的小八嘎1 天前
C语言完美演绎6-1
c语言
她叫我大水龙1 天前
MSYS2的C/C++,python2,python3编译环境安装脚本
c语言·c++
发疯幼稚鬼1 天前
大整数乘法运算
c语言·算法