第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,

Slides:



Advertisements
Similar presentations
第1章第1章 PC/AT 系統 1 Chapter 1 Chapter 1 PC/AT 系統 001.
Advertisements

(5)能根据具体要求绘制简单的电路图(不超过两个用电器) b
中國歷史人物—孫中山 姓名:黎昕晴 班別:五理.
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第10章 DOS功能调用与BIOS中断调用.
第四章 汇编语言 程序设计 任课教师:王晓甜
第十二章 DMA控制器 12.1 概述 A DMA控制器 A的应用.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
单片机原理与应用.
第3章 80x86汇编语言程序设计(下).
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
第3章 80x86汇编语言程序设计(上) 16位汇编版本 时间不够的情况下只讲16位汇编.
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第7章 中断与异常.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第3章 IA-32指令系统 3.1 基本数据类型 3.2 IA-32的指令格式 3.3 IA-32指令的操作数寻址方式
第4章 汇编语言程序设计 4.1 程序设计语言概述 4.2 汇编语言的程序结构与语句格式 4.3 汇编语言的伪指令
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
基本的”防”黑客技术 Basic” ” Hacker Technique
微机原理及应用 主讲:郑海春.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第8章 PCH中的常规接口.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
1.3 微型计算机的结构和工作原理.
第 13 章 中断系统.
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第九章 微处理器外部结构和总线操作时序.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
可编程定时计数器.
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
第八章 中断系统.
实验三 键盘软加锁实验 2019/5/9.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
大数据搜索挖掘实验室 第五章 子程序设计 张华平 副教授 博士 Website: 大数据搜索挖掘实验室
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
Presentation transcript:

第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,而且易于移植。

DOS(Disk Operating System)是PC机上最重要的操作系统,它是由软盘或硬盘提供的。它的两个DOS模块IBMBIO DOS(Disk Operating System)是PC机上最重要的操作系统,它是由软盘或硬盘提供的。它的两个DOS模块IBMBIO.COM和IBMDOS.COM使BIOS用起来更方便,因为DOS模块提供了更多更必要的测试,使DOS操作比使用相应功能的BIOS操作更简易,而且DOS对硬件的依赖性更少些。

§9.1键盘I/O 键盘是计算机最基本的一种输入设备,用来输入信息,以达到人机对话的目的。键盘主要由三种基本类型的键组成:   1、字符数字键,如字母A(a)到Z(z),数字0到9以及%、$,# 等常用字符。   2、扩展功能键,如Home,End,Backspace,Arrows,Return,Delete,Insert,PgUp,pgDn 以及程序功能键F1~F10等。   3、和其它键组合使用的控制键,如Alt,Ctrl和Shift等。

§9.1键盘I/O 键盘和主机通过五芯电缆相连,这五根线分别是电源线、地线、复位线以及键盘数据线和键盘时钟线。PC机系列的键盘触点电路按16行×8列的矩阵来排列,用单片机Intel 8048来控制对键盘的扫描。按键的识别采用行列扫描法,即根据对行线和列线的扫描结果来确定闭合键的位置,并通过键盘数据线将闭合键所对应的扫描码(8位)送往主机。

§9.1键盘I/O 字符码与扫描码 当我们在键盘上"按下"或"放开"一个键时,如果键盘中断是允许的(21H端口第1位=0),就会产生一个类型9的中断,并转入到BIOS的键盘中断处理程序。该处理程序从8255可编程序外围接口芯片的输入端口60H读取一个字节,这个字节的低7位是键的扫描码。最高位为0或为1,分别表示键是"按下"状态还是"放开"状态。按下时,取得的字节称为通码,放开时取得的字节称为断码。如按下Esc键时产生一个通码为01H(0000001B),放开Esc键时产生一个断码为81H(10000001B)。  

§9.1键盘I/O BIOS键盘中断

§9.1键盘I/O

§9.1键盘I/O 例9.1 读取键盘状态字节,并以十六进制显示出各位的状态。   AGAIN:   MOV    AH,02H         INT    16H           MOV    BX,AX        CALL    BINIHEX         MOV    DL,0DH         MOV    AH,02H   INT    21H   JMP    AGAIN      

