DOS系统功能调用及BIOS调用微机原理实验报告.docx

上传人:b****5 文档编号:11821632 上传时间:2023-04-03 格式:DOCX 页数:20 大小:65.95KB
下载 相关 举报
DOS系统功能调用及BIOS调用微机原理实验报告.docx_第1页
第1页 / 共20页
DOS系统功能调用及BIOS调用微机原理实验报告.docx_第2页
第2页 / 共20页
DOS系统功能调用及BIOS调用微机原理实验报告.docx_第3页
第3页 / 共20页
DOS系统功能调用及BIOS调用微机原理实验报告.docx_第4页
第4页 / 共20页
DOS系统功能调用及BIOS调用微机原理实验报告.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

DOS系统功能调用及BIOS调用微机原理实验报告.docx

《DOS系统功能调用及BIOS调用微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《DOS系统功能调用及BIOS调用微机原理实验报告.docx(20页珍藏版)》请在冰豆网上搜索。

DOS系统功能调用及BIOS调用微机原理实验报告.docx

DOS系统功能调用及BIOS调用微机原理实验报告

西安郵電大學

微型计算机原理

课内实验报告书

 

院系名称

计算机学院

实验题目

DOS系统功能调用及BIOS调用

学生姓名

专业名称

软件工程

班级

软件1003班

学号

指导教师

葛茂

DOS系统功能调用及BIOS调用实验

1实验目的

1、熟悉PC机中断系统的有关概念,了解中断向量表的作用。

2、掌握常用DOS系统功能调用的方法。

3、掌握BIOS中常用设备(如显示器、打印机等)驱动程序的调用方法。

2实验预习要求

1、复习常用DOS系统功能调用方法。

2、复习BIOS调用方法。

3、读懂“2.6.4实验内容”中给出的源程序,以便上机调试。

4、从“2.6.5实验习题”中任选一道题目,编写源程序,以便上机调试。

3中断系统、DOS系统功能调用及BIOS调用简介

微型计算机系统为汇编用户提供了两个程序接口,一个是DOS系统功能调用,另一个是ROM中的BIOS(basicinput/outputsystem)。

系统功能调用和BIOS由一系列的中断服务程序构成,它们使得程序设计人员不必详细了解硬件的内部结构和工作原理,直接调用这些中断服务程序就可以使用系统的硬件,尤其是I/O设备的使用与管理。

如下表所示,IBMPC中断系统为了识别和响应每一种中断,将它们赋以00FFH中断类型号,故中断系统能处理256种中断。

每种类型的中断都对应一个中断服务程序,每个中断服务程序的入口地址包括该程序所在段的段地址和段内偏移地址,需4个存储单元来存放。

将256种中断对应的中断服务程序排成一张表,放在内存底端00000H003FFH单元中,系统在响应中断时根据得到的中断类型号到该表对应的四个存储单元中即可找到要执行的中断服务程序的入口地址。

PC机中断向量表

分类

中断类型号

中断向量所在存储单元地址

功能

分类

中断类型号

中断向量所在存储单元地址

功能

BIOS

00H

000003H

除数为0

 

BIOS

18H

060063H

ROMBASIC

01H

004007H

单步执行

19H

064067H

系统自举

02H

00800BH

外部非屏蔽中断

1AH

06806BH

日时钟I/O

03H

00C00FH

断点

1BH

06C06FH

键盘中断地址

04H

010013H

溢出

1CH

070073H

定时器报时

05H

014017H

打印屏幕

1DH

074077H

显示器参数

06H

01801BH

保留

1EH

07807BH

软盘参数

07H

01C01FH

保留

1FH

07C07FH

图形字符扩展

8

BIOS

08H

020023H

日时钟

DOS

20H

080083H

DOS程序结束

09H

024027H

键盘

21H

084087H

DOS功能调用

0AH

02802BH

保留

22H

08808BH

程序结束地址

0BH

02C02FH

串口通信2

23H

08C08FH

Ctrl+Break

0CH

030033H

串口通信1

24H

090093H

标准错误出口

0DH

034037H

硬盘

25H

094097H

绝对磁盘读

0EH

03803BH

软盘

26H

09809BH

绝对磁盘写

0FH

03C03FH

打印机

27H

09C09FH

程序结束驻留

282FH

0A00FFH

DOS保留

 

BIOS

10H

040043H

显示

305FH

