中断向量表详解

合集下载

中断向量表——精选推荐

中断向量表——精选推荐

中断向量表中断向量表是DSP程序的重要组成部分,当有中断发生并且处于允许状态时,程序指针跳转到中断向量表中对应的中断地址。

由于中断服务程序一般较长,通常中断向量表存放的是一个跳转指令,指向实际的中断服务程序。

下面是5402中断向量表的一个范例,可以作为模板,使用时稍作修改就行:******************************************************************5402V ectors.asm*完整的5402中断向量表示例*5402共有30个中断向量,每个向量占4个字的空间。

*使用向量一般用一条跳转指令转到相应中断服务子程序,其余空位用NOP填充*未使用的向量直接用RETE返回,是为了防止意外进入未用中断。

***************************************************************** .sect ".vectors" ;开始命名段.vecotrs.global CodeStart ;引用程序入口的全局符号定义…;引用其它中断程序入口的全局符号定义.align 0x80 ;中断向量表必须对齐128字的页边界RESET: B CodeStart; Reset中断向量,跳转到程序入口NOP ;用NOP填充表中其余空字NOP ;B指令占了两个字,所以要填两个NOPNMI: RETE ;不可屏蔽中断NOPNOPNOP; 软件中断SINT17 .space 4*16 ;软件中断使用较少,简单起见用0填充SINT18 .space 4*16SINT19 .space 4*16SINT20 .space 4*16SINT21 .space 4*16SINT22 .space 4*16SINT23 .space 4*16SINT24 .space 4*16SINT25 .space 4*16SINT26 .space 4*16SINT27 .space 4*16SINT28 .space 4*16SINT29 .space 4*16SINT30 .space 4*16INT0: RETE ;外部中断INT0NOPNOPNOPINT1: RETE ;外部中断INT1NOPNOPNOPINT2: RETE ;外部中断INT2NOPNOPNOPTINT: RETE ;Timer0中断NOPNOPNOPBRINT0: RETE ;McBSP #0 接收中断NOPNOPNOPBXINT0: RETE ;McBSP #0 发送中断NOPNOPNOPDMAC0: RETE ;无定义(默认)DMA0中断NOPNOPNOPTINT1: RETE ;Timer1中断(默认)或DMA1中断. NOPNOPNOPINT3: RETE ;外部中断3NOPNOPNOPHPINT: RETE ;HPI中断NOPNOPNOPBRINT1: RETE ;McBSP #1接收中断(默认)或DMA2中断NOPNOPNOPBXINT1: RETE ;McBSP #1发送中断(默认)或DMA3中断NOPNOPNOPDMAC4: RETE ;DMA4中断NOPNOPNOPDMAC5: RETE ;DMA5中断NOPNOPNOP.end在本实验中只要把在开头加上中断子程序标号的引用,并在中断表的TINT部分换成跳转指令就行了:*vectors.asm for 方波发生.sect ".vectors" ;开始命名段.vecotrs.global CodeStart ;引用程序入口的全局符号定义.global TINT0_ISR ;引用Timer0中断子程序<节省篇幅,中间省略>TINT: B TINT0_ISR ;Timer0中断NOPNOPBRINT0: RETE ;McBSP #0 receive interrupt<节省篇幅,下略>技巧提示:只有第一个中断(Reset中断)是每个程序都应该有的,在不需要其它中断的情况下,可以只用这一部分,后面可以省略。

DSP中断向量表和中断子向量表(精)

DSP中断向量表和中断子向量表(精)

DSP中断向量表和中断子向量表DSP中断向量表和中断子向量表类别:单片机/DSP本案例在介绍数字PID控制器和模糊Pl控制器的DSP应用程序设计的同时,还介绍TI公司C2000系列DSP芯片开发时,中断向量表和中断子向量表的编写和配置方法。

一个实用DSP程序除包括主程序和系统初始化程序以及存储器配置文件之外,还需要有中断向量表和中断子向量表程序,对于一个DSP控制器来说,中断的使用和管理是不可缺少的。

在系统中,控制器的作用就是控制整个系统实时、有序地按照程序的要求运行,而DSP只有一个CPU,所以只有L个进程,当外部设各要求DSP控制时,就采用中断的方式,DSP根据中断的优先级,通过响应中断并执行中断服务子程序(ISR)来对外部设各进行控制。

一个正确的中断向量表和中断子向量表程序能够使系统正常运行,并能保证在系统不正常时自动恢复到程序初始化的状态,防止系统崩溃,提高工业控制的鲁棒性。

