第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保留

 

相关推荐
LDR00614 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
Luminous.14 天前
C语言--day30
c语言·开发语言
玖玥拾14 天前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
謓泽14 天前
C语言不是语法,是通往机器的地图。
c语言·开发语言
不会C语言的男孩14 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
2601_9516438814 天前
C语言长文整理,关键字和数据类型
c语言·数据类型·关键字·嵌入式开发·格式化输出
m0_5474866614 天前
《C#语言程序设计与实践》 全套PPT课件
c语言·c#·c语言程序设计
✎ ﹏梦醒͜ღ҉繁华落℘14 天前
编程基础 --高内聚,低耦合
c语言·单片机
QK_0014 天前
C语言 static 关键字三大作用
c语言·开发语言
隔窗听雨眠14 天前
C语言函数递归从入门到精通(下):性能优化与工程实践
c语言·算法·性能优化