汇编语言课程实验1-1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1汇编语言第一次实验报告班级软091学号099074140姓名陈浩指导教师陆勤安徽工业大学2开始实验一显示AL寄存器中的两位十六进制一、程序流程图二、程序源代码movch,2moval,27hmovbl,alagain:movcl,4rolbl,clmovdl,blanddl,0fhadddl,30hcmpdl,3ahjlprintadddl,7h初始化循环计数值把最右面的数位转换为ASCII是ASCIIA-F?加上7Y显示一个字符N循环计数值=0?结束YN3print:movah,2int21hdecchjnzagain三、DEBUG调试4验五循环程序实验一、实验目的:1、掌握循环程序的设计方法。2、进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。3、学会针对不同的问题,选用不同的组织循环的方法。二、实验内容:编写一个程序,显示AL寄存器中的两位十六进制数。三、编程提示:利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。实验报告系班级学号姓名同组者指导教师51、程序说明。程序名:disphex.asm。功能:显示AL寄存器中的两位十六进制数。如当键盘输入a时,AL寄存器的保存的值为61H,故输出61H。2、调试说明。(1)用EDIT编写源程序,保存为disphex.asm;(2)用MASM编译源程序,生成目标文件:disphex.obj;(3)用LINK链接上一步的目标文件,生成可执行文件:disphex.exe。(4)在编写该程序时遇到了一个较难的问题,就是如何输出AL寄存器中的十六进制数,因为一般情况下直接调用2号功能调用会显示出该十六进制数对应的ASC码,故需要把十六进制数逐位的输出。在输出时还要判别是数字还是字母,再分别做处理。3、画出程序框图。4、写出源程序清单和执行结果。程序清单:codesegment开始是否为Q从键盘接受一个按键逐位处理输出退出NYnext1:adddl,30hmovah,2hint21h;showhigherbitpopaxmovdl,alanddl,0fhmovdl,al6assumecs:codestart:again:movah,1int21h;moval,3ehcmpal,'Q'jeexitpushaxmovch,almovdl,3ahmovah,2hint21h;show:movcl,4movdl,chshrdl,clcmpdl,9hjbenext1adddl,7h执行结果:7实验六分支程序实验一、实验目的:1、掌握分支程序的设计方法。2、掌握利用DEBUG修改参数、检查结果的方法。3、掌握汇编语言源程序的编辑、汇编、连接及调试过程。二、实验内容:编写一个程序,判别键盘上输入的字符;若是1~9字符,则显示之;若是A~Z或a~z字符,则显示’c’;若是回车字符CR(其ASCII码为ODH),则结束程序;若是其它程序则不显示,继续等待新的字符输入。三、编程提示:利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。8实验报告系班级学号姓名同组者指导教师1、程序说明。程序名:dispkey.asm。功能:判别键盘上输入的字符;若是1~9字符,则显示之;若是A~Z或a~z字符,则显示’c’;若是回车字符CR(其ASCII码为ODH),则结束程序;若是其它程序则不显示,继续等待新的字符输入。2、调试说明。(1)用EDIT编写源程序,保存为dispkey.asm;(2)用MASM编译源程序,生成目标文件:dispkey.obj;(3)用LINK链接上一步的目标文件,生成可执行文件:dispkey.exe。3、画出程序框图。4、写出源程序清单和执行结果。程序清单:N开始是否为回车从键盘接受一个按键逐位处理输出退出Y9;dispkey.asmcodesegmentassumecs:codestart:movah,1int21hcmpal,0dhjzexitcmpal,'0'jbnextcmpal,'9'jacharupmovdl,almovah,2int21hmovdl,20hint21hjmpstartcharup:cmpal,41hjbnextcmpal,5ah;cmpZjachrdn执行结果:实验七统计不同成绩段学生的人数一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。dispc:movdl,'c';showcmovah,2int21hmovdl,20hint21hnext:jmpstartchrdn:cmpal,61h;cmpajbnextcmpal,7ah;cmpzjanextjmpdispcexit:movah,4chint21hcodeendsendstart102、掌握综合程序的编制及调试方法。二、实验内容:设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。三、编程提示:1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用DOS功能调用。2、统计学生成绩和显示统计结果两部分内容用子程序结构来完成。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。实验报告系班级学号姓名同组者指导教师111、程序说明。程序名称:statiscore.asm。功能:统计各分数段的人数,并输出统计结果。2、调试说明。(1)用EDIT编写源程序,保存为statiscore.asm;(2)用MASM编译源程序,生成目标文件:statiscore.obj;(3)用LINK链接上一步的目标文件,生成可执行文件:statiscore.exe。(4)由于这道题要用子程序设计,所以考虑到要如何传递参数和如何保存与恢复寄存器的值花了一些时间。还有在内存寻址方面也遇到了不少问题。3、画出程序框图。4、写出源程序清单和执行结果。;统计不同成绩段学生的人数datasegmentscoredb76,69,84,90,73,88,99,63,100,80Y开始在相应分数段从内存取一个成绩统计此分数段人数退出显示各分数段人数数12a2fdb6dup(0)dataendscodesegmentassumeds:data,cs:codestart:movax,datamovds,axleasi,scoreleabx,a2fcallstatiscorecalldisplaymovax,4c00hint21h;子程序名:statiscore;功能描述:统计学生成绩;入口和出口参数:ds,si,score;调用注意事项和说明等:寄存器的恢复statiscoreprocpushdspushsipushaxpushbxpushcxmovcx,10again:lodsbcmpal,60jlfcmpal,70jlecmpal,80jld;子程序名:display;功能描述:显示统计结果;入口和出口参数:bx,si,a2f;调用注意事项和说明等:寄存器的恢复displayprocpushcxpushsi13cmpal,90jlccmpal,100jlbincbyteptr[bx]jmpnextf:incbyteptr[bx+5]jmpnexte:incbyteptr[bx+4]jmpnextd:incbyteptr[bx+3]jmpnextc:incbyteptr[bx+2]jmpnextb:incbyteptr[bx+1]jmpnextnext:loopagainpopcxpopbxpopaxpopsipopdsretstatiscoreendp学这门课的体会和意见通过这门课的学习,让我对汇编语言有一定的了解,即汇编语言相对机器语言而言要好记好用,但远不如高级语言方便、实14用,而且编写同样的程序,使用汇编语言比使用高级语言花费的时间更多,可读性和可移植性较差,调试和维护更困难。但汇编语言也有它优秀的地方,即它的执行速度快,且相对一般的高级语言占用的内存要小。另外,汇编语言的魅力就是直接控制硬件。总之,汇编语言存在很多的弱点,但它具有一些高级语言所不具备的突出优点,所以我觉得它是一门不错的程序设计语言,它也让我对计算机具体的工作原理有一些了解,虽然目前还不是很深。我想以后如果我从事程序员工作,对汇编的应用是少不了的。对于用任何一门高级语言写的程序,如果我们把它研究到汇编级别,从汇编层面看机器是如何运行的,那会对编写高质量的程序会有很大的帮助。我感觉如果要当一位编程高手,一定要从汇编语言开始!体会和意见体会:在做实验之前,我有很多的指令不熟悉,不少指令都不会用,通过做实验,我对这些指令更加熟悉,用起来更加熟练。有很多问题,不通过做实验,可能永远也15不会知道。例如:在DOS功能调用INT21H的几种功能时会改变al当中的值,这个问题,我也是在做实验时,通过debug调试时发现的,以前我一直没有意识到这个问题。也许很多知识我们也知道,当在真正解决问题时,不一定能够想到。只有通过做实验,我才对很多知识有了更深的认识。在做实验时,我也碰到很多问题,正是通过分析这些问题,解决这些问题,我才逐渐真正掌握了某些知识。以前看书的时候,我感觉很多知识我似乎也会了,某些题目我似乎也能解决了。但是真正做起实验,我才发现,实际上我还有很多知识没有掌握好。通过实验的学习,我对学习汇编语言有了一个更深的认识。同时,我也真正认识到,学习这些计算机语言,只有通过大量的实验才能够真正的掌握那些知识。也只有通过实验才能够让我们意识到自己的不足之处,从而改正。在做实验的过程中,我通过debug调试,让我解决了很多问题,也让我以前一些不理解的知识变得更加明白。最重要的是让我对一些知识有了深刻的印象,不容易遗忘。

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功