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

合集下载

2021年微机原理设计性实验报告DOS系统功能调用系统日期

2021年微机原理设计性实验报告DOS系统功能调用系统日期

DOS系统功效调用系统日期[试验题目]:DOS系统功效调用—系统日期[试验目]:1 熟悉DOS操作中部分常见命令;2 掌握DOS功效调用中取系统日期方法;3 了解利用展转求余将机器二进制数转化为ASCII码方法。

[试验内容]:利用DOS功效调用2AH取系统目前日期, 返回参数后分别减1后显示在屏幕上(系统目前时间为/12/19, 要求在屏幕上显示字符串THE DATE IS: /11/18)。

[试验原理]:DOS是PC机上应用广泛操作系统, 其中包含了丰富服务程序, 这些程序为DOS 功效调用。

在此试验中, 主程序先利用DOS功效调用2AH取系统目前日期, 系统将各项参数自动放入默认寄存器中(年份放入CX中,月份放入DL中, 日期放入DL中), 再将放入寄存器中参数根据年, 月, 日次序移入事先开辟对应单元内(CX中年参数移入字单元YEAR中, DH中月参数移入字节单元MONTH中, DL中日参数移入字节单元DAY中), 然后将对应寄存器清零后, 将已经存入开辟单元中参数根据年, 月, 日次序移入对应寄存器内(年参数放入AX中, 月参数和日参数放入AL中), 将参数分别减1。

调用把二进制数转换为ASCII码子程序把被减过后参数以ASCII码字符形式显示在屏幕上。

子程序用展转求余法将被减过1后参数逐位转换为ASCII 码。

将放入AX中参数作为被除数, 将放入SI中参数10作为除数。

除余数放入DX中, 商继续放在AX中。

将放入DX中二进制余数加30H转化为ASCII码, 放入年参数末尾数字6对应地址内(即BX所指向内存地址内), 随即BX值减1指针前移以存放下一个字符。

AX中商继续除10, 反复上面过程直至将参数全部转化完成。

[试验设备]:装有MASM5.0PC机一台。

[试验步骤]:1源程序编辑:在DOS环境下利用命令‘D:\>MD HUIBIAN’命令在D盘下建立一目录名为HUI BIAN子目录, 并用‘D:/>CD HUIBIAN’命令将此目录设置为目前目录。

实验六 DOS功能调用程序设计

实验六  DOS功能调用程序设计