§9.1键盘I/O DOS键盘功能调用 上面介绍了BIOS键盘中断(16H),它能同时回送字符码和扫描码,这在使用功能键和变换键的程序中是很重要的。但对一般的键盘操作,我们最好使用适应能力更强的INT 21H中断提供的键盘功能调用。在编写程序时,你会感到使用DOS 21H键盘功能调用非常方便。

§9.1键盘I/O

§9.1键盘I/O 单字符输入 例9.2   GET_KEY: MOV   AH, 1                INT   21H        CMP   AL,'Y'               JE    YES                 CMP   AL,'N'               JE    NO                  JNE   GET_KEY       

§9.1键盘I/O 例9.4         MOV   AH, 7                 INT  21H         CMP   AL, 0                 JE   GET_EC                JMP   ERROR           GET_EC:   MOV   AH, 7         INT  21H         CMP   AL, 3BH                JE   OPTION1         CMP   AL, 3CH                JE   OPTION2         CMP   AL, 3DH                JE   OPTION3         JMP   ERROR        

§9.1键盘I/O 输入字符串 中断21H的功能A能从键盘读入一串字符并把它存入用户定义的缓冲区中 缓冲区的第一个字节保存最大字符数 缓冲区的第二个字节是实际输入字符的个数

§9.1键盘I/O 例如,在数据区定义的字符缓冲区如下:     MAXLEN  DB  32     ACTLEN  DB  ?     STRING  DB  32 DUP(?)   输入字符串的指令如下:     LEA    DX, MAXLEN         MOV    AH, 0AH          INT   21H

§9.1键盘I/O By brooks too broad for leaping↙

§9.1键盘I/O .model small .stack .data User_string db 50,0,50 dup (?) .code Read_keys proc far mov ax,@data mov ds,ax Lea dx,user_string Mov ah,0ah Int 21h Sub ch,ch Mov cl,user_string+1 add dx,2 Exit: mov ax,4c00h int 21h Read_keys endp end read_keys

§9.1键盘I/O 清除键盘缓冲区 从键盘输入的字符实际上先放在一个16字节的键盘缓冲区内,功能1,7,8和0AH实际上是从键盘缓冲区取得字符。   功能0CH的用法如下:   MOV AH, 0CH   MOV AL, 08H   INT 21H

§9.1键盘I/O 检验键盘状态 例9.6 SOUNDER: ┆ MOV AH , 0BH INT 21H          INC    AL               JNZ    SOUNDER            RET         

§9.2显示器I/O 显示字符

§9.2显示器I/O 文本方式设置 INT 10h AH=0 设置显示方式 AL=00 40×25 黑白文本,16级灰度

§9.2显示器I/O 单色字符显示

§9.2显示器I/O

§9.2显示器I/O 彩色字符显示

§9.2显示器I/O

§9.2显示器I/O 显示存储器 显存地址B800:0000 假设显存16KB,可保存4屏幕(页)数据 B800:0000,B800:1000,B800:2000,B800:3000 屏幕上某一字符位置在显存中的偏移地址: Char_offset=Page_offset+((row×width)+column)×byte

§9.2显示器I/O

§9.2显示器I/O   例9.7 计算屏幕上某一字符位置所对应的显存地址      Video_addr  MACRO width,page_num      ;input :DH= row, DL= column      ;output:DI = Char_offset       push     ax       mov     al,width       mul     dh       xor     dh,dh       add     ax,dx       shl     ax,1       add      ax,page_num * 1000h       mov     di,ax       pop     ax       ENDM

§9.2显示器I/O BIOS中断

§9.2显示器I/O 控制光标大小、位置 例9.8 置光标开始行为5,结束行为7,并把它设置到第5行第6列。         MOV   CH,5  ;光标开始行         MOV   CL,7  ;光标结束行         MOV   AH,1  ;显现光标         INT   10H    ;BIOS调用 MOV   DH,4  ;5行         MOV   DL,5  ;6列         MOV   BH,0  ;0页         MOV   AH,2  ;设置光标位置         INT   10H    ;BIOS 调用

§9.2显示器I/O 读光标位置 例9.9 读0页的当前光标位置。    MOV  AH,3  ;读光标位置    MOV  BH,0  ;0页    INT  10H   ;BIOS 调用 选择显示页 例9.10 选择显示页   MOV  AL,vpage  ;AL = 显示页号   MOV  AH,5    ;功能号   INT  10H     ;BIOS调用

