#09级使用汇编实验指导书.docx
- 文档编号:8506672
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:12
- 大小:20.04KB
#09级使用汇编实验指导书.docx
《#09级使用汇编实验指导书.docx》由会员分享,可在线阅读,更多相关《#09级使用汇编实验指导书.docx(12页珍藏版)》请在冰豆网上搜索。
#09级使用汇编实验指导书
实验一上机过程及DEBUG命令练习………………………2
实验二简单程序实验……………………………………17
实验三分支结构程序实验…………………………………20
实验四循环结构程序实验…………………………………21
实验五子程序实验…………………………………………23
实验六宏程序实验…………………………………………27
实验七中断实验……………………………………………28
实验八文件操作编程实验…………………………………30
附录A出错信息…………………………………………………32
附录BDOS功能调用说明………………………………………39
实验一上机过程及DEBUG命令练习
一、实验目的
了解宏汇编语言程序上机的一般过程;掌握汇编语言源程序的建立和编辑方法;掌握汇编语言源程序的汇编、连接、运行等上机过程操作;熟练掌握调试工具DEBUG的各种调试命令和程序调试的方法。
二、实验题目
将内存DATA单元存放的无符号字节数据拆成2位十六进制数分别存入HEX和HEX+1单元。
三、实验内容和步骤
1、在EDIT下建立源程序,进行汇编、连接、生成可执行文件。
2、仔细阅读在汇编过程及链接过程中生成的.lst文件、.CRF文件和.MAP文件内容。
3、在DEBUG下使用T或P命令单步运行程序,检查每一步运行结果。
4、在DEBUG下使用G命令用断点和连续两种方式运行程序并检查结果。
四、实验准备
1、详细阅读实验指导书的相关内容;
2、预习编辑程序及MASM、LINK、DEBUG等软件的操作方法和各种命令的使用方法;
3、按实验要求画出程序框图、编好试验程序;
4、设计好实验的每一个操作步骤,给出两组不同的实验数据和预期的结果。
五、实验报告要求
1、给出实际上机操作的过程和结果;
2、给出调试后正确运行的程序清单和框图;
3、对调试过程中遇到的问题做出总结。
实验二简单程序实验
一、实验目的
熟悉有关字符I/O的系统功能调用方法;掌握接受键盘输入和向显示器输出字符的编程方法,建立I/O数据处理的概念。
二、实验题目
1、编写一个检查密码的程序。
首先提示用户输入密码,然后程序接收用户输入的密码(6位)并和正确的密码比较。
如输入的密码正确,程序响铃(或显示OK)后退出程序,否则提示用户密码错误,重新输入。
允许输入三次,都不正确,退出程序。
2、将AL中已知的二进制数以十六进制数形式显示出来。
三、实验内容和步骤
1、在EDIT或其他文本编辑工具下建立源程序,进行汇编、连接、生成可执行文件;
2、在DEBUG下使用T或P命令单步运行程序,检查每一步运行的结果;
3、在DEBUG下使用G命令用断点和连续两种方式运行程序并检查结果;
4、在DOS下运行程序。
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求画出程序框图、编好试验程序;
3、设计好实验的每一步骤。
五、实验报告要求
1、给出实际上机操作的过程和结果;
2、给出调试后正确运行的程序清单和框图;
3、对调试过程中遇到的问题做出总结。
六、实验背景知识
1、输入输出数据的处理
关于字符输入输出的系统功能调用,必须注意的是,这些功能输入输出的只能是字符(即ASCII码),当我们要从键盘上输入数据给程序或将计算结果显示在屏幕上时,就会遇到数据的输入输出处理问题。
输入的数据是以ASCII码被接收的,一般变换成数字才能参和运算。
例如,用键盘输入一个数据“8”,程序中使用1H号功能接收:
MOVAH,1
INT21H
这样,我们将在AL中获得“8”的ASCII码“38H”,显然它不能作为数值参和运算,必须使“38H”变为“8”才行。
可以使用如下语句变换:
ANDAL0FH
或者SUBAL,30H
反之,要输出一个数据,先要将其转换成ASCII码,才能输出到屏幕上正确显示。
例如,某程序查表得到8的平方值64,这个结果以十进制形成被存放在AL中(高4位为6的BCD码,低4位为4的BCD码)现在要显示这个结果,就必须事先将6和4分别变成它们的ASCII码36H和34H,才能在屏幕上显示出64来,完成这个功能的程序段如下:
MOVBL,AL;保存结果的付本
MOVCL,4
SHRAL,CL;将高半字节移到低半字节
ORAL,30H;十位上的数变成ASCII码
MOVAH,2
MOVDL,AL
INT21H;输出十位数
ANDBL,OFH
ORBL,30H;个位上的数变成ASCII码
MOVDL,BL
MOVAH,2
INT21H;输出个位数
以上就是简单的I/O数据处理。
一般,汇编语言程序使用DOS的基本I/O功能调用进行输入输出时,数据的输入输出处理由用户自己编程实现。
2、使用功能调用进行输出显示时屏幕格式的控制
使用02H或O9H等功能输出字符时,字符显示在屏幕当前光标位置上,我们可以通过向显示器输出特殊的控制符来控制字符的显示格式,常用的控制符如下:
1)换行符OAH它使光标下移一行,而列值保持不变;
2)回车符ODH使光标返回到一行的起始位置,行值保持不变;
3)空格符20H使光标向后移动一个列位置;
4)退格符08H使光标向回移动一个列位置;
例如:
用09H功能显示一个字符串,为使这个字符串单独显示在一行的中间位置,可定义这个字符串如下:
STRINGDB0AH,0DH,8DUP(20H),‘HelloAssembler!
’0AH,0DH,‘$’
合理使用这些控制符,可控制屏幕显示格式。
另外,还有一些很有用的控制符,如响铃符07H等,读者可自己去偿试。
实验三分支结构程序实验
一、实验目的
掌握分支结构程序的分支控制方法和程序实现技巧;掌握十进制数转换为ASCII码的方法;进一步熟悉有关字符I/O的系统功能调用方法。
二、实验题目
在以0ffh结尾的组合十进制数据块中(0-99的数),寻找最小值,将其显示在屏幕上。
三、提示和说明
算法分析:
先取第一个数当作最小数投入寄存器AL中,依次和下一个数比较。
如果某个被比较的数比AL中的数小,则将其放入AL中,替换AL中原来的数,否则不替换,往下比较,最后AL中保存的数就是要找的最小数。
I/O数据处理:
要将找到的最小值(2位组合十进制)输出显示,必须将十位和个位分别变成ASCII码才能用2号功能调用输出显示。
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求画出程序框图、编好试验程序;
3、设计好实验的每一步骤。
五、实验报告要求
1、给出实际上机的过程和结果;
2、给出调试后运行正确的程序清单和框图;
3、对调试过程中遇到的问题做出总结。
实验四循环结构程序实验
一、实验目的
掌握循环结构程序设计方法和几种常用的循环控制方法;掌握单重循环和多重循环程序设计技巧。
二、实验题目
已知数组A中包含15个互不相等的无符号字节数据,数组B中有20个互不相等的无符号字节数据,编程将同时出现在A、B中的数存入数组C中。
三、提示和说明
算法分析:
先取数组A中的第一个数和数组B中的数依次比较是否相等,若相等将这个数放入数组C中,再取数组A中的下一个数做同样的操作。
这是一个二重循环程序,内循环是一个条件判断循环,循环的条件是比较不等时循环,最大循环次数是数组B的元素个数20。
外循环是循环次数已知的循环,可以用计数法控制循环,循环次数为数组A中的元素个数。
程序设计的关键问题是两层循环都要用到循环计数器CX,因此,在进入内循环时,要将CX中外循环计数值压栈保护,返回外循环时恢复。
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求画出程序框图、编好试验程序;
3、设计好循环程序调试的步骤。
五、实验报告要求
1、给出实际上机的过程和结果;
2、给出调试后运行正确的程序清单和框图;
3、对调试过程中遇到的问题做出总结。
实验五子程序实验
一、实验目的
通过实验观察子程序调用和返回的过程和堆栈的变化;掌握子程序设计时现场保护的方法,主、子程序之间参数传递方法;掌模块的划分方法和多模块编程时模块间参数的传递方法,掌握嵌套子程序设计方法。
二、实验题目
设内存buf开始的单元存放若干个无符号字节数据,数据的个数在COUNT单元。
用子程序的方法将其转换为十六进制数的ASCII码存入ASC开始的存储区,以备输出显示。
三、提示和说明
可以用子程序嵌套方式解决该问题。
首先设计一个将一位十六进制数转换成ASCII码的子程序HTOA。
再利用HTOA设计一个将字节数据(2位十六进制数)转换成ASCII码的子程序BHTOA,在主程序中循环利用该子程序就可实现题目的要求。
参考程序:
一位十六进制数转换成ASCII码的子程序HTOA的定义:
HTOA的说明文件:
1)子程序名:
HTOA;
2)功能:
将一位十六进制数转换成ASCII码;
3)入口条件:
被转换的数在AL中的第四位;
4)出口条件:
转换的结果在AL中;
5)受影响的寄存器:
AL,标志寄存器F。
程序代码:
HTOAprocfar
andal,0fh
cmpal,10
JCnext
Addal,7
next:
addal,30h
ret
HTOAendp
利用HTOA,通过2次调用就可是现将一个字节数据(2位十六进制数)转换为相应的ASCII码,编写这样的子程序BHTOA如下:
BHTOA的说明文件:
子程序名:
BHTOA;
功能:
将一字节数据转换成2位十六进制数的ASCII码;
入口条件:
被转换的数在AL中;
出口条件:
转换的高位ASCII码在AH中,低位ASCII
码在AL中;
受影响的寄存器:
AX,标志寄存器;
本程序调用将一位十六进制数转换成ASCII码的子程序
HTOA。
子程序BHTOA代码:
BHTOAprofar
pushcx
movch,al
movcl,04
shral,cl
callHTOA
movah,al
moval,ch
calHTOA
popcx
ret
BHTOAendp
通过上面子程序的设计,我们就可以编写主程序,实现题目的要求,一个参考程序如下:
datasegment
bufdb2ah,10h,25h,47h,0A6h,7ch;实验数据
countegu$-buf
ASCdb12dup(0)
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
leasi,buf
leadi,ASC
movcx,count
again:
moval,[si]
callBHTOA
mov[di],ah
incdi
incsi
Loopagain
movah,4ch
int21h
HTOAprocfar
andal,0fh
cmpal,10
jcnext
addal,7
next:
addal,30h
ret
HTOAendp
BHTOAprocfar
pushcx
movch,al
movcl,4
shral,cl
callHTOA
movah,al
moval,ch
callHTOA
popcx
ret
BHTOAendp
codeends
endstart
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求画出程序框图、编好试验程序;
3、设计好循环程序调试的步骤。
五、实验报告要求
1、画出子程序调用过程堆栈的变化过程;
2、给出调试后运行正确的程序清单和框图;
3、对调试过程中遇到的问题做出总结。
实验六宏程序实验
一、实验目的
掌握宏定义和宏调用以及宏中参数的使用方法;了解宏嵌套一般方法;掌握宏库的建立和使用方法。
二、实验题目
设内存buf开始的单元存放若干个无符号字节数据,数据的个数在COUNT单元。
用宏的方法将其转换为十六进制数的ASCII码存入ASC开始的存储区,并将其输出显示。
三、提示和说明
可以将一位十六进制数转换成ASCII码的过程定义成一个宏。
也可以用宏嵌套的方法定义一个将字节数据(2位十六进制数)转换成ASCII码的宏,同时将输出显示定义成另一个宏。
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求画出程序框图、编好试验程序;。
3、设计好程序调试的步骤。
五、实验报告要求
1、给出调试后运行正确的程序清单和框图;
2、给出宏扩展后的列表文件清单;
3、对调试过程中遇到的问题做出总结。
实验七中断实验
一、实验目的
掌握中断驱动程序的初始化和安装方法;掌握修改或替换系统中断的方法和技巧;
开发用户中断驱动程序的编写、安装和驻留驻内存的方法;通过上机查看系统的中断向量表进一步理解和掌握修改或替换系统中断,提取中断向量,修改中断向量,重置中断向量的方法。
二、实验题目
利用中断,编写一个后台定时任务调度程序。
设有3个需定时处理的任务,对应的处理程序为。
设sub1每2秒之行一次,sub2每10秒钟执行一次,sub3每1分钟执行一次。
三、提示和说明
任务调度程序应该不影响cpu执行其它任务。
因此,它必须是一个系统自动触发的定时中断程序。
利用系统的时钟中断(1ch),每55ms被系统自动调用一次的原理,将系统的1ch号中断驱动程序用任务调度程序替换。
通过中断计时,实现定时任务的调度。
实验中3个被调度的任务子程序sub1、sub2、sub3的功能可以由实验者自己设计确定。
下面给出的sub1、sub2、sub3参考程序功能是分别显示字符A、B、C。
sub1、sub2、sub3参考程序如下:
sub1procfar;利用int10h的14号功能显示字母‘A’
moval,‘A’
movbh,0
movah,14
int10h
sub1endp
sub2procfar;定时显示‘B’
moval,‘B’
movbh,0
movah,14
int10h
sub2endp
sub3procfar;sub3定时显示‘C’
moval,‘B’
movbh,0
movah,14
int10h
sub3endp
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求分别画出中断驱动程序和中断初始化程序的框图、编写好中断初始化程序和中断驱动程序;
3、设计好程序调试的步骤。
五、实验报告要求
1、给出调试后运行正确的程序清单和框图;
2、给出实验前后的中断向量表,对照其不同;
3、对调试过程中遇到的问题做出总结。
实验八文件操作编程实验
一、实验目的
了解有关文件操作的系统功能调用方法;掌握使用文件句柄功能实现文件操作的编程方法;掌握对标准字符I/O设备用文件操作功能实现输入输出的方法。
二、实验题目
1、用文件操作功能将一个字符串输出显示到屏幕上。
2、(选做)
用文件操作功能实现将用户指定的文本文件的内容在屏幕上显示出来。
用户通过键入文件名来指定要显示的文件。
三、提示和说明
对显示器进行文件操作可以有两种方法:
一种是直接利用系统预置给标准输出设备的句柄号对其直接进行文件的写操作;另一种方法是用标准输出设备逻辑名“CON”对显示器进行打开操作,凭借获得的系统重新分配给显示器的句柄对其进行文件写操作。
四、实验准备
1、详细阅读实验指导书的相关内容;
2、按实验题目要求画出程序框图;
3、编写好实验程序;
3、设计好程序调试的方法和步骤。
五、实验报告要求
1、给出调试后运行正确的程序清单和框图;
2、对调试过程中遇到的问题做出总结;
3、给出选做题的实现思路或实验结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 09 使用 汇编 实验 指导书