10017FH

系统保护

11H

044047H

设备配置

607FH

1801FFH

用户使用

12H

04804BH

存储容量

80F0H

2002C3H

BASIC使用

13H

04C04FH

磁盘I/O

F1FFH

2C43FFH

用户使用

14H

050053H

通信I/O

15H

054057H

录音机I/O

16H

05805BH

键盘I/O

17H

05C05FH

打印机I/O

从功能上分,中断向量表中中断类型可分为三类:

1、磁盘操作系统DOS提供的中断服务程序,中断类型号从20H到2FH。

其中类型号为21H的DOS系统功能调用使用较多,如前面实验中用到的单个字符输入、单个字符显示、字符串显示、字符串输入等操作就是通过调用DOS系统功能(中断类型号为21H,功能号(调用号)分别为01H、02H、09H、0AH)来实现的。

有关DOS系统功能调用(INT21H)中各功能号对应的功能列表见附录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.3实验内容

制作电子时钟,在屏幕上实时显示系统当前时间。

程序运行结果如下图所示。

要求:

屏幕显示方式设置为8025黑白文本方式(使用BIOS中断调用,中断类型号为10H,功能号为00H,(AL)=2);

在开始显示实时时钟和结束之前清屏(使用BIOS中断调用,中断类型号为10H,功能号为06H,(AL)=0);

按任意键退出程序的执行(使用DOS系统功能调用,中断类型号为21H,功能号为0BH,当返回值(AL)=FFH时有键按下,当(AL)=00H时无键按下);

1、编程指导

(1)屏幕显示方式设置宏指令SETCRT

SETCRTMACRO

MOVAH,0;功能号为0

MOVAL,2;将屏幕设置为8025黑白文本方式

INT10H

ENDM

(2)清屏宏指令CLEAR

CLEARMACRO

MOVAH,06H;功能号为6

MOVAL,0;清窗口

INT10H

ENDM

(3)光标位置设置宏指令

CURSORMACROROW,CLM

MOVAH,02H;功能号为2(置光标位置)

MOVBH,00H;页号(文本方式时为0)

MOVDH,ROW;行号送DH

MOVDL,CLM;列号送DL

INT10H

ENDM

(4)按任意键退出程序指令

MOVAH,0BH;功能号为0BH(检测键盘状态)

INT21h

CMPAL,00H;(AL)为0时无键按下

JNZEXITT;有键按下时退出

JMPLOOPR;无键按下时继续循环显示当前时间

EXITT:

……

2、程序框架

DATASEGMENT

BUF1DB"Currenttimeis:

$"

HOURDB20H,20H,':

','$'

MINUTEDB20H,20H,':

','$'

SECONDDB20H,20H,':

','$'

MSECONDDB20H,20H,'$'

INFORDB"Pressanykeytoexit...$"

DATAENDS

STACKSEGMENTSTACK

SNUMDW20HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,LENGTHSNUM

定义清屏宏指令CLEAR

定义设置屏幕显示方式宏指令SETCRT

MOVSP,AX

定义将寄存器中存放的二进制数转换为ASCII并存放在内存单元的宏指令TIMER1。

具体代码如下。

定义显示提示信息宏指令STRDSPY

定义设置光标位置宏指令CURSOR

TIMER1MACROREG,ADR

PUSHAX

PUSHBX

LEASI,ADR

MOVAL,REG

MOVAH,00

MOVBL,10

DIVBL

ADDAL,30H

MOV[SI],AL

ADDAH,30H

INCSI

MOV[SI],AH

POPBX

POPAX

ENDM

SETCRT;将屏幕设置为8025黑白文本方

CLEAR;清屏

CURSOR3,22;设置光标位置以便显示BUF1中的提示信息

STRDSPYBUF1

CURSOR7,23;设置光标位置以便显示INFOR中的提示信息

STRDSPYINFOR

LOOPR:

MOVAH,2CH

INT21H;取当前时间。

CH=小时(0-23),CL=分(0-60)

;DH=秒(0-60),DL=1/100秒(0-99),均为二进制形式

PUSHCX

MOVCH,DL

TIMER1CH,MSECOND;将毫秒值转换为ASCII码并存MSECOND单元

MOVCH,DH

TIMER1CH,SECOND;将秒值转换为ASCII码并存MSECOND单元

POPCX