DSP LF2407有两级中断,第一级中断是CPU中断,共6个;第二级中断是外围设各中断,共46个。

由外设中断扩展控制器(PIE)和中断子向量表把外围设备中断映射到CPU中断,然后等待CPU的响应。

此外CPU中断向量表还包括19个软件中断和硬件复位中断(Reset)以及一个不可屏蔽申断(NMI)。

这种两级中断是采用集中化的中断扩展设计方法,特别适合有大量外设中断的工业控制系统。

以下就是采用通用定时器GPTI的比较操作来产生中断时,LF2407的中断向量表和申断子向量表程序。

当需要采用其他中断时,可以直接在此程序中根据需要修改。

该程序对LF2407来说是通用的,只是发生中断时,CPU要跳转的地址不一样而已。

对于一个实际的DSP系统来说,系统的中断管理是不可缺少的,因为目前任何DSP实时系统都具有中断,中断是DSP系统和外部世界发生实时联系的一个重要手段。

作为TI公司的C2000系列DSP,它是偏向于控制的DSP 芯片,因此它的中断管理更丰富和先进,读者理解起来也较困难。

中断向量表详解

中断向量表详解

8.4 BIOS中断调用8.4.1 BIOS中断调用概述BIOS (BasicInput/OutputSystem)是IBM-PC机的监控程序,它固化在微型机主板的ROM中,其内容主要有系统测试程序 (Post)、初始化引导程序(Boot)、I/O设备的基本驱动程序和许多常用程序模块,它们一般以中断服务程序的形式存在。

例如,负责显示输出的显示 I/O程序为10H号中断服务程序;负责打印输出的打印I/O程序为17H中断服务程序等。

图8.5 是用户程序和操作系统关系示意图,由图可见BIOS程序直接建立在硬件基础上,磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言 则建立在操作系统基础上。

用户程序可以使用高级语言,也可以调用DOS 或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。

通常应用程序调用DOS提供的系统功能,完成输入/输出或其他操作,这样做用户可以少考虑硬件,实现起来容易。

图8.5 用户程序和操作系统关系示意图应用程序直接对硬件编程的优点是程序的效率高,缺点是需要程序员对硬件性能有较深的了解。

总的来说,编程复杂,所以一般不直接对硬件编程。

BIOS中断程序处于DOS功能调用和硬件环境之间。

和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对低。

在下列情况下可考虑使用BIOS中断:(1)有些功能DOS没有提供,但BIOS提供了;(2)有些场合无法使用DOS功能调用;(3)其他原因。

8.4.2BIOS中断调用方法BIOS的调用实际上是利用每一台计算机中BIOS固有的I/O操作程序来方便地解决自己的问题,由于这些已经在计算机中了,故使用时不必要再把它写入自己的程序,只要指明它的操作位置就可以了。

1.BIOS调用的基本操作由于BIOS中的每一种功能调用往往包含不同的几个操作细节,因此调用时需要说明三部分,基本步骤为:(1)设置分功能号。

中断向量表

中断向量表
列表提供用户中断来自保护模式提供用户中断
在DOS系统(实模式)下,从0x20开始,用于操作系统本身。
保护模式
在Linux下(保护模式),没有使用BIOS设置的中断向量表,0x00 ~ 0x1F是CPU保护模式下的默认中断向 量,而0x20开始,都是被Linux系统重新设置的。
X86占用的中断向量表如下: Linux自己设置的中断以后再添加。
谢谢观看
基本简介
基本简介
是指中断服务程序入口的偏移量与段基址,一个中断向量占据4字节空间。中断向量表是8086系统内存中最 低端1K字节空间,它的作用就是按照中断类型号从小到大的顺序存储对应的中断向量,总共存储256个中断向量。 在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并 从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口。
中断向量表
中断源的识别标志
目录
01 基本简介
02 列表
基本信息
中断源的识别标志,可用来形成相应的中断服务程序的入口或存放中断服务程序的首称为中断向量。在 Pc/AT中由硬件产生的中断标识码被称为中断类型号(当然,中断类型号还有其他的产生方法,如指令中直接给 出、CPU自动形成等),即在中断响应期间8259A产生的是当前请求中断的最高优先级的中断源的中断类型号。中 断类型号和中断向量之间有下面的关系:中断类型号×4=存放中断向量的首有了存放中断向量的首,从该开始的 4个存储单元中取出的就是中断服务程序的入口