附录
编写实验报告
DOS功能调用程序设计 DOS功能调用程序设计 实验内容 1、实验内容 1)键盘输入字符(或字符串)并显示程序设计 键盘输入字符(或字符串) 2)显示器上显示26个英文字符程序设计(一个个显示)。 显示器上显示26个英文字符程序设计(一个个显示)。 26个英文字符程序设计
2、实验目的 了解DOS功能调用程序结构,掌握其编程与调试方法。 了解DOS功能调用程序结构,掌握其编程与调试方法。 DOS用程序设计 DOS功能调用程序设计
见附录) 6、实验报告要求(见附录)
1)实验报告要求有实验目的、要求、 1)实验报告要求有实验目的、要求、设备或仪 实验报告要求有实验目的 程序设计、步骤、数据分析。 器、程序设计、步骤、数据分析。数据分析填 报告本的原始数据栏 原始数据栏。 在报告本的原始数据栏。 2)画出实验内容1)2)程序设计流程图 画出实验内容1)2)程序设计流程图、 2)画出实验内容1)2)程序设计流程图、写出程 序清单并有简要注释。 序清单并有简要注释。 3)写出实验过程中所遇到的问题与解决的办法 写出实验过程中所遇到的问题与解决的办法。 3)写出实验过程中所遇到的问题与解决的办法。
数据分析并记录
DOS功能调用程序设计 DOS功能调用程序设计 1)工作原理 5、程序设计 1)工作原理 DOS系统中设置了两层内部子程序可供用户使用 系统中设置了两层内部子程序可供用户使用: DOS系统中设置了两层内部子程序可供用户使用: 基本输入输出模块BIOS DOS层功能模块 BIOS, 基本输入输出模块BIOS,DOS层功能模块 DOS系统功能调用 类型码:21H) 系统功能调用( DOS系统功能调用(类型码:21H) 为了使用方便, DOS层功能模块所提供的100个子程序 层功能模块所提供的100 为了使用方便,将DOS层功能模块所提供的100个子程序 00H~63H统一顺序编号 为了掌握DOS系统I/O 统一顺序编号, DOS系统I/O功能调用和 从00H~63H统一顺序编号,为了掌握DOS系统I/O功能调用和 参数使用的方法。DOS系统I/O功能调用可以通过 系统I/O功能调用可以通过INT 21H软中 参数使用的方法。DOS系统I/O功能调用可以通过INT 21H软中 断指令调用DOS系统功能,调用方法如下: DOS系统功能 断指令调用DOS系统功能,调用方法如下:

补充_DOS及BIOS调用

补充_DOS及BIOS调用

计算机系统软件就是利用这些基本的设备驱动程序,完成各种 功能操作。
(2) DOS 是磁盘操作系统,它设置了一些功能调用模块,完成对文件、 设备、内存的管理。对用户来说,这些功能模块就是几十个独 立的中断服务程序,这些程序的入口地址已由系统置入中断矢
量表中,在汇编语言源程序中可用软中断指令直接调用。
BIOS和基本DOS的作用 用户可通过使用BIOS和基本DOS系统提供的这些功能模 块子程序(中断子程序调用),来编制直接管理和控 制计算机硬件设备的底层软件(主要是完成I/O操作)。 用户不必深入了解有关设备的电路和接口,只须遵照 DOS规定的调用原则即可使用。 用户编程原则 尽可能使用DOS的系统功能调用,提高程序可移植性。 在DOS功能不能实现情况下,考虑用BIOS功能调用。 在DOS和BIOS的中断子程序不能解决问题时,使用 IN/OUT指令直接控制硬件。
补充:
DOS 及 BIOS 调用
基本概念 (1) ROM BIOS PC系列机在只读存储器ROM中固化有一组外部设备驱动与管理 软件,组成PC机基本输入输出系统(Basic I/O System),它处 于系统软件的最低层,又称ROM BIOS。BIOS主要包括以下一 些功能: ①系统自检及初始化。例如,系统加电启动时对硬件进行检测; 对外部设备进行初始化;设置中断向量;引导操作系统等。 ②系统服务。为操作系统和应用程序提供系统服务,这些服务 主要与I/O设备有关,如读取键盘输入等。为了完成这些操作, BIOS必须直接与I/O设备打交道,它通过端口与I/O设备之间 传送数据,使应用程序脱离具体的硬件操作。 ③硬件中断处理。提供硬件中断服务程序。
0AH功能执行过程: ① 若[ DS:DX ]字节单元的值为0,则不等待从键盘输入, 结束调用。 ② 若[ DS:DX ] 字节单元的内容大于0,则等待从键盘输入, 并把输入键的ASCII码顺序存放在DS : DX+2开始的单元, 按回车键表示结束输入。 当按下键的个数超过[ DS : DX ]中值,发出警告声’ 嘟 嘟 ’,不再接收输入的数据, 直到输入回车键。 ③ 将实际输入的字符个数(不包括回车键)填入[ DS:DX+1], 结束调用。

汇编实验四--DOS功能调用

汇编实验四--DOS功能调用

福建农林大学金山学院实验报告系:专业:计算机科学与技术年级: 08 姓名:学号:实验课程:汇编语言实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验四 DOS功能调用1.实验目的和要求1.学会DOS中关于显示功能调用指令的用法。

2.领会修改显存方法显示字符。

2.实验环境实验的硬件环境是:IBM—PC机及其兼容机实验的软件环境是:操作系统:DOS 2.0以上;调试程序:;文本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引用程序:CREF.EXE(可有可无)。

3.实验内容及实验数据记录1、输入一个字符,显示出来2、输入一个字符串,显示出来3、buf开始的3个的16位二进制数用十六进制数的形式显示出来(1)理解程序(2)输入程序,汇编,运行(在DOS状态下输入:文件名.EXE),观察结果。

(3)如果要分行显示,程序要如何修改?DATA SEGMENTBUF DW 4F59H, 56A8H, 0FF90HDATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DA TASTART: MOV AX, DA TAMOV DS, AXMOV SI, 0P: MOV BX, BUF[SI]MOV CH, 4L: MOV CL, 4ROL BX, CLMOV DL, BLAND DL, 0FHCMP DL, 10JB NEXTADD DL, 7NEXT: ADD DL, 30HMOV AH, 2INT 21HDEC CHJNZ LINC SIINC SICMP SI, 4JNA PMOV AH, 4CHINT 21HCODE ENDSEND START4、运行下列程序,在屏幕的第1行,会显示一个字符X,理解程序段STACK SEGMENTDB 128 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART: MOV AX,STACKMOV SS,AXMOV SP,128MOV AX,0B800HMOV ES,AXMOV AH,0 ;BIOS 10H的0号功能,设置80X25的彩色字符模式 MOV AL,03HINT 10HMOV AH,'X'MOV ES:[160*1+40*2],AHMOV AL,0MOV AH,4CHINT 21HCODE ENDSEND START5、显示*************************6、编写程序,统计字缓冲区中的20个数据的正数、负数、0的个数,并将统计结果以16进制形式显示出来。

汇编语言---dos和bios功能调用

汇编语言---dos和bios功能调用

下面介绍一下其他功能: 下面介绍一下其他功能: (1)AH=25H:设置中断向量 ) : 入口参数: 中断号。 入口参数:AL=中断号。 中断号 DS:DX=中断向量。 中断向量。 : 中断向量 功能: 所指中断号的中断向量设置为DS: 。 功能:将AL所指中断号的中断向量设置为 :DX。 所指中断号的中断向量设置为 (2)AH=35H:获取中断向量 ) : 入口参数: 中断号。 入口参数:AL=中断号。 中断号 出口参数: : 中断向量。 出口参数:ES:BX=中断向量。 中断向量 功能: 的指中断号的中断向量由ES: 返回 返回。 功能:将AL的指中断号的中断向量由 :BX返回。 的指中断号的中断向量由 (3)AH=31H:程序终止并驻留内存 ) : 入口参数: 返回码。 入口参数:AL=返回码。 返回码 DX=驻留内存的节数(1字=16字节)。 驻留内存的节数( 字 字节)。 驻留内存的节数 字节 功能:终止程序执行,全由DX所确定的一部分代码工 功能:终止程序执行,全由 所确定的一部分代码工 数据仍留在内存中。 数据仍留在内存中。
• ③ 应用BIOS提供的功能程序来控制硬件。这是低层次 控制,要求编程者对硬件有相当深入的了解。当BIOS 与DOS提供的功能相同时,应首先选用DOS。BIOS固 化在ROM中,不依赖于DOS操作系统,使用BIOS软中 断调用子程序可直接控制系统硬件。BIOS调用速度快, 适用于高速运行的场合。中断调用可用软件中断指令 “INT n”来实现,n为中断类型码。使用BIOS调用的汇 编语言和C语言的程序可移植性比较差。 • • ④ 直接使用汇编语言编程进行控制。要求编程者对I/O 设备的地址、功能比较熟悉。
习 题 1.假设 假设VAR1和VAR2为字变量,LAB为标号,试指出下 为字变量, 为标号, 假设 和 为字变量 为标号 列指令的错误之处: 列指令的错误之处: (1)ADD VAR1,VAR2 ) , (2)SUB AL,VAR1 ) , (3)JMP LAB[SI] ) (4)JNZ VAR1 ) (5数据 画图说明下列语句所分配的存储空间及初始化的数据 值。 ,-12H,3 DUP (1)BYTE_VAR DB ‘BYTE’,12,- ) , ,- , ,?,2 (0,?, DUP(1,2),?) ,?, ( , ),?) ,?,-5, (2)WORD_VAR DW 5 DUP(0,1,2),?,- , ) , , ,?,- ‘BY’,‘TE’,256H , ,

