您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 汇编与接口实验四循环程序设计
课程_汇编与接口第1页共6页系别_计算机学院_____________实验日期2013年11月30日专业班级计算机科学与技术5班_组别________实验报告日期2013年12月1日姓名______学号报告退发(订正、重做)同组人_________________无教师审批签字实验四循环程序设计一、实验目的(1)掌握汇编语言子程序设计方法。(2)掌握主程序与子程序之间的调用关系及调用方法。(3)掌握通过寄存器传送参数的方法。二、实验环境(1)硬件环境:计算机系统windows;(2)软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验内容(方法步骤):编程实现:十进制到十六进制数转换程序。程序要求:从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来。四、实验说明(1)键盘输入的十进制数(ASCII),要将它转换成二进制存放。子程序:DECIBIN(2)二进制转换成十六进制数并显示子程序:BINIHEX(3)为避免屏幕上的重叠,必须有回车和换行功能。子程序:CRLF用三个子程序联合实现题目要求联合由主程序达到。将BX寄存器作为过程之间传送转换数据的“交通员”。五、实验步骤(1)编辑、汇编源程序,生成相应的可执行文件(.EXE)(2)检查程序执行的结果是否正确六、流程图主程序流程图如下图:开始调用子程序DECIBIN调用子程序CRLF调用子程序BINIHEX结束子程序DECBIN流程图如下图:开始输入一个十进制数减去30H0?将字节转换为字CBW交换AX和BX的内容返回到断点处跳转到NEWCHAR给CX赋值10D,并做乘运算交换AX和BX的内容AXBX+AX结束是否子程序BINIHEX流程图如下图:是开始给CH和CL分别赋值4BX带进位循环左移4位AL,BL,AL与0FH进行与操作CH减1ALAL+30HAL3AH?ALAL+7H结束输出=0?跳到标号NOTATE返回断点处否是否七、源程序datasegmentstr1db0DH,0AH,'inputdec=$'dataendscodesegmentmainprocfarassumecs:code,ds:datastarts:movax,datamovds,axmovdx,offsetstr1movah,9int21hcallDECIBINcallBINIHEXcallCRLFjmpmainretmainendpDECIBINPROCMOVBX,0NEWCHAR:MOVAH,1INT21Hcmpal,'#'jeout1SUBAL,30HJLEXITCBWXCHGAX,BXMOVCX,10DMULCXXCHGAX,BXADDBX,AXJMPNEWCHAREXIT:RETDECIBINENDPCRLFPROCNEARMOVAH,02HMOVDL,0AHINT21HMOVAH,02HMOVDL,0DHINT21HRETCRLFENDPBINIHEXPROCNEARSTART:MOVCH,4NOTATE:MOVCL,4ROLBX,CLMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLPRINTITADDAL,7HPRINTIT:MOVDL,ALMOVAH,2INT21HDECCHJNZNOTATERETBINIHEXENDPout1:movah,4chint21hcodeendsendstarts八、问题思考(1)当输入“#”时,退出主程序,如何修改程序?答:在子程序DECIBIN中的调入1号功能输入后面增加两条语句cmpal,'#jeout1,以及退出语句:out1:movah,4chint21h即对输入的数与‘#’比较,若相等,则跳转到退出,若不相等,则继续执行子程序DECIBIN(2)说明用寄存器传送参数的过程及其具体方法,各子程序的应用。答:程序在传递参数的时候,一般会用到AX、BX、CX寄存器,并根据需要选择用哪个寄存器,以及使用哪个寄存器的低位或高位,具体方法:功能调用是都是用AX寄存器的高八位(AH)如:movah2int21h;需要用到计数器时就使用CX。子程序中主要是用AX寄存器来存数,AH来实现功能调用,CX来计数,在DECIBIN子程序中就用到cx来计数(3)实验结果及所遇到问题,并说明解决的方法。实验结果:问题:刚开始子程序部分看不懂,但并不影响写主函数,后来通过查看课本,以及对运行程序的理解,弄懂了整个程序执行过程九、实验小结小结:通过本次实验,掌握了子程序的设计方法,以及主程序与子程序之间的调用关系及调用方法。知道它们是如何通过寄存器传递参数的,并间接掌握了十进制如何转换成十六进制。
本文标题:汇编与接口实验四循环程序设计
链接地址:https://www.777doc.com/doc-2279407 .html