第10章 DOS功能调用与BIOS中断调用.

Slides:



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

输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第四章 汇编语言 程序设计 任课教师:王晓甜
第十二章 DMA控制器 12.1 概述 A DMA控制器 A的应用.
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
输入/输出及接口 输入/输出的传送方式 中断技术 80x86/Pentium中断系统 8259A可编程中断控制器 中断程序设计
本周实验安排 实验内容:(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显示器接口.
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第5章 输入输出与接口技术.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第二部分 PC 微机异步通信适配器的分析和使用 一、PC中的UART 1.INS PC16450/PC16550
第4章 汇编语言程序设计 4.1 程序设计语言概述 4.2 汇编语言的程序结构与语句格式 4.3 汇编语言的伪指令
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
微机原理及应用 主讲:郑海春.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第8章 PCH中的常规接口.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第7章 微型机接口技术 可编程定时/计数器 可编程并行接口 串行接口与串行通信(概念) DMA控制器接口(不做要求) 模拟量输入/输出接口.
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
1.3 微型计算机的结构和工作原理.
第 13 章 中断系统.
條件處理.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
3.4.5 控制转移指令(Control transfer instructions) (一)、控制转移指令概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
可编程定时计数器.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
第八章 中断系统.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第8章 并行接口芯片 并行接口一般具有两个或两个以上的8位I/O接口。各个口的工作方式可由程序分别确定或改变,使用灵活,便于和各种外部设备连接。因此,又称可编程的外部接口(PPI) 目前各主要微处理器厂商都有自己的PPI产品,但它们的功能基本类似.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
微型计算机系统.
Presentation transcript:

第10章 DOS功能调用与BIOS中断调用

利用DOS(磁盘操作系统)功能调用和BIOS(基本输入输出)中断调用,程序员在不必了解硬件I/O接口特性的情况下,能非常方便地完成标准设备输入、数据输入、文件管理和系统信息查询等操作。 MSDOS.SYS IO.SYS ROM-BIOS 输入输出设备

用户程序 ROM BIOS 基本I/O 系 统 硬 件 用户命令 BIOS和DOS中断子程层次特点 用户程序 磁盘管理模块(DOS内核) MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装入 命令处理模块 COMMAN D.COM 用户命令 DOS系统层次结构

层次特点: ROM BIOS中的中断子程 使用IN/OUT指令直接控制外设, 实现与外设之间的输入/输出操作, 以软件形式向其上层提供服务。 IO.SYS中的中断子程 ( 称基本输入/输出BIOS模块) 调用ROM BIOS的基本I/O功能, 向 MSDOS.SYS提供设备驱动服务。 用户程序 磁盘管理模块(DOS内核) MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装入 命令处理模块 COMMAN D.COM 用户命令

用户命令 MSDOS.SYS中的中断子程 ( 称DOS内核模块 ) 调用IO.SYS,实现对外设的控制。 用户程序 与标准外设有两层隔离 : 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装入 命令处理模块 COMMAN D.COM 用户命令 MSDOS.SYS中的中断子程 ( 称DOS内核模块 ) 调用IO.SYS,实现对外设的控制。 与标准外设有两层隔离 : IO.SYS和ROM BIOS。 其中21H类型的中断子程 提供了丰富的系统服务, 称21类型的中断调用 为DOS系统(功能)调用。

用户命令 用户编程原则 ①尽可能使用DOS的系统功能调用, 用户程序 提高程序可移植性。 ②在DOS功能不能实现情况下, MSDOS.SYS 系统功能 基本输入/输出 BIOS 模 块 IO.SYS 设备驱动 ROM BIOS 基本I/O 系 统 硬 件 装入 命令处理模块 COMMAN D.COM 用户命令 用户编程原则 ①尽可能使用DOS的系统功能调用, 提高程序可移植性。 ②在DOS功能不能实现情况下, 考虑用BIOS功能调用。 ③在DOS和BIOS的中断子程 不能解决问题时, 使用IN/OUT指令直接控制硬件。

中断与中断源 1、中断:当一种特殊事件发生时,CPU停止正在运行的程序,而转去执行该事件的处理程序,处理完该事件后,再返回原程序继续正确地执行下去,这个过程就称为中断。 2、中断源:引起中断的事件。

8086/8088的中断源如图所示。80286以后使用两片8259级连结构,可管理15级中断。 非屏蔽中断请求 中断逻辑 INT n 指令 INT0 除法 错误 单步 TF=1 IR0 8259A IR1 可编程 IR2 中断 IR3 控制器 IR4 (PIC) IR5 IR6 IR7 INTR NMI CPU n 4 1 系统定时器 键盘 彩色/图形接口 保留(通信) 串行通信接口 保留(ALT打印机) 软盘 保留(打印机) 8086/8088中断源 08 09 0A 0B 0C 0D 0E 0F

2. 中断类型分类 向量表中的中断类型分为七类: ① 处理CPU特殊操作( 除0、溢出 )的00H、04H类型。 ② 为DEBUG调试程序设置的单步( 01H )、断点( 03H )类型。 ③ 处理CPU的NMI引脚信号的02H类型。 非屏蔽硬中断子程 ④ 处理CPU的INTR引脚信号的08~0FH类型。 可屏蔽类型硬中断子程 ⑤ 用INT指令调用的中断子程 BIOS功能调用(如10~1AH) DOS功能调用 (如 21H) NMI INTR 8088

⑥ 保留类型 为DOS系统保留 1)指现在未用到,以后系统可能会用到。 2)已用到,但不向用户公开。 为用户保留 1)被系统子程嵌套调用了的类型 ( 如1BH、1CH )。 使用户在系统功能基础上扩充功能。 2)系统未占用类型 ( 如 60H~67H )。 ⑦ 非中断向量类型 对应向量表中的4个单元存放的不是中断向量。 (如1DH、1EH、1FH、41H、46H、22H) 通常是一些参数表的地址信息.

