《微机原理与应用实验报告3.docx》由会员分享,可在线阅读,更多相关《微机原理与应用实验报告3.docx(6页珍藏版)》请在三一办公上搜索。
1、微机原理与应用实验报告3西华大学实验报告 第 组 西华大学实验报告 开课学院及实验室: 电气信息学院 6A-217 学 生 姓 名 学生所在学院 课 程 名 称 实验项目名称 学号 电气信息学院 微机原理与应用 软件中断调用实验 实验时间 : 成 绩 年级/专业/班 课 程 代 码 项 目 代 码 项 目 学 分 年 月 日 装 订 线 指 导 教 师 一、实验目的 1、熟练掌握DOS 中断功能调用及BIOS 中断调用方法。 2、熟练掌握全屏幕文本编辑应用软件的用法; 3、学习调用宏汇编程序来汇编源程序; 4、学习调用连接程序来获得可执行的目标程序; 5、进一步熟悉MS-DOS 操作系统的常用
2、命令; 二、实验原理 DOS 功能调用 DOS软件中断调用过程 1、将功能调用号传送到AH 中; 2、把调用参数传送到规定寄存器中; 3、发中断命令INT N; 4、在返回参数寄存器或存储器区域查询执行结果; 第 1 页 西华大学实验报告 实验内容: 1、基本实验:编写一个程序实现在CRT 上循环显示0-9 共50 次,即0 1 2 3 4 5 6 7 8 9 0 1 2 3,最好显示一个字符后有一定延时。 2、设计实验:编程实现模拟计算机开机密码输入过程,即显示“Password:”,等待用户输入密码,每输入一个字符显示一个*,要求把输入的口令存储在buffer 为起始地址的内存区域。 3、
3、设计实验:编写一个程序,把从键盘输入的十个大写字母转换为小写字母,并在屏幕上显示出来。 三、实验设备、仪器及材料 1、微机系统一套及EL-1 微机实验教学系统一套; 2、宏汇编语言汇编连接工具软件、汇编集成编辑器、EDIT.COM、Windows 的记事本; 3、DEBUG 调试工具; 四、实验步骤 1、建立源程序 用汇编集成编辑器或编辑程序EDIT.COM、Windows记事本建立汇编语言源程序的磁盘文件。 2、对源文件进行汇编 汇编时,汇编程序对要不要建立这些文件采用屏幕对答式提问,你必须逐项回答。汇编时发现源程序中有语法错误,则显示有错误的语句序号和错误代码,最后列出错误总数。这时,要仔
4、细分析出错误信息表。再调用EDIT 对源程序进行修改。 3、对源程序进行修改 在系统提示符下输入命令:F:EDIT A:MONTH.ASM 这时可对原文件进行删除、插入等修改编辑操作,修改结束后存盘。然后再调用MASM 对修改后的源程序汇编,如果程序还有错误,又调用EDIT 对它进行修改、再汇编,直到程序汇编通过为止。汇编通过后,在A 盘中生成*.obj,*.lst,*.crf 三个文件。 4、目标文件的连接 用LINK 连接目标文件,可以采用三种方式:交护式;命令方式;命令文件方式。下面仅介绍交互式的连接过程,其他方式和多个目标文件的连接请参考DOS 使用手册。连接通过,在A 盘上生成MON
5、TH.EXE 的可执行文件。如果读者不希望作人机对话输入,那麽可以用下汇编连接方法: F:MASM MONTH; F:LINK MONTH; 5、用户程序的调试运行 在DOS 状态下运行程序,再根据设计要求逐项测试程序功能。这是因为经过汇编、连接生成的可执行文件,虽然已经排除了源程序在语法上的错误,但还不能保证程序的功能,如果存在差错或有需要删改的地方,则重复编辑、汇编、运行步骤,直到程序功能完全符合要求为止。用户的可执行程序,也可以在DEBUG 程序管理下进行单步、断点、连续运行、以及进行增加、删改等修改操作。 第 2 页 西华大学实验报告 五、实验过程记录(数据、图表、计算等) code
6、segment assume cs:code go: mov cx,50 ;循环控制 next:mov al,0 ;输入0 do0: mov dl,al ;将0给dl mov ah,02 ;调用显示中断 int 21h ;调用中断,显示al中的数字 cmp al,9 ;将al与9进行比较 jae do1 ;如果al=9 ,则跳到do1 inc al ;如果al9,al+1 jmp do0 ;跳到do0 jmp do0 ;跳到do0 do1: dec cx ;cx-1 mov dl, ;将 给dl mov ah,02 ;调用显示中断 int 21h ;调用中断,显示al中的数字 jnz next
7、 ;如果cx不为0,那么跳到next mov ah,4ch ;结束 int 21h code ends end go data segment str db 0ah,0dh, Enter password:$ ;定义一个字符串 str1 db 0ah,0dh, Your password is:$ ;定义一个字符串 buf db 6 dup(?),$ ;定义6个0 data ends code segment mov ah,02 ;调用显示输出中断 assume cs:code,ds:data int 21h ;调用显示输出中断 go: push ds ;初始化 inc di ;di+1 mo
8、v ax,0 dec cx ;cx-1 push ax jnz next ;cx不到0,调到next mov ax,data lea dx,str1 ;将str1的地址给dx mov ds,ax ;初始化 mov ah,09 ;调用显示字符串中断 lea dx,str ;将str的地址给dx int 21h ;调用显示字符串中断 mov ah,09 ;调用显示字符串中断 lea dx,buf ;将buf的地址给dx int 21h ;调用显示字符串中断 mov ah,09 ;调用显示字符串中断 lea di,buf ;将buf的地址给di int 21h ;调用显示字符串中断 mov cx,6
9、 ;循环次数为6 mov ah,4ch ;结束 next:mov ah,07h ;调用键盘输入中断 int 21h int 21h ;调用键盘输入中断 mov di,al ;将键盘输入的值给dsdi处 code ends end go mov dl,* ;把*给dl 第 3 页 西华大学实验报告 data segment str db 0ah,0dh, Enter string:$ ;定义一个字符串 str1 db 0ah,0dh, Change to:$ ;定义一个字符串 buf db 10 dup(?),$ ;定义10个0 data ends code segment assume cs:
10、code,ds:data go: push ds ;初始化 mov ax,0 push ax mov ax,data mov ds,ax lea dx,str ;初始化 mov ah,09 ;调用显示字符串中断 int 21h ;调用显示字符串中断 lea di,buf ;将buf的地址给di mov cx,10 ;循环次数 next:mov ah,01h ;调用键盘输入并显示中断 int 21h ;调用键盘输入并显示中断 cmp al,Z ;将输入字与Z比较 ja do0 ;输入为小写,那么跳到do add al,a-A ;否则为大写,al+32 jmp do1 ;跳到do1 do0: sub al,a-A ;将al-32 do1: mov di,al ;将al送到ds:di inc di ;di+1 dec cx ;cx-1 jnz next ;cx不为,跳到next lea dx,str1 ;将str1的地址给dx mov ah,09 ;调用显示字符串中断 int 21h ;调用显示字符串中断 lea dx,buf ;将buf的地址给dx mov ah,09 ;调用显示字符串中断 int 21h ;调用显示字符串中断 mov ah,4ch ;结束 int 21h code ends end go 六、实验结果分析及问题讨论 第 4 页