TIMER1CL,MINUTE;将分值转换为ASCII码并存MSECOND单元

TIMER1CH,HOUR;将小时值转换为ASCII码并存MSECOND单元

CURSOR5,24;设置光标位置以便显示当前时间

STRDSPYHOUR

STRDSPYMINUTE

STRDSPYSECOND

STRDSPYMSECOND

MOVAH,0BH;检测是否有键按下

INT21h

CMPAL,00H

JNZEXITT;有键按下则退出

JMPLOOPR;无键按下继续显示当前时间

EXITT:

SETCRT

CLEAR

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2.6.5实验习题

1、编写在屏幕上显示如下信息的程序:

今天是XXXX年XX月XX日星期X

按任意键退出…

提示:

读取日期信息使用DOS系统功能调用功能号为2AH的中断服务程序。

该中断服务程序返回信息如下:

CX=年份(19802099),DH=月份(112),DL=日(031),AL=星期(06,其中0为周日)。

2、编写沿屏幕对角线(从左上角到右下角)显示符号“$”的程序,当显示到右下角时重新从左上角开始显示,直到有键按下时结束程序的执行。

提示:

屏幕设置为8025黑白文本方式;在当前光标处显示字符使用BIOSINT10H(功能号为09H)实现;在当前光标处显示字符后应延时一段时间,然后重新设置屏幕为8025黑白文本方式并清屏(INT10H,功能号为06H,(AL)=0)。

2.6.6实验报告要求

1、补全“2.6.4实验内容”中源程序框架内未写出的程序代码,读懂该程序,并说明你在调试该程序过程中遇到了哪些问题,是如何处理的?

DATASEGMENT

BUF1DB"Currenttimeis:

$"

HOURDB20H,20H,':

','$'

MINUTEDB20H,20H,':

','$'

SECONDDB20H,20H,':

'.'$'

MSECONDDB20H,20H,'$'

INFORDB"Pressanykeytoexit....$"

DATAENDS

STACKSEGMENTSTACK

SNUMDW20HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,LENGTHSNUM

MOVSP,AX

SETCRTMACRO

MOVAH,0

MOVAL,2

INT10H

ENDM

CLEARMACRO

MOVAH,06H

MOVAL,0

INT10H

ENDM

CURSORMACROROW,CLM

MOVAH,02H

MOVBH,00H

MOVDH,ROW

MOVDL,CLM

INT10H

ENDM

STRDSPYMACROSTRING

PUSHDX

PUSHAX

MOVDX,OFFSETSTRING

MOVAH,09H

INT21H

POPAX

POPDX

ENDM

TIMER1MACROREG,ADR

PUSHAX

PUSHBX

LEASI,ADR

MOVAL,REG

MOVAH,00

MOVBL,10

DIVBL

ADDAL,30H

MOV[SI],AL

ADDAH,30H

INCSI

MOV[SI],AH

POPBX

POPAX

ENDM

SETCRT

CLEAR

CURSOR3,22

STRDSPYBUF1

CURSOR7,23

STRDSPYINFOR

LOOPR:

MOVAH,2CH

INT21H

PUSHCX

MOVCH,DL

TIMER1CH,MSECOND

MOVCH,DH

TIMER1CH,SECOND

POPCX

TIMER1CL,MINUTE

TIMER1CH,HOUR

CURSOR5,24

STRDSPYHOUR

STRDSPYMINUTE

STRDSPYSECOND

STRDSPYMSECOND

MOVAH,0BH

INT21H

CMPAL,00H

JNZEXITT

JMPLOOPR

EXITT:

SETCRT

CLEAR

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

2、从“2.6.5实验习题”中任选一道题目,画出流程图,编写源程序,并说明在调试过程中遇到了哪些问题,是如何处理的。

流程图:

代码:

DATASEGMENT

BUF1DB"Todayis$"

BUF2DB"year$"

BUF3DB"mouth$"

BUF4DB"day$"

BUF5DB"week$"

YEAR1DB20H,20H,'$'

YEAR2DB20H,20H,'$'

MOUTHDB20H,20H,'$'

DAYDB20H,20H,'$'

WEEKDB20H,20H,'$'

INFORDB"Pressanykeytoexit....$"

DATAENDS

STACKSEGMENTSTACK

SNUMDW20HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,LENGTHSNUM

MOVSP,AX

SETCRTMACRO

MOVAH,0

MOVAL,2