实验五 DOS功能调用

实验五 DOS功能调用

实验五 DOS功能调用1、掌握DOS功能调用1、2和9、10及4CH 的使用方法;2、掌握回车与换行的使用方法。

什么是DOS功能调用?DOS为用户提供了一组常用子程序,约80多个,每个子程序都有其特定功能和功能号。

大致分为文件管理、设备管理、目录管理等。

用户只要了解子程序的功能和调用方法,就可以充分利用这些子程序。

DOS规定用中断指令INT 21H作为进入各个调用子程序的总入口,并为每个子程序规定了一个功能号,以便进入相应的子程序。

有些子程序在进入之前需要有些条件,如设置输入或输出缓冲区指针等,这些条件叫入口参数。

子程序调用之后的结果会存放在一些寄存器中,这些结果叫出口参数。

DOS功能调用的步骤:1、设置入口参数;2、功能号送入AH;3、执行 INT 21H;4、取出口参数。

翻到讲义39页,看表7.3学习功能调用1功能号:1功能:从键盘输入单个字符并回显在屏幕上入口参数:无出口参数:键盘输入字符ASCII码→AL功能调用1实验步骤:1、进入DEBUG↙2、汇编a00↙13B3:0000 MOV AH,1↙13B3:0002 INT 21↙13B3:0004↙3、执行G=0 4↙从键盘输入 1后,屏幕上显示14、取出口参数查看AX寄存器。

