微机原理与接口技术实验指导 6_DOS系统功能调用及BIOS调用实验.doc_第1页
微机原理与接口技术实验指导 6_DOS系统功能调用及BIOS调用实验.doc_第2页
微机原理与接口技术实验指导 6_DOS系统功能调用及BIOS调用实验.doc_第3页
微机原理与接口技术实验指导 6_DOS系统功能调用及BIOS调用实验.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DOS系统功能调用及BIOS调用实验2.6.1 实验目的1、 熟悉PC机中断系统的有关概念,了解中断向量表的作用。2、 掌握常用DOS系统功能调用的方法。3、 掌握BIOS中常用设备(如显示器、打印机等)驱动程序的调用方法。2.6.2 实验预习要求1、 复习常用DOS系统功能调用方法。2、 复习BIOS调用方法。3、 读懂“2.6.4 实验内容”中给出的源程序,以便上机调试。4、 从“2.6.5 实验习题”中任选一道题目,编写源程序,以便上机调试。2.6.3 中断系统、DOS系统功能调用及BIOS调用简介微型计算机系统为汇编用户提供了两个程序接口,一个是DOS系统功能调用,另一个是ROM中的BIOS(basic input/output system)。系统功能调用和BIOS由一系列的中断服务程序构成,它们使得程序设计人员不必详细了解硬件的内部结构和工作原理,直接调用这些中断服务程序就可以使用系统的硬件,尤其是IO设备的使用与管理。如下表所示,IBM PC中断系统为了识别和响应每一种中断,将它们赋以00FFH中断类型号,故中断系统能处理256种中断。每种类型的中断都对应一个中断服务程序,每个中断服务程序的入口地址包括该程序所在段的段地址和段内偏移地址,需4个存储单元来存放。将256种中断对应的中断服务程序排成一张表,放在内存底端00000H003FFH单元中,系统在响应中断时根据得到的中断类型号到该表对应的四个存储单元中即可找到要执行的中断服务程序的入口地址。PC机中断向量表分类中断类型号中断向量所在存储单元地址功能分类中断类型号中断向量所在存储单元地址功能系统内部中断BIOS00H000003H除数为0设备驱动BIOS18H060063HROM BASIC01H004007H单步执行19H064067H系统自举02H00800BH外部非屏蔽中断1AH06806BH日时钟I/O03H00C00FH断点1BH06C06FH键盘中断地址04H010013H溢出1CH070073H定时器报时05H014017H打印屏幕1DH074077H显示器参数06H01801BH保留1EH07807BH软盘参数07H01C01FH保留1FH07C07FH图形字符扩展8级外部中断BIOS08H020023H日时钟磁盘操作系统DOS20H080083HDOS程序结束09H024027H键盘21H084087HDOS功能调用0AH02802BH保留22H08808BH程序结束地址0BH02C02FH串口通信223H08C08FHCtrl+Break0CH030033H串口通信124H090093H标准错误出口0DH034037H硬盘25H094097H绝对磁盘读0EH03803BH软盘26H09809BH绝对磁盘写0FH03C03FH打印机27H09C09FH程序结束驻留282FH0A00FFHDOS保留设备驱动BIOS10H040043H显示特殊中断305FH10017FH系统保护11H044047H设备配置607FH1801FFH用户使用12H04804BH存储容量80F0H2002C3HBASIC使用13H04C04FH磁盘I/OF1FFH2C43FFH用户使用14H050053H通信I/O15H054057H录音机I/O16H05805BH键盘I/O17H05C05FH打印机I/O 从功能上分,中断向量表中中断类型可分为三类:1、 磁盘操作系统DOS提供的中断服务程序,中断类型号从20H到2FH。其中类型号为21H的DOS系统功能调用使用较多,如前面实验中用到的单个字符输入、单个字符显示、字符串显示、字符串输入等操作就是通过调用DOS系统功能(中断类型号为21H,功能号(调用号)分别为01H、02H、09H、0AH)来实现的。有关DOS系统功能调用(INT 21H)中各功能号对应的功能列表见附录A。2、 系统主板BIOS芯片提供的BIOS中断服务程序,包括系统内部中断,中断类型号从00H到07H;系统8级外部中断,中断类型号从08H到0FH;设备驱动程序,中断类型号从10H到1FH等。3、 用户定义的中断,中断类型号从60H到7FH、F1H到FFH。用户可根据实际需要编写自己的中断服务程序,并将该服务程序的入口地址写入中断向量表中相应的存储单元,以便对它们进行调用。有关中断服务程序的编写与调用方法将在“2.7 中断服务程序设计实验”中介绍。 需要说明的是,许多功能既可以通过DOS系统功能调用实现,也可以通过BIOS调用实现,实际使用时应根据具体情况选择使用,一般原则为:能通过DOS系统功能调用实现的功能不使用BIOS调用实现。有关详细介绍请参阅教材“5.5.6 常用系统功能调用和BIOS中断调用”一节。2.6.4 实验内容 制作电子时钟,在屏幕上实时显示系统当前时间。程序运行结果如下图所示。要求: 屏幕显示方式设置为8025黑白文本方式(使用BIOS中断调用,中断类型号为10H,功能号为00H,(AL)=2); 在开始显示实时时钟和结束之前清屏(使用BIOS中断调用,中断类型号为10H,功能号为06H,(AL)=0); 按任意键退出程序的执行(使用DOS系统功能调用,中断类型号为21H,功能号为0BH,当返回值(AL)=FFH时有键按下,当(AL)=00H时无键按下);1、 编程指导(1) 屏幕显示方式设置宏指令SETCRTSETCRTMACRO MOV AH, 0;功能号为0MOVAL, 2;将屏幕设置为8025黑白文本方式 INT 10H ENDM(2) 清屏宏指令CLEARCLEAR MACRO MOVAH, 06H;功能号为6 MOV AL, 0;清窗口 INT 10H ENDM(3) 光标位置设置宏指令CURSOR MACROROW, CLM MOVAH,02H;功能号为2(置光标位置) MOV BH, 00H;页号(文本方式时为0) MOV DH, ROW;行号送DH MOV DL,CLM;列号送DL INT 10H ENDM(4) 按任意键退出程序指令MOVAH, 0BH;功能号为0BH(检测键盘状态) INT 21h CMP AL, 00H;(AL)为0时无键按下 JNZ EXITT;有键按下时退出 JMP LOOPR;无键按下时继续循环显示当前时间EXITT: 2、 程序框架DATASEGMENTBUF1DB Current time is:$HOUR DB 20H,20H,:,$MINUTEDB 20H,20H,:,$SECONDDB 20H,20H,:,$MSECOND DB 20H,20H,$INFOR DB Press any key to exit.$DATA ENDSSTACK SEGMENT STACK SNUMDW 20H DUP(?)STACK ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART: MOVAX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV AX, LENGTH SNUM定义清屏宏指令CLEAR定义设置屏幕显示方式宏指令SETCRT MOV SP, AX定义将寄存器中存放的二进制数转换为ASCII并存放在内存单元的宏指令TIMER1。具体代码如下。定义显示提示信息宏指令STRDSPY定义设置光标位置宏指令CURSORTIMER1MACRO REG, ADR PUSHAX 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;将屏幕设置为8025黑白文本方 CLEAR;清屏 CURSOR3, 22;设置光标位置以便显示BUF1中的提示信息 STRDSPY BUF1 CURSOR7,23;设置光标位置以便显示INFOR中的提示信息 STRDSPY INFORLOOPR: MOVAH, 2CH INT 21H;取当前时间。CH=小时(0-23),CL=分(0-60);DH=秒(0-60),DL=1/100秒(0-99),均为二进制形式PUSHCXMOVCH,DL TIMER1CH,MSECOND;将毫秒值转换为ASCII码并存MSECOND单元 MOV CH, DH TIMER1 CH, SECOND;将秒值转换为ASCII码并存MSECOND单元 POPCX TIMER1CL,MINUTE;将分值转换为ASCII码并存MSECOND单元 TIMER1CH,HOUR;将小时值转换为ASCII码并存MSECOND单元 CURSOR 5,24;设置光标位置以便显示当前时间STRDSPYHOURSTRDSPYMINUTE STRDSPY SECOND STRDSPY MSECOND MOV AH,0BH;检测是否有键按下 INT 21h CMP AL, 00H JNZ EXITT;有键按下则退出 JMP LOOPR;无键按下继续显示当前时间EXITT: SETCRT CLEAR MOV AH, 4CH INT 21HCODE ENDS END START2.6.5 实验习题1、 编写在屏幕上显示如下信息的程序: 今天是XXXX年XX月XX日 星期X 按任意键退出提示:读取日期信息使用DOS系统功能调用功能号为2AH的中断服务程序。该中断服务程序返回信息如下:CX=年份(19802099),DH=月份(112),DL=日(031),AL=星期(06,其中0为周日)。2、 编写沿屏幕对角线(从左上角到右下角)显示符号“$”的程序,当显示到右下角时重新从左上角开始显示,直到有键按下时结束程序的执行。提示:屏幕设置为8025黑白文本方式;在当前光标处显示字符使用BIOS INT 10H(功能号为09H)实现;在当前光标处显示字符后应延时一段时间,然后重

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论