§9.2显示器I/O 清屏和卷屏   ;clear screen     mov ah, 6   ;to scroll up screen     mov al, 0   ;blank screen     mov bh, 7   ;blank line     mov ch, 0   ;upper left row     mov cl, 0   ;upper left column     mov dh, 24   ;lower right row     mov dl, 79  ;lower right column     int 10h    ;call video BIOS

§9.2显示器I/O 例9.12 清除左上角为(0,0),右下角为(24,39)的窗口,初始化为反相显示,该窗口相当于全屏幕的左半部分。       MOV   AH,7   ;下卷功能       MOV   AL,0   ;清屏       MOV   BH,70H  ;反相显示属性       MOV   CH,0   ;左上行       MOV   CL,0   ;左上列       MOV   DH,24   ;右下行       MOV   DL,39   ;右下列       INT   10H    ;BIOS显示调用 例9.13见书P331

§9.2显示器I/O 字符显示 功能09H BH 显示页 AL 显示字符 BL 属性 CX 字符重复的次数 功能0AH

§9.2显示器I/O 例9.14 置光标到0显示页的(20,25)位置,并以正常属性显示一个星号'*'。         MOV   AH,2   ;置光标位置       MOV   BH,0   ;0页       MOV   DH,20  ;20行       MOV   DL,25   ;25列       INT   10H    ;BIOS调用       MOV   AH,9   ;写字符       MOV   AL,'*'  ;字符'*'       MOV   BH,0   ;0页       MOV   BL,7   ;正常属性       MOV   CX,1   ;字符重复次数       INT   10H    ;BIOS调用

§9.2显示器I/O 例9.15 在0显示页的(11,0)位置读取字符和属性。       MOV   AH,2   ;置光标位置       MOV   BH,0   ;0页       MOV   DH,11   ;11行       MOV   DL,0   ;0列       INT   10H    ;BIOS调用       MOV   AH,8   ;读字符和属性       MOV   BH,0   ;0页       INT   10H    ;BIOS调用

§9.2显示器I/O 彩色和字符串显示

§9.2显示器I/O 例9.16 在品红背景下,显示5个浅绿色闪烁的星号。 例9.16 在品红背景下,显示5个浅绿色闪烁的星号。    MOV   AH,09   ;显示字符和属性功能   MOV   AL,'*'  ;显示字符   MOV   BH,0    ;0页   MOV   BL,0DAH  ;彩色属性   MOV   CX,05   ;字符显示次数   INT   10H     ;BIOS调用

§9.2显示器I/O 13H 共有4种工作方式,AL=0,1要指定整个显示字符串的属性,AL=2,3要指定每个字符的属性 例9.17,例9.18

§9.2显示器I/O DOS显示功能调用

§9.4串行通信口I/O 并行 串行 异步方式 一次传送一个数据块 同步方式 一次传送一个字节

§9.4串行通信口I/O 波特率 比特率

§9.4串行通信口I/O 串口功能调用 AH 功能 调用参数 返回参数 3 从串行通信口读一个字符 AL=输入的8位数据 4 DOS串口通信口功能 AH 功能 调用参数 返回参数 3 从串行通信口读一个字符 AL=输入的8位数据 4 向串行通信口写一个字符 DL=输出的8位数据

§9.4串行通信口I/O 例9.24 从串行通信口输入一字符并存入INPUT_CHAR单元中。    MOV   AH, 3      ; 从串行通信口读字符    INT   21H       ; DOS调用    MOV   INPUT_CHAR, AL ; 输入字符在AL中      .      .    INPUT_CHAR DB 0

§9.4串行通信口I/O 例9.25 将字符串HELLO输出到串行通信口。      MOV   BX, SEG BUFFER   ; DS: BX = 串地址      MOV   DS, BX      MOV   BX, OFFSET BUFFER      MOV   CX, BUF_LEN     ; CX = 串长度   NEXT: MOV   DL, [BX]      ; 取字符      MOV   AH, 4        ; 通信口输出      INT   21H        ; DOS调用      INC   BX         ; 指针加1      LOOP   NEXT      .      .   BUFFER DB   'HELLO'   BUF_LEN EQU  $-BUFFER

§9.4串行通信口I/O 串口功能调用 BIOS串行口通信功能(INT 14h)

§9.4串行通信口I/O

§9.4串行通信口I/O