AL=31H1的SACII码存入AL中。

再重做一次:G=0 4↙从键盘输入 a后屏幕上显示a查看AX寄存器。

AL=61H翻到讲义41页,看图表7.4学习功能调用2功能号: 2功能:在屏幕上显示一个字符入口参数:要显示字符的ASCII码→DL出口参数:无功能调用2实验步骤:1、准备入口参数要在屏幕上显示“3”,把“3”的ASCII码33H→DLR DX↙DX 0000:0033 ↙2、汇编a00↙13B3:0000 MOV AH,2↙13B3:0002 INT 21↙13B3:0004↙3、执行G=0 4↙3 ←回显字符再重做一次:要在屏幕上显示大写字母的“A”R DX↙DX 0000:0041↙G=0 4↙A←回显字符功能调用1、2练习题:从键盘输入单个字符“1”,在屏幕上显示“2”。

实验三 DOS功能调用实验

inc ax
trans1: mov di,offset x
mov [di],ax
;把输入ASCII转换成真实值送人X变量
s2: mov dx, offset msgy
call disps
call next1
mov dx,offset ya
call inputs
lea si,ya
datdeal2:
inc si;
call next1
mov dx,offset za
call inputs
lea si,za
datdeal3:
inc si;
xor cx,cx
mov cl,[si] ;记录输入字符数
inc si ;si指向第一个ASCII字符
xor ax,ax
cmp [si],2dh ;与负号比
jz fu3
zhen3: cmp [si],30h
mov [di],ax
;把输入ASCII转换成真实值送人z变量
s4: mov dx, offset msgw
call disps
call next1
mov dx,offset wa
call inputs
lea si,wa
datdeal4:
inc si;
xor cx,cx
mov cl,[si] ;记录输入字符数
jl s2 ;非数字全部作废重新输入
cmp [si],3Ah
jnle s2 ;非数字全部作废重新输入
mov al,[si]
sub al,30h ; mov dx,10
cbw ; mul dx
xchg ax,bx ; add ax,[si]-30h
mov dx,10 ;ax=ax*10+([si]-30h )

DOS及BIOS调用


与DOS相比,BIOS是在更低的层次上为用户提供系统服务 DOS相比,BIOS是在更低的层次上为用户提供系统服务 相比 是在更低的层次上 BIOS功能调用 功能调用 类型号 00 H 01 H 02 H 03 H 04 H 05 H 06 H 07 H 08 H 09 H 0A H 0B H 0C H 0D H 0E H 0F H 10 H 中断功能 被零除 单步 不可屏蔽 断点 溢出 打印屏幕 保留 保留 日时钟 键盘 保留 串口2 串口 串口1 串口 硬盘 软盘 打印机 显示器 类型号 11 H 12 H 13 H 14 H 15 H 16 H 17 H 18 H 19 H 1A H 1B H 1C H 1D H 1E H 1F H 40 H 41 H 中断功能 设备检测 存储容量 磁盘I/O 磁盘 通信I/O 通信 盒式磁带I/O 盒式磁带I/O 键盘I/O 键盘 打印机I/O 打印机 ROM BASIC 引导 日时钟 Ctrl-Break 定时器报时 显示器参数 软盘参数 图形字符扩展 保留给软盘 硬盘参数
DOS调用与BIOS调用两者的区别 DOS调用与BIOS调用两者的区别 调用与BIOS
DOS功能调用在更高层次上提供了与BIOS类同 DOS功能调用在更高层次上提供了与BIOS类同 功能调用在更高层次上提供了与BIOS 的功能。 的功能。 DOS调用与BIOS调用两者的区别 DOS调用与BIOS调用两者的区别 调用与BIOS 调用BIOS中断程序比调用DOS的复杂一些, BIOS中断程序比调用DOS的复杂一些 调用BIOS中断程序比调用DOS的复杂一些, 但运行速度快,功能更强; 但运行速度快,功能更强; DOS功能调用只适用于DOS环境 功能调用只适用于DOS环境, BIOS功 DOS功能调用只适用于DOS环境,而BIOS功 能调用不受任何操作系统的约束; 能调用不受任何操作系统的约束; 某些功能只有BIOS具有。 BIOS具有 某些功能只有BIOS具有。