中断向量分配表

3. 调用方法 设置入口参数 在AH设置功能号m 执行中断指令INT N 分析、应用出口参数

例1 单字符显示功能调用 MOV DL, ‘A’ ;设置入口参数 MOV AH, 02H ;设置功能号 INT 21H ;执行中断调用 例2 单字符输入功能调用 MOV AH, 01H ;设置功能号

10.2 BIOS中断调用 BIOS中断分为四类: (1)内中断:中断类型号为00H-07H,包括被零除中断、单步中断、不可屏蔽中断、断点中断、溢出中断、屏幕拷贝等。 (2)外中断:中断类型号08H-0FH,主要处理计时器、键盘、通信端口、硬盘、软件等。 (3)设备驱动:中断类型号10H-17H,服务对象包括显示器、内存检查、通信I/O、键盘I/O、打印机I/O等。 (4)特殊中断:中断类型号18H-1FH,包括ROM BASIC、DOS自举、日期调用、键盘中断、计时器控制、显示器参数、图形字符表等。

10.2.1 BIOS中断调用方法 调用BIOS中断程序的基本过程: (1)将调用参数(入口参数)装入指定的寄存器中; (2)功能号送入AH寄存器。 (3)如需要将子功能号送入AL寄存器。 (4)发送INT n软中断指令(有时通过通用寄存器带回出口参数)。

10.2.2 常用BIOS中断调用 中断 功能 INT 10H 显示器I/O INT 16H 键盘I/O INT 11H 取设备信息 取内存容量 INT 18H ROM BASIC INT 13H 磁盘I/O INT 19H 引导装入程序 INT 14H RS-232串行口I/O INT 1AH 时钟 INT 15H 磁带I/O INT 40H 软盘BIOS

例:BIOS键盘中断 ( INT 16H) AH 功能 返回参数 0 从键盘读一字符 AL=字符码,AH=扫描码 1 读键盘缓冲区的字符 如ZF=0,AL=字符码,AH=扫描码 如ZF=1,缓冲区空 2 取键盘状态字节 AL=键盘状态字节

INT 10H 视频程序设计 (1)00H号功能 功能: 显示方式设置 入口参数: AL=显示方式 (P181) 出口参数: 无 功能: 显示方式设置 入口参数: AL=显示方式 (P181) 出口参数: 无 【例11.2】图形方式设置示例。 MOV AH,00H MOV AL,13H INT 10H ;设置320×200,256色图形方式

1. INT 10H 视频程序设计 (2)02H号功能 功能: 设置光标位置 入口参数:BH=显示页号 DH=行号 DL=列号 出口参数:无

1. INT 10H 视频程序设计 (3)06H号功能 功能: 屏幕窗口上卷(文本方式有效)或初始化 功能: 屏幕窗口上卷(文本方式有效)或初始化 入口参数: AL=滚动行数。为0时,整个屏幕为空白 CH=滚动窗口左上角字符所在的行号 CL=滚动窗口左上角字符所在的列号 DH =滚动窗口左下角字符所在的行号 DL=滚动窗口左上角字符所在的行号 BH=滚动后空行区域填充字符属性 出口参数:无

1. INT 10H 视频程序设计 (4)07H号功能(下滚,其余与06H号类似,) (5)09H号功能 功能: 在当前光标位置显示字符及其属性 入口参数: AL=字符代码(ASCⅡ码) BL=字符属性 CX=字符个数 BH=页号 出口参数: 无

【例】每屏80*25字符的彩色文本方式下,在10行20列位置以兰底白字形式显示40个 “$”。 CSEG SEGMENT ASSUME CS:CSEG STAT: MOV AH,0 ; 置显示方式 MOV AL,3 ; 80*25彩色文本方式 INT 10H MOV AH,2 ; 置光标位置 MOV DH,10 ;光标行号 MOV DL,20 ;光标列号 MOV BH,0 ;光标页号 MOV AH,09H ;显示字符及其属性 MOV AL,'$' ;字符 MOV BL,9FH ;兰底白字 MOV CX,40 ;字符个数 MOV BH,0 ;页号 INT 10H MOV AH,4CH INT 21H CSEG ENDS END STAT