微机原理与接口技术课程案例-7.中断向量表(已看)

微机原理与接口技术课程案例-7.中断向量表(已看)
第七讲 中断技术
1
中断之概念
“中断”意思为打断操作的顺序。CPU正在执行程 序,有个“中断”打断了指令的正常执行顺序,使得 CPU中止正在执行的程序转而去执行被称为中断服务程 序(ISR)的其它程序。
2
中断之目的
计算机系统中引入中断的目的主要有两个: 数据的传送; 异常的处理;
3
中断之种类
中断类型码固定(0、1、3、4)或由指令给出(n)
响应过程主要步骤:
① PUSH FLAGS ② IF=TF=0(关可屏蔽中断和单步中断) ③ PUSH CS ④ PUSH IP ⑤ 取中断向量送入IP’和CS’
PUSH CS/IP/FLAGS JMP CS’:IP’
18
中断响应过程(续)
外部中断响应过程
NMI DB
n
INTR
INTA
中断控 制器 8259A PIC
非屏蔽中断请求
可 屏 蔽
中 断 请 求
中断请求\排队\屏蔽
11
中断源的识别
8088/8086系统采用中断类型码n来识别不同的中断 源。每个中断源都有一个与它相对应的中断类型码n 。 溢出、断点、除法溢出、单步、非屏蔽中断的类型 码为固定值(4、3、0、1、2) 软件中断的类型码由指令INT n 给出(n) 可屏蔽中断的类型码由PIC(8259)给出(n)
8
与(外部)中断有关的引脚
与中断有关的控制线为:NMI和INTR、INTA NMI:上升沿出发。 INTR:高电平出发。 INTA:可屏蔽中断的响应信号。
9
中断过程
五个步骤:
中断请求
中断判优/排队
(有时还要进行中断源
识别)
请求
中断响应

BOOTLOADER中断向量表重定位深度解析(只给懂的人看)

BOOTLOADER中断向量表重定位深度解析(只给懂的人看)

Bootloader中断向量重定位问题1.Bootloader程序在内核Cortex-M0+内核中运行时需要进行地址跳转执行应用程序主程序,此时就涉及到了中断向量重定位问题,以下截图为单片机启动文件中的栈和堆空间大小分配以及中断向量表的分配:根据上图可以看到,_initial_sp栈顶指针和向量表起始地址均未设置。

默认情况下,cortex-m0+内核认为该表位于零地址处,且各向量占用4 字节,因此每个表项占用4 字节。

中断向量表里的中断跳转地址在编译后就定下来了,SCB->VTOR向量可动态调整就是让我们的程序运行后还能改变向量的跳转地址。

方法就是:在RAM重建一个中断向量表,在想改变的位置重新赋值新的跳转地址。

步隔离(确保接下来的所有指令都使用新配置)。

以上为改变中断向量表起始地址,经过_DSB()和_ISB()指令后接下来要给这些地址指针重新赋值,也就是在FlashLoader_ASM()和SRAMLoader_ASM()被调函数中重新配置MSP和PC 的值。

以SJ_FLASH_BASE=0x10000000,SJ_SRAM_BASE=0x20000000为例:0x10000000==1<<28 0x20000000==1<<29以上两个函数均是将SJ_FLASH_BASE或SJ_SRAM_BASE地址处存储的值赋给SP,再将地址值偏移4字节后得到的地址里存储的值给PC,上面过程类似启动文件中中断向量表里提到的Reset_Handler,也是先给_initial_sp栈顶指针赋值中断向量表起始地址,然后地址偏移4字节程序跳转到启动文件后面定义的Reset_Handler函数执行如下:区别只不过是_main和SystemInit代表的是入口地址常量,而前者是直接操作地址值。

针对以上用到的汇编指令解析如下:1.跳转指令BLX和BX、BL、B的区别,如下表所示:2.LDR为最常用的伪指令(伪指令只在编译程序时用到,由汇编器等开发工具决定),将32位立即数加载到寄存器中。

微机原理与接口技术课件 7.中断向量表(已看)

微机原理与接口技术课件 7.中断向量表(已看)

8259A的工作过程

8259A对中断请求的处理过程如下:

当某IRi有效时,IRR相应位置1 若有效的IRi未被屏蔽,则向CPU发出中断请求INT 检测到第1个INTA信号后,置ISRi=1,IRRi=0 检测到第2个INTA信号后,把ISRi=1中最高优先级 的中断类型码 n 放到DB上
19
可编程中断控制器8259A