单片机-BIOS、DOS系统功能调用

目录一、课程设计目的二、任务介绍及小组成员任务分配三、设计思想及主要流程图四、主要程序清单五、运行结果及分析六、收获、体会及建议一、课程设计目的1. 进一步熟悉BIOS、DOS系统功能调用,了解基本的显存读写技术;2. 了解响铃符以及利用PC扬声器发出不同频率声音的方法;2. 学会用汇编语言编写一个较完整的实用程序,培养自己的动手操作能力;3. 学习汇编语言程序设计的基本思路和方法,编程、调试、撰写报告等;二、任务介绍及小组成员任务分配三、设计思想及主要流程图1、时间的获取调用系统日期和时间,并将调用的日期和时间数转换成ASCII码存在系统内存区的字符串中。

将存在系统内存区的日期和时间用字符串存入显存区(显存的起始地址:B800:0000)并在合适的位置显示出来。

由于获取了的系统时间不会自动刷新,所以我们要设计成刷新的方式(如利用定时器中断,中断类型号为1CH)来不断获取系统的时间,这样就形成了会跳动的电子钟了。

2、屏幕特定位置显示字符对应屏幕上的每个字符位置,显存空间都有相应的存储单元与之对应。

对应显示在屏幕上的每个字符,在存储器中由连续的两个字节表示,一个字节保存ASCII码,另一个字节保存字符的属性。

属性字节对单色显示和彩色显示都是有效的。

我们可以使用BOIS显示中断10H的各项功能来进行显示字符的编程。

3、主要流程图四、主要程序清单data segmentcount dw 1mess1 db '------------------',0dh,0ah,'$'info db 'Current time is :',0dh,0ah,'$' ;提示语datestr db '00-00-0000',0dh,0ah,'$' ;日期显示信息:month-day-yeartimestr db '00:00:00',0dh,0ah,'$' ;时间提示信息:hour:minute:second mess2 db '------------------',0dh,0ah,'$'mess3 db 'Please input"Q",to quit!',0dh,0ah,'$';提示语data endscode segmentassume cs:code,ds:datamainproc farstart:mov ax,datamov ds,axmov ah,6 ;ah=06(滚动)al=00(全屏空白)mov bh,60h ;设置背景颜色和前景颜色mov cx,0mov dx,1950h ;右下角行号,列号int 10hmov dh,5mov dl,24mov bh,0mov ah,2int 10hmov dx,offset mess3mov ah,09hint 21hmov dh,11mov dl,24mov bh,0mov ah,2int 10hmov dx,offset mess2mov ah,09hint 21hmov dh,7mov dl,24mov bh,0mov ah,2int 10hmov dx,offset mess1mov ah,09hint 21h;--------------------mov dh,8 ;设置到7行30列mov bh,0mov ah,2int 10hmov dx,offset infomov ah,09hint 21h;保存原中断向量mov al,1chmov ah,35hint 21hpush es ;获取1ch中断向量到es:bxpush bxpush ds ;保存;设置新的中断向量mov dx,offset intpromov ax,seg intpromov ds,axmov al,1chmov ah,25hint 21h ;设置中断向量ds:dxpop dsin al,21h ;读中断屏蔽寄存器and al,11111110b ;开定时器中断out 21h,al ;写中断屏蔽寄存器sti ;开中断;等待中断s:mov ah,0 ;调用键盘I/O中断功能号0,获取键值到AL int 16hcmp ah,10Hjz quit ;是Q键,退出程序jmp s;恢复1ch原中断向量quit: pop dxmov al,1chmov ah,25hint 21hmov ax,4c00hint 21hmainendp;------------------------------------------------------------------- ;中断处理程序intpro;------------------------------------------------------------------- intpro proc near;保护现场push dspush axpush cxpush dxpush bppush esmov ax,datamov ds,axstidec countjnz exitcall dispdate ;调用函数显示日期和时间call disptimeMOV count,18;声音mov dl,07mov ah,2int 21hexit:clipop bppop espop dxpop cxpop axpop dsiretintpro endp;---------------------------------------------------------------------;显示日期子程序dispdate;---------------------------------------------------------------------dispdate proc nearpush axpush cxpush dxpush si;获取系统日期:入口:ah<-2ah,出口:cx<-year,dh<-month,dl<-day mov ah,2ahint 21hmov ax,cx ;年份转4位ascii码mov bx,10lea si,datestr+9 ;指向字符串年份最后一位mov cx,4 ;年份4位,循环4次push dx ;保存月日y: xor dx,dx ;dx清零,保存余数即个位div bx ;商存ax,余数存dxadd dl,30h ;转ascii码,存datestr字符串末尾mov [si],dldec siloop ypop dx ;还原dx,处理日mov al,dlxor ah,ahdiv bl ;求日的个位,存ah,十位存aladd ax,3030h ;分别转ascii码sub si,2mov [si],ax ;存日mov al,dh ;处理月xor ah,ahdiv bl ;求月的个位,存ah,十位存aladd ax,3030h ;分别转ascii码sub si,3mov [si],ax ;存日;显示日期字符串MOV AH,2MOV BH,0MOV DH,9MOV DL,25INT 10Hmov dx,offset datestrmov ah,09hint 21hpop sipop dxpop cxpop axretdispdate endp;-------------------------------------------------------------------- ;显示时间子程序disptime;--------------------------------------------------------------------- disptime proc nearpush axpush cxpush dxpush si;获取系统时间:入口:ah<-2ch,出口:ch<-hour,cl<-minute,dh<-second mov ah,2chint 21hmov bl,10lea si,timestrmov al,ch ;处理小时xor ah,ahdiv bladd ax,3030hmov [si],axadd si,3mov al,cl ;处理分xor ah,ahdiv bladd ax,3030hmov [si],axadd si,3mov al,dh ;处理秒xor ah,ahdiv bladd ax,3030hmov [si],ax;显示时间字符串MOV AH,2MOV BH,0MOV DH,10MOV DL,25INT 10Hmov dx,offset timestrmov ah,09hint 21hpop sipop dxpop cxpop axretdisptime endpcode endsEND START五、运行结果及分析分析:因为设置了光标位置,所以时间显示在屏幕中间。