在屏幕10行20~24列处显示五朵梅花,颜色各异 DATA SEGMENT ATRI DB 6EH,52H,94H,52H,6EH DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AH,0 ;设置80×25彩色文本方式 MOV AL,3 INT 10H LEA SI,ATRI;属性字节值表首址存SI MOV DI,5 ;显示5个字符 MOV DX,0A13H ;显示位置

LP:MOV AH,2;置光标位置 INC DL INT 10H MOV AL,5 ;显示梅花形字符 MOV BL,[SI] MOV CX,1 MOV AH,9 INC SI;指向下一属性字节 DEC DI;判显示完否 JNZ LP;未完转LP再显示 MOV AH,4CH;完,返回DOS INT 21H CODE ENDS END START

采用直接对显示卡的寄存器和显示缓冲区编程的方法,在VGA图形模式13H(即320×200,256色)下作图,画一条彩色的线。

DATA SEGMENT SCR_LINE DW 0 SCR_COL DW 0 CUR_COLOR db 0h DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR STAR: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AH,0 MOV AL,13H INT 10H ;设置为模式13H

AGAIN: MOV BL,CUR_COLOR MOV DX,SCR_COL ;DX为像素点的y坐标 MOV CX,SCR_LINE ;CX为像素点的x坐标 CALL DRAW_POINT ;在(x,y)处画点 INC SCR_LINE ;指向下一行 INC SCR_COL ;指向右边的下一个点 INC CUR_COLOR ;指向下一种颜色 CMP SCR_LINE,100 ;100列做完了吗? JE ENDLINE ;做完了,结束 JMP AGAIN ;没做完则重复 ENDLINE: RET MAIN ENDP ;画线原理首先整个屏幕是320*200 256色的,ES=0A000H的附加段中放的是显示缓冲区的内容,并设置为显性结构 ;GET_ADDR子程序计算偏移地址,DI=y×320+x;然后将要显示的,显卡的端口3CDH,OUT DX,AL ;设显示缓冲区为线性内存结构

DRAW_POINT PROC NEAR PUSH ES CALL GET_ADDR ;计算偏移量,存在DI中 MOV DX,0A000H ;显示缓冲区首址的段地址 MOV ES,DX MOV DX,3CDH MOV AL,01000000B OUT DX,AL ;设显示缓冲区为线性内存结构 MOV ES:[DI],BL ;往显示缓冲区写数据 POP ES RET DRAW_POINT ENDP

GET_ADDR PROC NEAR PUSH AX PUSH DX MOV AX,320 ;每行320个点 MUL CX ;乘以行号即y×320 POP DX ADD AX,DX ;即计算地址偏移量为y×320+x MOV DI,AX ;偏移量送DI POP AX RET GET_ADDR ENDP CODE ENDS END STAR

一个简单画图程序 code segment assume cs:code start: mov ax,0012h ;置屏幕方式为vga 640*480模式 int 10h mov cx,300 ;横坐标 mov dx,240 ;纵坐标 write: mov al,0ah ;设置颜色 mov ah,0ch ;设置画点 int 10h mov ah,0 ;读键值 int 16h cmp al,1bh ;是否为esc键 jz exit ;是esc键则退出、 cmp ah, 48h ;是否为向上的方向键 jnz nup dec dx ;纵坐标减一 jmp write

nup: cmp ah,50h ;是否为向下的方向键 jnz ndown inc dx jmp write ndown: cmp ah,4dh ;是否是向下的方向键 jnz nringht inc cx nringht:cmp ah,4bh ;是否为向左的方向键 jnz write dec cx exit: mov ax,0002h ;恢复屏幕为字符方式 int 10h mov ah,4ch int 21h code ends end start

彩条显示程序

program segment assume cs:program start:main proc far mov ah, 00h ;调用INT 10H 的功能号 mov al, 10h ;选择显示方式10h(16色图形) int 10h ;调用INT 10H中断 mov bh, 0 ;显存的第0页 mov cx, 0 ;起始列号为0列 mov dx, 0 ;起始行号为0行 mov si, 0 ;设置彩条的宽度 follow: mov bl,0 color: inc bl ;设置彩条的颜色 mov si,0 cmp bl,7 ;设置彩条的颜色种类 je follow

;是否达到列的最大值 cmp dx, 350 jne line mov ax,4c00h int 21h main endp program ends end start line: mov ah, 0ch ;写像素点 mov al, bl ;像素的颜色 int 10h ;------写像素----------------------- inc cx ;是否达到一行最大值 cmp cx, 650 jne line mov cx, 0 ;起始列号为0列 inc si cmp si,5 je color inc dx

颜色显示时间

俄罗斯方块程序

汉诺塔演示程序