PIC,Programmable Interrupt



可对8个中断源实现优先级控制 (单个管8个) 可扩展至对64个中断源实现优 先级控制(9个管64个) 可编程设置不同工作方式(多套 管理方案) 根据中断源向x86提供不同中断 类型码n(来访者1人1号) 引脚分配及功能见右图
的中断;

内部中断:由处理器电路或中断指令产生的中断,
如除0中断,int指令等。
4
8086的中断向量表




存放各类中断的中断服务程序的入口地址CS:IP(段 CS和偏移IP)——中断向量 表的地址位于内存的00000H~003FFH,大小为 1KB,共256个中断向量(中断向量表) 每个中断向量占用4 Bytes,低字为段内偏移IP,高 字为段基址CS 根据中断类型号n获得中断服务程序入口的方法: 中 断向量在IVT中的存放地址=4×n (中断向量地址)
中断指令 INT n
(n=0~255)
软件 硬件
外部/硬件中断请求
2
NMI
非屏蔽中断请求
可 屏 蔽
中 断 请 求
11
DB
3 中断逻辑
n 中断控 制器 8259A PIC
0
1
单步中断
内部排队 中断开关

什么是中断?什么是中断向量?中断向量表的地址范围?

什么是中断?什么是中断向量?中断向量表的地址范围?

什么是中断?什么是中断向量?中断向量表的地址范围?1.什么是中断?什么是中断向量?中断向量表的地址范围?答:中断就是CPU在执行当前程序时由于内外部事件引起CPU暂时停止当前正在执行的程序而转向执行请求CPU暂时停止的内外部事件的服务程序,该程序处理完后又返回继续执行被停止的程序;中断向量是中断处理子程序的入口地址;地址范围是00000H-003FFH。

2.3.微机系统的硬件由哪几部分组成?答:微型计算机(微处理器,存储器,I/0接口,系统总线),外围设备,电源。

4.什么是微机的总线,分为哪三组?答:是传递信息的一组公用导线。

分三组:地址总线,数据总线,控制总线。

5.8086/8088CPU的内部结构分为哪两大模块,各自的主要功能是什么?答:总线接口部件(BIU)功能:根据执行单元EU的请求完成CPU与存储器或IO 设备之间的数据传送。

执行部件(EU),作用:从指令对列中取出指令,对指令进行译码,发出相应的传送数据或算术的控制信号接受由总线接口部件传送来的数据或把数据传送到总线接口部件进行算术运算。

6.8086指令队列的作用是什么?答:作用是:在执行指令的同时从内存中取了一条指令或下几条指令,取来的指令放在指令队列中这样它就不需要象以往的计算机那样让CPU轮番进行取指和执行的工作,从而提高CPU的利用率。

7.8086的存储器空间最大可以为多少?怎样用16位寄存器实现对20位地址的寻址?完成逻辑地址到物理地址转换的部件是什么?答:8086的存储器空间最大可以为2^20(1MB);8086计算机引入了分段管理机制,当CPU寻址某个存储单元时,先将段寄存器内的内容左移4位,然后加上指令中提供的16位偏移地址形成20位物理地址。

8.段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?答:指令的物理地址为21F00H;CS值和IP值不是唯一的,例如:CS=2100H,IP=0F00H。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8.4 BIOS中断调用8.4.1 BIOS中断调用概述BIOS (BasicInput/OutputSystem)是IBM-PC机的监控程序,它固化在微型机主板的ROM中,其内容主要有系统测试程序 (Post)、初始化引导程序(Boot)、I/O设备的基本驱动程序和许多常用程序模块,它们一般以中断服务程序的形式存在。

例如,负责显示输出的显示 I/O程序为10H号中断服务程序;负责打印输出的打印I/O程序为17H中断服务程序等。

图8.5 是用户程序和操作系统关系示意图,由图可见BIOS程序直接建立在硬件基础上,磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言 则建立在操作系统基础上。

用户程序可以使用高级语言,也可以调用DOS 或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。

通常应用程序调用DOS提供的系统功能,完成输入/输出或其他操作,这样做用户可以少考虑硬件,实现起来容易。

图8.5 用户程序和操作系统关系示意图应用程序直接对硬件编程的优点是程序的效率高,缺点是需要程序员对硬件性能有较深的了解。

总的来说,编程复杂,所以一般不直接对硬件编程。

BIOS中断程序处于DOS功能调用和硬件环境之间。

