实验2-汇编语言程序上机过程

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

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

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

资源描述

南昌大学汇编语言程序设计实验报告学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:实验2汇编语言程序上机过程一.实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。二.实验内容1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;2.伪指令:SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;3.利用的INT21H的1号功能实现键盘输入的方法;三.实验要求1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法;3.阅读下面程序段。四.实验环境PC微机DOS操作系统或Windows操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五.实验步骤1、按步骤完成下列程序的编译、连接、运行及调试等过程:datasegmentmessagedb'Thisisasampleprogramofkeyboardanddisplay'db0dh,0ah,'Pleasestrikethekey!',0dh,0ah,'$'dataendsstacksegmentparastack'stack'db50dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offsetmessagemovah,9int21hagain:movah,1int21hcmpal,1bhjeexitcmpal,61hjcdisplaycmpal,7ahjadisplayandal,11011111bdisplay:movdl,almovah,2int21hjmpagainexit:movah,4chint21hcodeendsendstart实验步骤:1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3.用TYPE命令显示1产生的.LST文件。4.用LINK将.OBJ文件连接成可执行的.EXE文件。5.在DOS状态下运行LINK产生的.EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。6.将程序修改,使得用户键入除小写字母以外的其他字符(除ESC键),输出提示信息“Illegalcharacterisstriked,Pleaseinputagain!”,并要求重新输入。datasegmentmessagedb'thisisasampleprogramofkeyboardanddisplay'db0dh,0ah,'pleasestrikethekey!',0dh,0ah,'$'message2db'Illegalcharacterisstriked,Pleaseinputagain!'db0dh,0ah,'pleasestrikethekey!',0dh,0ah,'$'dataendsstacksegmentparastack'stack'db50dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offsetmessagemovah,9int21hagain:movah,1int21hcmpal,1bhjeexit;如果输入是esc就退出cmpal,61hjcdisplay2;如果输入小于acmpal,7ahjadisplay2;如果输入大于zandal,11011111bdisplay:movdl,al;直接输出movah,2int21hjmpagaindisplay2:movax,data;如果不是小写字母输出“重新再输”指令movds,axmovdx,offsetmessage2movah,9int21hjmpagainexit:movah,4chint21hcodeendsendstart2.下面程序任务是完成查表求一个十以内整数的平方,程序有错误,请进行纠正并调试运行。DATASEGMENTTABLEDB0,1,4,9,16,25,36,49,64,81HEXDW5;待查的整数RESULTDW?DATAENDSCDSEGMENTASSUMECS:CODE,DS:DATSTART:MOVAX,DATAMOVDS,AXMOVBX,TABLEMOVAX,HEXADDBX,AXMOVAX,[BX]MOVRESULT,AXMOVAH,4CHINT21HCDENDSENDSTART实验步骤1、将该文件存成.asm文件,将其生成可执行文件。2、编译该程序,找出错误。并纠正。datasegmenttabledw0,1,4,9,16,25,36,49,64,81;“db”应该改成“dw”hexdw5;待查的整数resultdw?dataendscodesegment;“cd”应该改成“code”assumecs:code,ds:data;“dat”应该改成“data”start:movax,datamovds,axmovbx,tablemovax,hexaddbx,axmovax,[bx]movresult,axmovah,4chint21hcodeends;“cd”应该改成“code”endstart3、连接、运行看程序是否能得到正确结果。若不行,用Debug加载该可执行文件,单步调试,观察各寄存器变化及RESULT单元的值。找出问题。4、重复汇编语言程序的上机过程,使程序能正确得到结果。5、修改源程序,选用换码指令XLAT完成本程序相同的功能。datasegmenttabledb0,1,4,9,16,25,36,49,64,81;把“dw”改成“db”hexdb5;待查的整数resultdb?dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axleabx,table;把table地址给bxmoval,hexxlat;应用换码指令XLATmovresult,almovah,2int21hmovah,4chint21hcodeendsendstart曾经出现错误:经检查,是由于红色字体部分漏写导致程序陷入循环无法出来。补写上后成功运行。6、补充此程序的输入和输出功能。使得程序能任意输入数据,平方值也能以十进制显示在屏幕上。datasegmenttabledw0,1,4,9,16,25,36,49,64,81dataendsstacksegmentparastack'stack'db100dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoves,axbegin:movah,1int21hcmpal,1bhjeexit;如果输入是ESC键则退出cmpal,30hjcbegincmpal,39hjabegin;如果输入值大于9小于0则重输subal,30h;输入值减去30h这样就变成了十进制的数字movbx,tablepushcxshlal,1movah,alincahxlatmovcl,almoval,ahxlatmovch,almovax,cxpopcxcallcr_lfcallout_axcallcr_lfjmpbeginexit:movah,4chint21hout_axprocnearpushbxmovdl,0callout_ascmovbl,100divblmovdl,alcallout_ascmoval,ahxorah,ahmovbl,10divblmovdl,alcallout_ascmovdl,ahcallout_ascpopbxretout_axendpout_ascprocnearadddl,30hcallout_dlretout_ascendpcr_lfprocnearmovdl,10callout_dlmovdl,13callout_dlretcr_lfendpout_dlprocnearpushaxmovah,02hint21hpopaxretout_dlendpcodeendsendstart六.实验报告要求汇编,连接及调试时产生的错误,其原因及解决办法,要求你修改的程序的清单(修改后)和调试记录;各实验中的关键数据截图。七.简答题1.若在源程序中把INT21H的'H'省去,会产生什么现象?从原来的int21h去掉h后就会变成int21,因为输入默认是10进制,不加h就会变成调用中断15h了。2.把INT21H中4CH号功能改为INT20H,行不行?不行,会出现程序无法响应的问题。八.实验小结1.了解了伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的用法并且熟练应用2.了解利用的INT21H的1号功能实现键盘输入的方法,movah,1int21h了解输出显示输出的方法,movdl,xmovah,2int21h了解用INT21H4C号功能返回系统的方法,movah,4chint21h3.知道了如何调试程序,当出现好几个错误的时候,很有可能是改掉前面一个错,接下来的错误都没有了,还有就是发现自己写的程序找不出问题时,可以参考书上的程序做个范例,看看自己和书上的框架是不是错了还是怎样的错误。总之,当程序报错时,一定要很耐心的去修改,也可以和同伴互相交流讨论一下有可能出错的地方,相互学习改进。

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

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

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

×
保存成功