DOS系统功能调用及BIOS调用实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
学院名称:
实验名称:DOS系统功能调用及BIOS调用班级:
学生姓名:
学生学号:
DOS系统功能调用及BIOS调用实验
【实验目的】
(1)熟悉PC机中断系统的有关概念,了解中断向量表的概念。
(2)掌握常用DOS系统功能调用的方法。
(3)掌握BIOS中常用设备(如显示器、打印机等)驱动程序的调用方法。
【实验原理】
微型计算机系统为汇编用户提供两个程序接口,一个是DOS系统功能调用,另一个是ROM中的BIOS(basic input/output system)。系统功能调用和BIOS由一系列的中断服务程序构成,它们使得程序设计人员不必详细了解硬件的内部结构和工作原理,直接调用这些中断服务程序就可以使用系统的硬件,尤其是I/O设备的使用和管理。
IBM PC中断系统为了识别和响应每一种中断,将它们赋以00~FFH中断类型号,故中断系统能出理256种中断。每种类型的中断都对应一个中断服务程序,每个中断服务程序的入口地址包括该程序所在段的段地址和段内偏移地址,需4个存储单元来存放。将256种中断对应的中断服务程序排成一张表,放在内存底端00000H~003FFH单元中,系统在响应中断时根据得到的中断类型号到该表对应的四个存储单元中即可找到要执行的中断服务程序的入口地址。
从功能上分。中断向量表中的中断类型可分为如下三类:
(1)磁盘操作系统DOS提供的中断服务程序,中断类型号为20H~2FH。
(2)系统主板BIOS芯片提供的BIOS中断服务程序,包括系统内部中断,中断类型
号为00H~07H;系统8级外部中断,中断类型号为08H~0FH;设备驱动程序,中断类型号为10H~1FH等。
(3)用户定义的中断,中断类型号为60H~7FH,F1H~FFH。用户可以根据实际需要
编写自己的中断服务程序,并将该服务程序的入口地址写入中断向量表中相应的存储单元,以便对它们进行调用。
【实验内容】
制作电子时钟,在屏幕上实时系统当前时间。
要求:
(1)屏幕显示方式设置为80*25黑白文本方式。使用BIOS中断调用,中断类型
号为10H,功能号为00H,(AL)=2。
(2)在开始显示实时时钟和结束之前清屏。使用BIOS中断调用,中断类型号为
10H,功能号为06H,(AL)=0。
(3)按任意键退出程序的执行。使用DOS系统功能调用,中断类型号为21H,功
能号为0BH。当返回值(AL)=FFH时,有按键按下;当(AL)=00H时,无按键按下。
部分程序简介:
(1)屏幕显示方式设置宏指令SETCRT
(2)清屏宏指令CLEAR
(3)设置光标位置宏指令CURSOR
(4)按任意键退出程序指令。
(5)显示提示信息的宏指令STRDSPY的编写
【实验程序】
DATA SEGMENT
BUF1 DB "Current time is:$"
HOUR DB 20H,20H,':','$'
MINUTE DB 20H,20H,':','$'
SECOND DB 20H,20H,':','$'
MSECOND DB 20H,20H,'$'
INFOR DB " Press any key to exit...$" DATA ENDS
STACK SEGMENT STACK
SNUM DW 20H DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX, DATA
MOV DS, AX
MOV AX, STACK
MOV SS, AX
MOV AX, LENGTH SNUM MOV SP, AX
MOV DX, OFFSET INFOR MOV AH, 09H
INT 21H
SETCRT MACRO
MOV AH,0
MOV AL,2
INT 10H
ENDM
CLEAR MACRO
MOV AH,06H
MOV AL,0
INT 10H
ENDM
CURSOR MACRO ROW,CLM
MOV AH,02H
MOV BH,00H
MOV DH,ROW
MOV DL,CLM
INT 10H
ENDM
STRDSPY MACRO STRING
PUSH DX
PUSH AX
MOV DX,OFFSET STRING MOV AH,09H
INT 21H
POP AX
POP DX
ENDM
TIMER1 MACRO REG, ADR
PUSH AX
PUSH BX
LEA SI, ADR
MOV AL, REG
MOV AH, 00
MOV BL, 10
DIV BL
ADD AL, 30H
MOV [SI], AL
ADD AH, 30H
INC SI
MOV [SI], AH
POP BX
POP AX
ENDM
SETCRT
CLEAR
CURSOR 3, 22
STRDSPY BUF1
CURSOR 7,23
STRDSPY INFOR LOOPR: MOV AH, 2CH
INT 21H
PUSH CX
MOV CH,DL
TIMER1 CH,MSECOND MOV CH, DH
TIMER1 CH, SECOND POP CX
TIMER1 CL,MINUTE
TIMER1 CH,HOUR
CURSOR 5,24
STRDSPY HOUR
STRDSPY MINUTE
STRDSPY SECOND
STRDSPY MSECOND
MOV AH,0BH
INT 21H
CMP AL, 00H
JNZ EXITT