和DOS功能调用相比其优点是效率高,缺点是编程相对复杂;和直接对硬件编程相比,优点是实现相对容易,缺点是效率相对低。

在下列情况下可考虑使用BIOS中断:(1)有些功能DOS没有提供,但BIOS提供了;(2)有些场合无法使用DOS功能调用;(3)其他原因。

8.4.2BIOS中断调用方法BIOS的调用实际上是利用每一台计算机中BIOS固有的I/O操作程序来方便地解决自己的问题,由于这些已经在计算机中了,故使用时不必要再把它写入自己的程序,只要指明它的操作位置就可以了。

1.BIOS调用的基本操作由于BIOS中的每一种功能调用往往包含不同的几个操作细节,因此调用时需要说明三部分,基本步骤为:(1)设置分功能号。

按实现的操作功能的要求,给指定寄存器(通常为AH)送入分功能号。

(2)设置入口参数。

按操作要求,给寄存器填写相应参数的内容(某些调用无参数)。

(3)使用中断语句INTn。

执行调用的功能,其中n为中断号。

(4)分析出口参数。

具体步骤如图8.6所示。

图8.6分析出口参数具体步骤例如:MOV AH,0;分功能号为0MOV AL,10H;置入口参数INT 1AH;1AH为中断号,功能为读时间计数器的值2.键盘输入功能调用BIOS中断16H为键盘输入。

16H号中断有三个功能,功能号要求放在AH中,具体功能见表8-3。

图8.7 功能键状态(AH)=0时,读键盘键入的一个ASCII码字符,返回字符码在AL中,扫描码在AH;(AH)=l时,读键盘键入的一个ASCII码字符,并设置ZF 标志位:若按过一键(键盘缓冲区不空),ZF=0,否则ZF=1;(AH)=2时,读特殊功能键的状态送AL,AL各位含义见图8.7表8-3BIOS键盘中断(INT16H)在内存0040: 0017中记录了双态键和组合键的状态,该字节称为键盘状态字节KB-FLAG,其中,高4位表示键Insert、CapsLock、NumLock和 ScrollLock 是ON(=1)还是OFF(=0),低4位表示键Alt、Ctrl、左Shift和右Shift是否按动,若按动,则置1。

这8个键 有时又称为变换键通过INT16H的功能2可以查看上述8个键的状态,有关程序段如下: MOV AH,2INT 16H;取键盘状态送入AL中TEST AL,10000000B;测试键盘状态字节第7位JE INSOFF;如果是0,则转至INS处于OFF的程序段INSOFF:用户通过程序改变键盘状态字节的内容,等效于敲入了对应的键,下面4句汇编语句使Insert键置于ON状态。

MOV AX,0MOV ES,AXMOV AL,10000000BORES:[417H],AL【例8-6】从键盘读入0~9中任一数,根据不同数显示不同的字符串。

要求用BIOS中断来接收键盘输入。

程序如下:STACK SEGMENT PARA STACK;堆栈段定义DB 256 DUP(?)STACK ENDSDATA SEGMENT PARA PUBLIC 'DATA';数据段定义,设每字符THIRTY DB 30;串长30PARM DB 128 DUP(0)MSG0DB'ILIKEIBMPC…'MSG1 DB '8080PROGRAMMINGISRUN…'MSG2 DB 'TIMETOBUYMANYDISKETTES…'MSG3 DB 'THISPROGRAMWORKS…'MSG4 DB 'TURNOFFTHATPRINTER!…'MSG5 DB 'IHAVEMANY…'MSG6 DB 'THEPSPCANBEUSEFUL…'MSG7 DB 'BASICWASEASIERTHENTHIS…'MSG8 DB 'DOSISINDISPESABLE…'MSG9DB'LASTMESSAGEOFTHEDAY..'ERRMSG DB 'ERROR!INVALIDPARAMETER!!!‘DATAENDSCODE SEGMENT PARA PUBLIC 'CODE';代码段START PROC FARASSUME CS:CODEPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV ES,AXASSUME ES:DATAMOV DX,AXASSUME DS:DATAMOV AH,0;功能号为0INT 16H;键盘输入,字符在AL中SUB AL,'0';减去字符‘0’的ASCII码 JC ERROR;键入字符编码小于30H转 CMP AL,9;是9吗JAE RROR;大于9转,否则顺序执行 MOV BX,OFFSETMSG0;MSG0位移送BX MUL THIRTY;(AL)×30ADD BX,AX;计算输入信息在信息表中的位移CALLDISPLAY;转子显示信息 RET;返回ERROR:MOV BX,OFFSET ERRMSG;出错显示信息位移送BX CALLDISPLAY;转子显示信息 RET;返回DISPLAY PROC NEARMOV CX,30;显示字符个数DISP1:MOV AL,[BX]CALL DISPCHAR;专显示字符子程序 INC BXLOOP DISP1MOVDL,0DH;显示回车符CALL DISPCHARMOV DL,0AH;显示换行符CALL DISPCHARRETDISPLAY ENDPDISPCHAR RPOC NEAR;显示AL中字符号程序PUSH BXMOV BX,0MOV AH,14;14号功能调用为输出字符INT 10HPOP BXRETDISPCHAR ENDPCODE ENDSEND START3.BIOS显示功能调用显示器是微型机系统重要的输出设备。