INT10H

ENDM

CLEARMACRO

MOVAH,06H

MOVAL,0

INT10H

ENDM

CURSORMACROROW,CLM

MOVAH,02H

MOVBH,00H

MOVDH,ROW

MOVDL,CLM

INT10H

ENDM

STRDSPYMACROSTRING

PUSHDX

PUSHAX

MOVDX,OFFSETSTRING

MOVAH,09H

INT21H

POPAX

POPDX

ENDM

TIMER1MACROREG,ADR

PUSHAX

PUSHBX

LEASI,ADR

MOVAL,REG

MOVAH,00

MOVBL,10

DIVBL

ADDAL,30H

MOV[SI],AL

ADDAH,30H

INCSI

MOV[SI],AH

POPBX

POPAX

ENDM

SETCRT

CLEAR

CURSOR7,23

STRDSPYINFOR

LOOPR:

MOVAH,2CH

INT2CH

TIMER1CH,YEAR1

TIMER1CL,YEAR2

TIMER1DH,MOUTH

TIMER1DL,DAY

TIMER1AL,WEEK

CURSOR5,15

MOVDX,OFFSETBUF1

MOVAH,09H

INT21H

STRDSPYYEAR1

STRDSPYYEAR2

MOVDX,OFFSETBUF2

MOVAH,09H

INT21H

STRDSPYMOUTH

MOVDX,OFFSETBUF3

MOVAH,09H

INT21H

STRDSPYDAY

MOVDX,OFFSETBUF4

MOVAH,09H

INT21H

MOVDX,OFFSETBUF5

MOVAH,09H

INT21H

STRDSPYWEEK

MOVAH,0BH

INT21H

CMPAL,00H

JNZEXITT

JMPLOOPR

EXITT:

SETCRT

CLEAR

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

DATASEGMENT

BUF1DB"Todayis$"

BUF2DB"year$"

BUF3DB"mouth$"

BUF4DB"day$"

BUF5DB"week$"

YEAR1DB20H,20H,'$'

YEAR2DB20H,20H,'$'

MOUTHDB20H,20H,'$'

DAYDB20H,20H,'$'

WEEKDB20H,20H,'$'

INFORDB"Pressanykeytoexit....$"

DATAENDS

STACKSEGMENTSTACK

SNUMDW20HDUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,LENGTHSNUM

MOVSP,AX

SETCRTMACRO

MOVAH,0

MOVAL,2

INT10H

ENDM

CLEARMACRO

MOVAH,06H

MOVAL,0

INT10H

ENDM

CURSORMACROROW,CLM

MOVAH,02H

MOVBH,00H

MOVDH,ROW

MOVDL,CLM

INT10H

ENDM

STRDSPYMACROSTRING

PUSHDX

PUSHAX

MOVDX,OFFSETSTRING

MOVAH,09H

INT21H

POPAX

POPDX

ENDM

TIMER1MACROREG,ADR

PUSHAX

PUSHBX

LEASI,ADR

MOVAL,REG

MOVAH,00

MOVBL,10

DIVBL

ADDAL,30H

MOV[SI],AL

ADDAH,30H

INCSI

MOV[SI],AH

POPBX

POPAX

ENDM

SETCRT

CLEAR

CURSOR7,23

STRDSPYINFOR

LOOPR:

MOVAH,2CH

INT2CH

TIMER1CH,YEAR1

TIMER1CL,YEAR2

TIMER1DH,MOUTH

TIMER1DL,DAY

TIMER1AL,WEEK

CURSOR5,15

MOVDX,OFFSETBUF1

MOVAH,09H

INT21H

STRDSPYYEAR1

STRDSPYYEAR2

MOVDX,OFFSETBUF2

MOVAH,09H

INT21H

STRDSPYMOUTH

MOVDX,OFFSETBUF3

MOVAH,09H

INT21H

STRDSPYDAY

MOVDX,OFFSETBUF4

MOVAH,09H

INT21H

MOVDX,OFFSETBUF5

MOVAH,09H

INT21H

STRDSPYWEEK

MOVAH,0BH

INT21H

CMPAL,00H

JNZEXITT

JMPLOOPR

EXITT:

SETCRT

CLEAR

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3、总结

通过这次试验,让我加深了对汇编语言的学习,虽然程序出来的方式是通过照猫画虎的,但还是对汇编有了一定的了解了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1