东南大学微机实验报告(二)_第1页
东南大学微机实验报告(二)_第2页
东南大学微机实验报告(二)_第3页
东南大学微机实验报告(二)_第4页
东南大学微机实验报告(二)_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

PAGE1东南大学《微机实验及课程设计》实验报告实验二、汇编语言程序设计姓名:学号:专业:实验室评定成绩:审阅教师:实验目的:进一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念熟练掌握动态调试程序TD/DEBUG的常用指令和窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器环境熟悉掌握汇编语言程序的典型数据结构设计、典型程序控制方法,了解DOS/BIOS功能调用的基本方法实验内容:基本操作内容:(1)、掌握进入全屏命令行方式、修改环境的方法启动开始菜单里的运行选项,键入cmd,即可启动命令行方式,在其属性栏中选择全屏即可进入全屏命令行方式。(2)、确定源程序的存放目录,构建个人实验环境。(3)、建立、编辑汇编源程序选择程序样本,构建典型的汇编程序框架,包括基本的数据段、堆栈段和代码段,编写程序实现如下功能:必做:2-1.从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其它字符不变),并按原顺序将这些字符在屏幕上显示出来(参考程序P36),并显示字符串“ThetotalnumberisXXXXX”。2-2.从键盘输入一个0~255之间的十进制数,将其转换为16进制数,并在屏幕上显示变换前后的数据(参考程序P38)。选作:2-3、从键盘输入5个十六进制带符号数(范围为-128~+127),请将它们按从大到小排序,并将排序前后的数据显示在屏幕上。(4)、用汇编工具(MASM/TASM.EXE)汇编源程序产生OBJ目标文件,将所要变异的源程序文件(文件名.asm)放到带汇编工具的文件夹中,在全屏命令行模式下,进入该文件夹,输入tasm文件名.asm,回车后即可编译产生OBJ目标文件。(5)、用链接程序(LINK/TLINK.EXE)产生EXE可执行文件,产生OBJ目标文件后,继续输入:tlink文件名.obj,回车后即可产生EXE可执行文件。(6)、用调试工具软件(TD.EXE/D)调试执行程序eq\o\ac(○,1)在Windows中启动TD仅启动TD而不载入要调试的程序双击TD.EXE文件名,Windows就会打开一个DOS窗口并启动TD。启动TD后会显示一个版权对话框,这时按回车键即可关掉该对话框。启动TD并同时载入要调试的程序把要调试的可执行文件拖到TD.EXE文件名上,Windows就会打开一个DOS窗口并启动TD,然后TD会把该可执行文件自动载入内存供用户调试。若建立可执行文件时未生成符号名表,TD启动后会显示“Programhasnosymboltable”的提示窗口,这是按回车键即可关掉该窗口。eq\o\ac(○,2)观察CPU寄存器、存储器环境TD启动后呈现的是一个具有窗口形式的用户界面,称为CPU窗口。eq\o\ac(○,3)单步、断点运行,观察中间结果,完成正常执行。TD功能键F7为跟踪进入(对CALL指令将跟踪进入子程序),F8为单步跟踪(对CALL指令将执行完子程序返回后才停下),F2为在当前光标处设置、清除断点。通过单步、断点运行中观察数据区、各个寄存器值的变化,以验证程序运行是否正确。eq\o\ac(○,4)修改当前运行环境,直接编写程序片段,验证指令功能。修改寄存器(AX、BX、CX、DX、SI、DI、BP、SP),并观察修改段寄存器。修改存储器,并指定不同存储段。修改CS:IP,单步运行制定指令(F7或F8),观察指令运行结果。将光标放置在TD窗口的代码区右击,可显示代码区的局部菜单,选择相应功能进行操作。eq\o\ac(○,5)重点解决段存储结构和数据变量的定义和访问。访问数据段中具体位置的值时,可将光标放置在数据区,右击产生数据区菜单。实验原理:实验源程序(主要部分)和流程图:2-1:datasegmentinputdb100,100dup(0)string1db0dh,0ah,'pleaseinputyourstrings',0dh,0ah,'$'string2db0dh,0ah,'thestringsyouinputare:',0dh,0ah,'$'string3db0dh,0ah,'doyouwanttocontinue(y/n):',0dh,0ah,'$'string4db0dh,0ah,'thetotalnumeris:',0dh,0ah,'$'numberdb00hdataendsstackssegmentstackdb256dup(0)stacksendscodesegmentassumecs:code,ds:data,ss:stacksmainprocfarstart:movax,datamovds,axloop1:movdx,offsetstring1movah,09hint21hmovdx,offsetinputmovah,0ahint21hmovdx,offsetstring2movah,09hint21hmoval,input[1]movnumber,alcalldispmovdx,offsetstring4movah,09hint21hcallshowmovdx,offsetstring3movah,09hint21hmovah,01hint21hcmpal,'y'jzloop1movah,4chint21hmainendpdispprocnearxorcx,cxmovcl,input[1]movsi,2again:movdl,input[si]cmpdl,61hjbnextcmpdl,7ahjanextsubdl,20hnext:movah,02hint21hincsiloopagainretdispendpshowprocnearmoval,numbermovah,0hmovcl,0ahdivcladdal,30haddah,30hmovch,ahmovdl,almovah,02hint21hmovdl,chmovah,02hint21hretshowendpcodeendsendstart2-2:datasegmentrightdb1inputdb4,5dup(0)outputdb00htendb0ahstring1db0dh,0ah,'pleaseinputyournumber(0~255)',0dh,0ah,'$'string2db0dh,0ah,'thenumberyouinputis(00h~ffh):',0dh,0ah,'$'string3db0dh,0ah,'doyouwanttocontinue(y/n):',0dh,0ah,'$'string4db0dh,0ah,'thenumberyouinputisnotfrom0~255',0dh,0ah,'$'string5db0dh,0ah,'thenumberyouinputis(0~255):',0dh,0ah,'$'dataendsstackssegmentstackdb256dup(0)stacksendscodesegmentassumecs:code,ds:data,ss:stacksmainprocfarstart:movax,datamovds,axmovax,stacksmovss,axloop1:movoutput,00hmovdx,offsetstring1movah,09hint21hmovdx,offsetinputmovah,0ahint21hmovright,1movdx,offsetstring5movah,09hint21hcallshowincallchangecmpright,0jzerrormovdx,offsetstring2movah,09hint21hmovah,outputmovdl,ahmovcl,4shrdl,clcalldispmovdl,ahanddl,0fhcalldispmovdl,48hmovah,02hint21hjmpgoerror:movdx,offsetstring4movah,09hint21hgo:movdx,offsetstring3movah,09hint21hmovah,1int21hcmpal,'y'jzloop1cmpal,'Y'jzloop1movah,4chint21hmainendpchangeprocnearclcxorax,axxorbx,bxxordx,dxmovcl,input[1]movsi,2again:movbl,input[si]cmpbl,30hjberror1cmpbl,39hjaerror1subbl,30hdecclcmpcl,0jzovermovax,1pushcxloop2:multenlooploop2popcxmulbxaddoutput,aljcerrorincsijmpagainover:addoutput,bljncover1error1:movright,0over1:retchangeendpdispprocnearpushdxpushaxcmpdl,9jbenumadddl,7num:adddl,30hmovah,02hint21hpopaxpopdxretdispendpshowinprocnearclcxorax,axxorbx,bxxordx,dxmovcl,input[1]movsi,2again1:movdl,input[si]cmpdl,30hjberror2cmpdl,39hjaerror2movah,02hint21hincsidecclcmpcl,0jnzagain1jmpover2error2:movright,0over2:retshowinendpcodeendsendstart2-3:datasegmentinput1db4,5dup(0)input2db4,5dup(0)input3db4,5dup(0)input4db4,5dup(0)input5db4,5dup(0)tempdb00h,00htempoutdb00houtputdb00h,00h,00h,00h,00hstring1db0dh,0ah,'pleaseinputyournumber(00h~ffh):',0dh,0ah,'$'string2db0dh,0ah,'thenumberyouinputis(00h~ffh):',0dh,0ah,'$'string3db0dh,0ah,'thenumberafterorderingis(00h~ffh):',0dh,0ah,'$'string4db0dh,0ah,'doyouwanttocontinue(y/n):',0dh,0ah,'$'dataendsstackssegmentstackdb256dup(0)stacksendscodesegmentassumecs:code,ds:data,ss:stacksmainprocfarstart:movax,datamovds,axmovax,stacksmovss,axloop:movdx,offsetstring1movah,09hint21hmovdx,offsetinput1movah,0ahint21hmovdx,offsetstring1movah,09hint21hmovdx,offsetinput2movah,0ahint21hmovdx,offsetstring1movah,09hint21hmovdx,offsetinput3movah,0ahint21hmovdx,offsetstring1movah,09hint21hmovdx,offsetinput4movah,0ahint21hmovdx,offsetstring1movah,09hint21hmovdx,offsetinput5movah,0ahint21hcallshowinmoval,input1[2]movtemp[0],almoval,input1[3]movtemp[1],alcallchangemoval,tempoutmovoutput[0],almoval,input2[2]movtemp[0],almoval,input2[3]movtemp[1],alcallchangemoval,tempoutmovoutput[1],almoval,input3[2]movtemp[0],almoval,input3[3]movtemp[1],alcallchangemoval,tempoutmovoutput[2],almoval,input4[2]movtemp[0],almoval,input4[3]movtemp[1],alcallchangemoval,tempoutmovoutput[3],aljmploop2loop1:jmploop;77loop2:moval,input5[2]movtemp[0],almoval,input5[3]movtemp[1],alcallchangemoval,tempoutmovoutput[4],alcallorder;85movdx,offsetstring3movah,09hint21hmovsi,0circle:movah,output[si]movdl,ahmovcl,4shrdl,clcalldispmovdl,ahanddl,0fhcalldispmovdl,48hmovah,02hint21hmovdl,0hmovah,02hint21hincsicmpsi,5jnzcirclemovdx,offsetstring4movah,09hint21hmovah,1int21hcmpal,'y'jzloop1;110cmpal,'Y'jzloop1;112movah,4chint21hmainendpshowinprocnearmovdx,offsetstring2movah,09hint21hmovsi,2circle1:movdl,input1[si]movah,02hint21hincsicmpsi,5jnzcircle1movdl,0hmovah,02hint21hmovsi,2circle2:movdl,input2[si]movah,02hint21hincsicmpsi,5jnzcircle2movdl,0hmovah,02hint21hmovsi,2circle3:movdl,input3[si]movah,02hint21hincsicmpsi,5jnzcircle3movdl,0hmovah,02hint21hmovsi,2circle4:movdl,input4[si]movah,02hint21hincsicmpsi,5jnzcircle4movdl,0hmovah,02hint21hmovsi,2circle5:movdl,input5[si]movah,02hint21hincsicmpsi,5jnzcircle5

温馨提示

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

评论

0/150

提交评论