显示器与微型机之间的接口电路又称做显示适配器(显 示卡)。

显示卡的种类很多,有MDA卡、HGC卡、CGA卡、EGA 卡和VGA卡等。

IBM-PC和PC/XT单色显示器使用单色显示器适配器MDA (MonochromeDisplayAdapter)卡,它不支持图形方式,只支持80列和25行的文本方式。

文本方式又称为字符方式、字符/数字方 式。

IBM-PC和PC/XT彩色显示器使用彩色/图形适配器CGA(ColorGraphicsAdapter)卡,支持文本和图形两种方式且有单色、 彩色两种显示。

有关显示输出的DOS功能调用不多,而BIOS调用(INT10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等,见表8-4。

下面做简单介绍。

表8-4中断类型10H的功能调用操作1)显示方式的设置INT10H的0H功能用来设置显示方式,详见表8-4。

方式0~6是CGA卡的工作方式,其中,0~3是文本方式,4~6是图形方式。

方式7是MDA卡的惟一工作方式。

文本方式在屏幕上显示字符,字符在屏幕上的位置用行、列坐标表示,如图8.8所示。

25×80文本方式下的行号为0~24,列号为0~79,则屏幕左上角为第0行、第0列,右下角为第24行、第79列。

也就是说,文本方式下屏幕上显示的字符位置是固定的。

屏幕各行列号所确定的位置的显示内容,由显示卡上的显示存储器的对应位置的存储单元提供,这就是屏幕的“存储器映像”。

即如果向某显示存储器写入字符的ASCII码,字符就会显示在屏幕的相应位置上。

对应的显示在屏幕上的每个字符在存储器中由连续的两个字节表示,一个字节保存字符ASCII码,另一个字节保存字符属性。

在屏幕上仅显示字母、数字和一些字符图形的方式就是文本方式。

在文本方式下字符的属性字节既适用于单色显示也适用于彩色显示。

图8.8 显示器屏幕字符位置图(1)单色字符显示。

该显示方式定义了字符显示的特性,包括字符是否闪烁,是否加亮,是否反显(白底黑字)。

单色字符显示属性字节的各位功能如图8.9所示,各位的不同组合将使字符呈现不同的属性,如表8-5所示。

(2) 彩色字符显示。

在显示彩色文本时,字符的属性字节用于定义前景(显示的字符)和背景的颜色,每个字符可以选择16种颜色中的一种,而背景只能选择8种颜色 之一。

图8.10给出了以16色文本方式显示的属性字节的各位内容。

前景的16种颜色由D0~D3位组合,R、G和B分别代表红(Red)、绿 (Green)和蓝(Blue),BL表示闪烁,I为亮度。

闪烁和亮度仅适用于前景。

表8-6列出了16色字符方式颜色的组合。

图8.10 16色文本方式属性字节内容表8-616种颜色的组合(3) 显示存储器。

对所有的显示适配器,文本方式下显示字符的原理都是一样的,差别仅是不同适配器的视频显示存储器的起始地址不同:MDA的显存起始地址为 B000:0000;CGA、EGA和VGA的显存起始地址为B800:0000。

每个字符的ASCII码和属性码存放于连续的两个字节中。

显示存储单元 与屏幕上字符的对应关系如图8.11所示。

在25 ×80的文本显示方式下,屏幕有2000个字符位置,由于每个字符用两个字节表示,所以需要显存容量为4KB(4000B)。

如果有16KB显存,则可以 保存4屏显示字符的数据,通常称为4页数据。

对CGA、EGA和VGA的80列显示方式,0页在显存中的起始地址为B800:0000,1页为B800: 1000,2页为B800:2000,3页为B800:3000。

相关文档
最新文档