微机原理与应用实验报告-3(软件中断调用实验)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

西华大学实验报告第1页第组西华大学实验报告(理工类)开课学院及实验室:电气信息学院6A-217实验时间:年月日学生姓名学号成绩学生所在学院电气信息学院年级/专业/班课程名称微机原理与应用课程代码实验项目名称软件中断调用实验项目代码指导教师项目学分一、实验目的1、熟练掌握DOS中断功能调用及BIOS中断调用方法。2、熟练掌握全屏幕文本编辑应用软件(如EDIT.COM、Windows的记事本、各种汇编集成编辑器)的用法;3、学习调用宏汇编程序(MASM.EXE)来汇编源程序;4、学习调用连接程序(LINK.EXE)来获得可执行的目标程序;5、进一步熟悉MS-DOS操作系统的常用命令;二、实验原理(一)DOS功能调用(二)DOS软件中断调用过程1、将功能调用号传送到AH中;2、把调用参数(入口参数)传送到规定寄存器中;3、发中断命令INTN;4、在返回参数(出口参数)寄存器或存储器区域查询执行结果;装订线西华大学实验报告第2页(三)实验内容:1、基本实验:编写一个程序实现在CRT上循环显示0-9共50次,即01234567890123…,最好显示一个字符后有一定延时。2、设计实验:编程实现模拟计算机开机密码输入过程,即显示“Password:”,等待用户输入密码(1-6位),每输入一个字符显示一个‘*’,要求把输入的口令存储在buffer为起始地址的内存区域。3、设计实验:编写一个程序,把从键盘输入的十个大写字母转换为小写字母,并在屏幕上显示出来。三、实验设备、仪器及材料1、微机系统一套及EL-1微机实验教学系统一套;2、宏汇编语言汇编连接工具软件、汇编集成编辑器、EDIT.COM、Windows的记事本;3、DEBUG调试工具(DEBUG的使用方法参见实验一);四、实验步骤(按照实际操作过程)1、建立源程序用汇编集成编辑器或编辑程序EDIT.COM、Windows记事本建立汇编语言源程序的磁盘文件。2、对源文件进行汇编汇编时,汇编程序对要不要建立这些文件采用屏幕对答式提问,你必须逐项回答。汇编时发现源程序中有语法错误,则显示有错误的语句序号和错误代码,最后列出错误总数。这时,要仔细分析出错误信息表。再调用EDIT对源程序进行修改。3、对源程序进行修改在系统提示符下输入命令:F:\EDITA:MONTH.ASM这时可对原文件进行删除、插入等修改编辑操作,修改结束后存盘。然后再调用MASM对修改后的源程序汇编,如果程序还有错误,又调用EDIT对它进行修改、再汇编,直到程序汇编通过为止。汇编通过后,在A盘中生成*.obj,*.lst,*.crf三个文件。4、目标文件的连接用LINK连接目标文件,可以采用三种方式:交护式;命令方式;命令文件方式。下面仅介绍交互式的连接过程,其他方式和多个目标文件的连接请参考DOS使用手册。连接通过,在A盘上生成MONTH.EXE的可执行文件。如果读者不希望作人机对话输入,那麽可以用下汇编连接方法:F:\MASMMONTH;F:\LINKMONTH;5、用户程序的调试运行在DOS状态下运行程序,再根据设计要求逐项测试程序功能。这是因为经过汇编、连接生成的可执行文件,虽然已经排除了源程序在语法上的错误,但还不能保证程序的功能,如果存在差错或有需要删改的地方,则重复编辑、汇编、运行步骤,直到程序功能完全符合要求为止。用户的可执行程序,也可以在DEBUG程序管理下进行单步、断点、连续运行、以及进行增加、删改等修改操作。西华大学实验报告第3页五、实验过程记录(数据、图表、计算等)codesegmentassumecs:codego:movcx,50;循环控制next:moval,'0';输入’0’do0:movdl,al;将0给dlmovah,02;调用显示中断int21h;调用中断,显示al中的数字cmpal,'9';将al与‘9’进行比较jaedo1;如果al=’9’,则跳到do1incal;如果al’9’,al+1jmpdo0;跳到do0datasegmentstrdb0ah,0dh,'Enterpassword:$';定义一个字符串str1db0ah,0dh,'Yourpasswordis:$';定义一个字符串bufdb6dup(?),'$';定义6个0dataendscodesegmentassumecs:code,ds:datago:pushds;初始化movax,0pushaxmovax,datamovds,ax;初始化leadx,str;将str的地址给dxmovah,09;调用显示字符串中断int21h;调用显示字符串中断leadi,buf;将buf的地址给dimovcx,6;循环次数为6next:movah,07h;调用键盘输入中断int21h;调用键盘输入中断mov[di],al;将键盘输入的值给ds[di]处movdl,'*';把’*’给dljmpdo0;跳到do0do1:deccx;cx-1movdl,'';将’’给dlmovah,02;调用显示中断int21h;调用中断,显示al中的数字jnznext;如果cx不为0,那么跳到nextmovah,4ch;结束int21hcodeendsendgomovah,02;调用显示输出中断int21h;调用显示输出中断incdi;di+1deccx;cx-1jnznext;cx不到0,调到nextleadx,str1;将str1的地址给dxmovah,09;调用显示字符串中断int21h;调用显示字符串中断leadx,buf;将buf的地址给dxmovah,09;调用显示字符串中断int21h;调用显示字符串中断movah,4ch;结束int21hcodeendsendgo西华大学实验报告第4页datasegmentstrdb0ah,0dh,'Enterstring:$';定义一个字符串str1db0ah,0dh,'Changeto:$';定义一个字符串bufdb10dup(?),'$';定义10个0dataendscodesegmentassumecs:code,ds:datago:pushds;初始化movax,0pushaxmovax,datamovds,axleadx,str;初始化movah,09;调用显示字符串中断int21h;调用显示字符串中断leadi,buf;将buf的地址给dimovcx,10;循环次数next:movah,01h;调用键盘输入并显示中断int21h;调用键盘输入并显示中断六、实验结果分析及问题讨论cmpal,'Z';将输入字与’Z’比较jado0;输入为小写,那么跳到doaddal,'a'-'A';否则为大写,al+32jmpdo1;跳到do1do0:subal,'a'-'A';将al-32do1:mov[di],al;将al送到ds:[di]incdi;di+1deccx;cx-1jnznext;cx不为,跳到nextleadx,str1;将str1的地址给dxmovah,09;调用显示字符串中断int21h;调用显示字符串中断leadx,buf;将buf的地址给dxmovah,09;调用显示字符串中断int21h;调用显示字符串中断movah,4ch;结束int21hcodeendsendgo

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功