DOS和BIOS功能调用


• ① 磁盘的读/写控制。
• ② 内存管理、文件操作和目录管理。 • ③ 基本输入/输出(对键盘、打印机和显示 器等)控制,另外还有日期、时间管理等。
• 当类型码n=05H~1FH时,调用BIOS的中 断处理程序;类型码n=20H~3FH时,调 用DOS的中断处理程序。按DOS中断规定, 用指令写入口参数,然后执行INT n指令, 执行完毕后,依据结果进行分析及处理。
• 格式: MOV AH, 08H INT 21H • 功能:同1号功能调用,但字符不在屏幕上 显示。
3.屏幕显示一个字符(2号功能调 用)
• 格式: MOV DL, '字符' MOV AH, 02H INT 21H • 功能:将置入DL寄存器中的字符在屏幕上 显示输出。
4.打印输出(5号功能调用)
• LOP: ADD AL, BL MOV AH, 0BH INT 21H ; 键扫描: 无输入,AL=00H, 有 输入,AL=FFH ADD AL, 01H JNZ LOP ; 有输入则退出循环 RET
10.设置系统日期(2BH号功能调 用)
• 格式: MOV CX, 年号 MOV DH, 月号 MOV DL, 日期 MOV AH, 2BH INT 21H • 功能:设置有效的年、月、日。当AL=0 时,设置成功;当AL=0FFH时,设置失败。
• ② 当(DL)≠0FFH时,表示将DL中内容送屏幕显示输出。
9.检查键盘的工作状态(0BH号功 能调用)
• 格式: MOV AH, 0BH INT 21H • 功能:检查是否有键盘输入,若有键按下, 则使AL=0FFH,若无键按下,则AL=00H。 对于利用键盘操作退出循环或使程序结束 之类的操作来说,这种调用是很方便实用 的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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
JMP LOOPR EXITT: SETCRT
CLEAR
MOV AH, 4CH INT 21H CODE ENDS
END START 【实验结果】
【实验分析与心得体会】
通过这次试验,让我加深了对汇编语言的学习,对一些基本的指令也有了一些了解。

开始,看到题目的时候没有一个整体的概念,只是根据书中的提示以及讲解才将程序完成,但是在调试的过程中,出现了很多错误,后来慢慢核对调试,终于顺利完成并调试成功。

当屏幕上出现时间的时候,感觉很兴奋,但是再回想一下,其实自己并没有真正理解了这个题目,后来又问同学,自己思考,对这些代码有了个初步的理解,能理解这些语句的意思。

要学好汇编语言,还需要我下来再好好努力。

相关文档
最新文档