汇编语言实验指导_第1页
汇编语言实验指导_第2页
汇编语言实验指导_第3页
汇编语言实验指导_第4页
汇编语言实验指导_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言实验实验一汇编运行环境及方法、简单程序设计一、实验目的:1、熟练汇编语言运行环境和方法。2、了解如何使用汇编语言编制程序。3、熟悉DEBUG常用的命令的使用方法。4、会使用DEBUG命令调试程序。二、实验内容:1、比拟两个字符串STRING1和STRING2所含的字符是否相同,假设相同,那么输出MATCH,不相同那么输出NOMATCH。 2、学会对汇编语言程序进行汇编、连接和运行。 3、学会用DEBUG中的D命令,E命令,R命令,G命令,F命令,U命令,A命令以及T命令。三、实验要求:1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。2、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序、调试程序和执行程序。四、实验报告:1、程序说明。说明程序的功能、结构。检查两个字符串是否相同2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。运行e28’forward’3、写出源程序清单和执行结果。实验清单:datareasegmentstring1db'Movethecursorbackword'string2db'Movethecursorbackword'mess1db'Match.',13,10,'$'mess2db'Nomatch!',13,10,'$'datareaendsprognamsegmentmainprocfarassumecs:prognam,ds:datarea,es:datareastart:pushdssubax,dxpushaxmovax,datareamovds,axmoves,axleasi,string1leadi,string2cldmovcx,25repzcmpsbjzmatchleadx,mess2jmpshortdispmatch:leadx,mess1disp:movah,09int21hmovah,4chint21hmainendpprognamendsendstart实验二循环程序设计-学生成绩,求每个学生的名次一、实验目的:1、熟悉循环、DOS功能调用等根本的程序结构。2、熟悉多重循环结构及算法技巧。3、熟练使用DEBUG常用命令查看程序运行结果,以及通过修改代码或数据来改变程序运行结果。二、实验内容:设有十个学生成绩分别是88,75,95,63,98,78,87,73,90和60分。试编制一个程序,求每个学生和名次。三、编程提示:1、定义如下的数据结构:dataSEGMENTgradeDW88,75,95,63,98,78,87,73,90,60rankDW10DUP(?)dataENDS2、通过双重循环实现:对于数组的每个元素(学生成绩),查找数组中比该元素值大的元素个数I,那么I-1即为该学生的名次,并将名次依次保存在以rank为首地址的字数组中。四、实验报告:1、程序说明。说明程序的功能、结构。功能:将给出的数组每个元素在数组的大小位置找出来,放到rank数组中数据定义块:datasegmentgradedw88h,75h,95h,63h,98h,78h,87h,73h,90h,60hrankdw10DUP(?)countdw?dataends代码块:codesegmentassumecs:code,ds:datamainprocfarstart:movax,datamovds,axxorax,axmovsi,axmovcount,ax外层循环:lea1lea1:leabx,grademovcx,rank-gradesarcx,1xorax,axleadi,grade内层循环lea2,lea3.lea4lea2:movdx,[di]cmp[bx+si],dxmovdx,wordptr[bx+si]jllea4adddi,2looplea2lea3:movsi,countmov[rank+si],axaddcount,2movsi,countcmpcount,rank-grade返回语句:jelea5jmplea1lea4:incaxadddi,2looplea2jmplea3lea5:movah,4chint21hmainendpcodeendsendstart2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果清单:datasegmentgradedw88h,75h,95h,63h,98h,78h,87h,73h,90h,60hrankdw10DUP(?)countdw?dataendscodesegmentassumecs:code,ds:datamainprocfarstart:movax,datamovds,axxorax,axmovsi,axmovcount,axlea1:leabx,grademovcx,rank-gradesarcx,1xorax,axleadi,gradelea2:movdx,[di]cmp[bx+si],dxmovdx,wordptr[bx+si]jllea4adddi,2looplea2lea3:movsi,countmov[rank+si],axaddcount,2movsi,countcmpcount,rank-gradejelea5jmplea1lea4:incaxadddi,2looplea2jmplea3lea5:movah,4chint21hmainendpcodeendsendstart。5、体会和意见。实验三分支程序设计-从键盘输入月份数值,显示月份的英文字母一、实验目的:1、熟悉分支、DOS功能调用等根本的程序结构。2、使用DEBUG的A命令、E命令以及R命令修改内存中程序代码、数据以及存放器的内容,使得程序输出不同的结果。二、实验内容:从键盘输入月份值,如(1-12),显示月份的英文名称('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC')。三、编程提示:1、定义如下的数据结构moninLABELBYTEmaxDB3actDB?monDB3DUP(?)alfmonDB'???',13,10,'$'montabDB‘JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'2、使用DOS系统功能调用实现从键盘输入月份数值(可能是一位也可能是二位),将月份值的ASCII转换成数值,根据此数值确定月份英文名在字符串数组montab中的位置,将该位置连续三个字节拷贝到alfmon单元中,再通过DOS系统功能调用显示alfmon为起始的字符串。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。datasegmentpleasedb'pleaseenterthemomth:',13,10,'$'maxDB3actDB?monDB3DUP(?)alfmonDB'???',13,10,'$'montabDB'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'dataendscodesegmentassumeds:data,cs:code,es:datamainprocfarstart:movax,datamovds,axmoves,axlen0:leadx,pleasemovah,09hint21hleadx,maxmovah,0ahint21hmovcl,byteptr[act]xorax,axxorbx,bxxorch,chleasi,monlen1:movdl,10muldlmovbl,byteptr[si]subbl,30haddax,bxaddsi,1looplen1len2:movdl,3muldlleasi,montabsubax,3addsi,axleadi,alfmonmovcx,3cldrepmovsbleadx,alfmonmovah,09hint21hexit:movah,4chint21hmainendpcodeendsendstart5、体会和意见。实验四子程序设计-从键盘输入一个四位十进制无符号数,并将其从屏幕上显示出来一、实验目的:1、熟悉分支、循环、子程序调用、DOS功能调用等根本的程序结构。2、掌握子程序调用的参数传递。3、掌握综合程序的编制及调试方法。二、实验内容:从键盘输入一个四位的十进制数(如4525D),然后在屏幕上以十六进制形式将其显示出来(11ADH)。三、编程提示:1、采用DOS功能调用从键盘输入一串字符。2、设计一个子程序将键盘缓冲区中的字符转换为数值,即’4’->4、’5’->5、’2’->2、3、设计一子程序将BX中的二进制数以十六进制形式显示。即用循环依次取BX中四位二进制N数,将其转化为对应十六进制数的ASCII码,再通过DOS系统调用将其显示出来。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。datasegmentpleasedb'pleaseenterthenumber:',13,10,'$'answerdb'theansweris:',13,10,'$'maxDB5actDB?monDB4DUP(?)tempdb4DUP(?),13,10,'$'temdw10hdataendscodesegmentassumeds:data,cs:code,es:datastart:movax,datamovds,axmoves,axlen0:leadx,pleasemovah,09hint21hleadx,maxmovah,0ahint21hcallchange1callchange2leadx,answermovah,09hint21hleadx,tempmovah,09hint21hexit:movah,4chint21hchange1procmovcl,byteptr[act]xorax,axxorbx,bxxorch,chleasi,monlen1:movdx,10muldxmovbl,byteptr[si]subbl,30haddax,bxaddsi,1looplen1movbx,axretchange1endpchange2procxorax,axxorcx,cxxordx,dxleasi,[temp+4]movcx,4movax,bxlen4:divtemcmpdx,9jalen6adddx,30hjmplen7len6:adddx,40hsubdx,9len7:movbyteptr[si],dlxordx,dxdecsilooplen4retchange2endpcodeendstart5、体会和意见。实验五综合程序-统计不同成绩段学生的人数〔2〕一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等根本的程序结构。2、掌握综合程序的编制及调试方法。二、实验内容:设有十个学生成绩分别是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、写出源程序清单和执行结果。changemacrotempaddtemp,30hmovdl,tempmovah,02hint21hendmdatasegmentgranddb76,69,84,90,73,88,99,63,100,80sum1db0sum2db0sum3db0sum4db0sum5db0sum6db0sumdb10dataendscodesegmentassumeds:data,cs:codestart:movax,datamovds,axmoves,axcallalucallshowmovah,4chint21haluprocmovsi,-1str:cmpsum,0jzexitincsidecsumcmpgrand[si],60jblen1cmpgrand[si],70jblen2cmpgrand[si],80jblen3cmpgrand[si],90jblen4cmpgrand[si],100jblen5jmplen6len1:incsum1jmpstrlen2:incsum2jmpstrlen3:incsum3jmpstrlen4:incsum4jmpstrlen5:incsum5jmpstrlen6:incsum6jmpstrexit:retaluendpshowprocchangesum1changesum2changesum3changesum4changesum5changesum6retshowendpcodeendsendstart5、体会和意见。实验六综合程序-输入学生成绩,计算学生名次,按学号顺序显示学生名次〔2〕一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等根本的程序结构。2、掌握综合程序的编制及调试方法。二、实验内容:按学号顺序从键盘输入学生成绩(成绩之间用逗号分隔)保存在成绩数组中,计算每个学生的名次,并按学号顺序存入内存中名次数组,最后,按学号顺序显示每个学生的名次。三、编程提示:1、设计一个子程序INPUT接受键盘输入的每个学生成绩,并存入成绩数组。其中INPUT子程序调用DECIBIN子程序,将每个学生的成绩保存在BX存放器中。当遇到逗号时将BX内容写入成绩数组,遇到回车表示成绩输入完毕。2、设计RANKP子程序根据成绩数组计算每个学生名次,并将名次写入名次数组(这局部功能请参考实验二)。3、设计OUTPUT子程序输知名次数组中学生名次,注意要将数值形式的名次转换成ASCII码表示后再显示,此功能通过子程序BINDEC实现转换。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。datasegmentgradedb50dup(?)rankdb50dup(?)countdw?ts1db'pleaseentergrade',13,10,'$'ts2db'therankis:',13,10,'$'dataendscodesegmentassumeds:data,cs:code,es:datastart:movax,datamovds,axmoves,axcallinputcallrank1calloutputmovah,4chi

温馨提示

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

最新文档

评论

0/150

提交评论