宏指令及子程序设计实验_第1页
宏指令及子程序设计实验_第2页
宏指令及子程序设计实验_第3页
宏指令及子程序设计实验_第4页
宏指令及子程序设计实验_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

院系名称:院系名称:学生姓名:专业名称:班级:实验五:宏指令及子程序设计实验电子工程学院李倩(33)电子信息工程

电子0808

宏指令及子程序设计实验5.5.1实验目的1、熟悉宏指令、宏定义、宏调用以及宏展开的概念;掌握宏指令的定义与调用的方法。2、掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。3、了解宏指令与子程序的异同以及各自的适用场合。5.5.2实验预习要求1、复习宏指令的定义与调用方法。2、复习过子程序的定义与调用方法。3、根据“2.5.3实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。4、从“2.5.4实验习题”中任选一道题目,编写源程序,以便上机调试。5.5.3实验内容从键盘输入10个无符号十进制数(小于256),将其转换为二进制数并存放在NUM字节型变量中,找出其中的最大数,并将找出的最大数在屏幕上显示出来。要求:在屏幕上显示字符串提示信息的功能由宏指令DSTRING实现;将键盘输入的十进制数转换成二进制数由子程序DTOB实现;在N个无符号字节型二进制数中找出最大数的功能由子程序FMAX实现;将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的功能由子程序BTOAD实现。程序运行结果如右图所示。1、编程指导(1)显示提示信息的宏指令DSTRING的编写宏指令通常用于在程序中需要反复使用但所需指令条数又不是很多的情形;而对于需要经常使用且需要较多指令才能完成的功能通常通过子程序调用来实现。这是因为,从执行速度上看,由于子程序调用涉及到保护断点的操作,因此,子程序调用比宏调用执行时间相对要稍长一些;但从生成的可执行文件的大小方面考虑,子程序调用生成的文件要小一些。读者在进行汇编语言程序设计时,应综合考虑两者的利弊,以便进行合理选择。下面给出实现提示信息显示的宏指令的定义:DSTRINGMACROSTRINGPUSHDXPUSHAXMOVDX,OFFSETSTRINGMOVAH,09HINT21HPOPAXPOPDXENDM请读者注意,宏指令应该先定义,后调用。因此,宏定义通常紧跟在代码段中段寄存器赋值指令之后给出。将键盘输入的十进制数转换为二进制数的子程序DTOB的编写子程序的定义方法请参阅教材“5.6.4子程序设计”一节。将十进制数转换为二进制数的程序代码请参阅本书“2.4.3实验内容”中“编程指导”部分。在N个无符号字节型二进制数中找出最大数的子程序FMAX的编写请参阅教材“5.6.3循环程序设计”一节例5.12。将一个无符号字节型二进制数转换为十进制数并在屏幕上显示的子程序BTOAD的编写程序代码请参阅本书“2.4.3实验内容”中“编程指导”部分。2、源程序:COUNTEQU10DATASEGMENTMADB0NUMDB10DUP(?)IBUFDB7,0,6DUP(?)OBUFDB6DUP(?)INFOR1DB"Pleaseinput10numbers:(<256)”,10,13,'$'INFOR2DB"THEMAXFOOUNDINTHE10NUMBERSIS"INFOR3DB10,13,'$'DATAENDSSTACKSEGMENTSTACKDATA2DW40DUP(?)TOPEQULENGTHDATA2STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXDSTRINGMACROSTIPUSHDXPUSHAXLEADX,STIMOVAH,9INT21HPOPAXPOPDXENDMDSTRINGINFOR1MOVBX,OFFSETNUMMOVCX,COUNTLOOP1:CALLSTOBDSTRINGINFOR3MOV[BX],ALINCBXLOOPLOOP1MOVAX,OFFSETNUMPUSHAXMOVCX,COUNTPUSHCXCALLFMAXDSTRINGINFOR2CALLBTOADMOVAH,4CHINT21HSTOBPROCPUSHCXPUSHBXPUSHDXMOVDX,OFFSETIBUFMOVAH,10INT21HMOVCL,IBUF[1]XORCH,CHMOVDL,0MOVBL,1MOVSI,OFFSETIBUF[1]INCSIADDSI,CXLOP5:MOVAL,[SI]SUBAL,30HMULBLADDDL,ALMOVAL,10MULBLMOVBL,ALDECSILOOPLOP5MOVAL,DLPOPDXPOPBXPOPCXRETSTOBENDP;定义在N个无符号字节型二进制数中找出最大数的子程序FMAXFMAXPROCMOVBP,SPMOVSI,[BP+4]movCX,[BP+2]DECCXMOVAL,[SI]LOP2:INCSIMOVAH,[SI]CMPAH,ALJBENEXTXCHGAH,ALNEXT:LOOPLOP2MOVMA,ALRETFMAXENDPBTOADPROCMOVAL,MAXORAH,AHMOVBL,100MOVCX,3LOP3:DIVBLPUSHAXMOVDL,ALADDDL,30HMOVAH,2INT21HMOVAL,BLXORAH,AHMOVBL,10DIVBLMOVBL,ALPOPAXMOVAL,AHXORAH,AHLOOPLOP3RETBTOADENDPCODEENDSENDSTART实验结果:E:\masm>tr.exePleaseinput10numbers:<<256>B312347882.5.4实验习题12.5.4实验习题1、从键盘输入N个十进制THEMAXFOOUNDINTHE10NUMBERSIS将累加结果在屏幕上显示出数,求来。要求给出必要的提示信息(用宏调用完成)累加功能由子程序调用实现;二进制数形式的累加和转换为十进制数并显示由子程序调用实现。将累加结果在屏幕上显示出源程序:COUNTEQU10DATASEGMENTNUMDW10DUP(?)IBUFDB6,0,6DUP(?)SUMDW0INFOR1DB"Pleaseinput10numbers:”,10,13,'$'INFOR2DB"THESUMIS"INFOR3DB10,13,'$'DATAENDSSTACKSEGMENTSTACKDATA2DW40DUP(?)TOPEQULENGTHDATA2STACKENDSCODESEGMENTassumeCS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXDSTRINGMACROSTI;显示字符信息的宏指令PUSHDXPUSHAXPUSHBXPUSHCXLEADX,STIMOVAH,9INT21HPOPCXPOPBXPOPAXPOPDXENDMDSTRINGINFOR1MOVBX,OFFSETNUMMOVCX,COUNTLOOP1:CALLSTOBDSTRINGINFOR3MOV[BX],AXINCBXINCBXLOOPLOOP1MOVAX,OFFSETNUMPUSHAX;通过堆栈向子程序传递参数MOVCX,COUNTPUSHCXCALLGETSUMDSTRINGINFOR2DSTRINGINFOR3CALLBTOADMOVAH,4CHINT21HSTOBPROCPUSHCXPUSHBXPUSHDXMOVDX,OFFSETIBUFMOVAH,10INT21HMOVCL,IBUF[1]XORCH,CHMOVDX,0MOVBX,1MOVSI,OFFSETIBUF[1]ADDSI,CXLOP5:MOVAL,[SI]SUBAL,30HPUSHDXXORAH,AHMULBXPOPDXADDDX,AXPUSHDXMOVAX,10MULBXMOVBX,AXDECSIPOPDXLOOPLOP5MOVAX,DXPOPDXPOPBXPOPCXRETSTOBENDPGETSUMPROCPUSHSIPUSHBPPUSHCXPUSHDXMOVBP,SPMOVSI,[BP+12]movCX,[BP+10]MOVDX,0LOP2:MOVAX,[SI]ADDDX,AXADDSI,2LOOPLOP2MOVAX,DXMOVSUM,DXPOPDXPOPCXPOPBPPOPSIRETGETSUMENDPBTOADPROCPUSHDXPUSHCXPUSHBXPUSHAXXORDX,DXMOVBX,10000MOVCX,5LOP3:DIVBXPUSHDXMOVDL,ALADDDL,30HMOVAH,2INT21HMOVAX,BXXORDX,DXMOVBX,10DIVBXMOVBX,AXPOPAXXORDX,DXLOOPLOP3POPAXPOPBXPOPCXPOPDXRETBTOADENDPCODEENDSENDSTART实验结果:E:Xnasm>test.exePleaseinput10numbers:1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论