资源描述:
《宏指令与子程序设计实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验五:宏指令及子程序设计实验院系名称:电子工程学院学生姓名:李倩(33)专业名称:电子信息工程班级:电子0808宏指令及子程序设计实验5.5.1实验目的1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。3、了解宏指令与子程序的异同以及各自的适用场合。5.5.2实验预习要求1、复习宏指令的定义与调用方法。2、复习过子程序的定义与调用方法。3、根据“2.5.3实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。4、从“2.
2、5.4实验习题”中任选一道题目,编写源程序,以便上机调试。5.5.3实验内容从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。要求:①在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;②将键盘输入的十进制数转换成二进制数由子程序DTOB实现;③在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;④将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。程序运行结果如右图所示。1
3、、编程指导(1)显示提示信息的宏指令DSTRING的编写宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。下面给出实现提示信息显示的宏指令的定义:DSTRINGMACROSTRINGPUSHD
4、XPUSHAXMOVDX,OFFSETSTRINGMOVAH,09HINT21HPOPAXPOPDXENDM请读者注意,宏指令应该先定义,后调用。因此,宏定义通常紧跟在代码段中段寄存器赋值指令之后给出。(1)将键盘输入的十进制数转换为二进制数的子程序DTOB的编写子程序的定义方法请参阅教材“5.6.4子程序设计”一节。将十进制数转换为二进制数的程序代码请参阅本书“2.4.3实验内容”中“编程指导”部分。(2)在N个无符号字节型二进制数中找出最大数的子程序FMAX的编写请参阅教材“5.6.3循环程序设计”一节例5.12。(
5、3)将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD的编写程序代码请参阅本书“2.4.3实验内容”中“编程指导”部分。1、源程序:COUNTEQU10DATASEGMENTMADB0NUMDB10DUP(?)IBUFDB7,0,6DUP(?)OBUFDB6DUP(?)INFOR1DB"Pleaseinput10numbers:(<256)",10,13,'$'INFOR2DB"THEMAXFOOUNDINTHE10NUMBERSIS"INFOR3DB10,13,'$'DATAENDSSTACKSE
6、GMENTSTACKDATA2DW40DUP(?)TOPEQULENGTHDATA2STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXDSTRINGMACROSTIPUSHDXPUSHAXLEADX,STIMOVAH,9INT21HPOPAXPOPDXENDMDSTRINGINFOR1MOVBX,OFFSETNUMMOVCX,COUNTLOOP1:CAL
7、LSTOBDSTRINGINFOR3MOV[BX],ALINCBXLOOPLOOP1MOVAX,OFFSETNUMPUSHAXMOVCX,COUNTPUSHCXCALLFMAXDSTRINGINFOR2CALLBTOADMOVAH,4CHINT21HSTOBPROCPUSHCXPUSHBXPUSHDXMOVDX,OFFSETIBUFMOVAH,10INT21HMOVCL,IBUF[1]XORCH,CHMOVDL,0MOVBL,1MOVSI,OFFSETIBUF[1]INCSIADDSI,CXLOP5:MOVAL,[SI]
8、SUBAL,30HMULBLADDDL,ALMOVAL,10MULBLMOVBL,ALDECSILOOPLOP5MOVAL,DLPOPDXPOPBXPOPCXRETSTOBENDP;定义在N个无符号字节型二进制数中找出最大数的子程序FMAXFMAXPROCMOVBP,SPMOVSI,[BP+4]movCX,[BP+2