大学汇编语言实验指导.doc_第1页
大学汇编语言实验指导.doc_第2页
大学汇编语言实验指导.doc_第3页
大学汇编语言实验指导.doc_第4页
大学汇编语言实验指导.doc_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言实验 实验一 汇编运行环境及方法、简单程序设计一、实验目的: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、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。运行e28forward3、写出源程序清单和执行结果。实验清单:datarea segmentstring1 db Move the cursor backwordstring2 db Move the cursor backwordmess1 db Match.,13,10,$mess2 db No match!,13,10,$datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart: push ds sub ax,dx push ax mov ax,datarea mov ds,ax mov es,ax lea si,string1 lea di,string2 cld mov cx,25 repz cmpsb jz match lea dx,mess2 jmp short dispmatch: lea dx,mess1disp: mov ah,09 int 21hmov ah,4ch int 21hmain endpprognam endsend start实验二 循环程序设计已知学生成绩,求每个学生的名次一、实验目的:1、熟悉循环、DOS功能调用等基本的程序结构。2、熟悉多重循环结构及算法技巧。3、熟练使用DEBUG常用命令查看程序运行结果,以及通过修改代码或数据来改变程序运行结果。二、实验内容:设有十个学生成绩分别是88,75,95,63,98,78,87,73,90和60分。试编制一个程序,求每个学生和名次。三、编程提示:1、定义如下的数据结构:data SEGMENT grade DW 88,75,95,63,98,78,87,73,90,60 rank DW 10 DUP(?)data ENDS2、通过双重循环实现:对于数组的每个元素(学生成绩),查找数组中比该元素值大的元素个数I,则I-1即为该学生的名次,并将名次依次保存在以rank为首地址的字数组中。四、实验报告:1、程序说明。说明程序的功能、结构。功能:将给出的数组每个元素在数组的大小位置找出来,放到rank数组中数据定义块:data segment grade dw 88h,75h,95h,63h,98h,78h,87h,73h,90h,60hrank dw 10 DUP(?)count dw ?data ends代码块:code segmentassume cs:code,ds:datamain proc farstart:mov ax,datamov ds,axxor ax,axmov si,axmov count,ax外层循环:lea1lea1:lea bx,grademov cx,rank-gradesar cx,1xor ax,axlea di,grade内层循环lea2,lea3.lea4lea2:mov dx,dicmp bx+si,dxmov dx,word ptr bx+sijl lea4 add di,2loop lea2lea3:mov si,countmov rank+si,axadd count,2mov si,countcmp count,rank-grade返回语句:je lea5jmp lea1lea4:inc axadd di,2loop lea2jmp lea3lea5:mov ah,4chint 21hmain endpcode endsend start2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果清单:data segment grade dw 88h,75h,95h,63h,98h,78h,87h,73h,90h,60hrank dw 10 DUP(?)count dw ?data endscode segmentassume cs:code,ds:datamain proc farstart:mov ax,datamov ds,axxor ax,axmov si,axmov count,axlea1:lea bx,grademov cx,rank-gradesar cx,1xor ax,axlea di,gradelea2:mov dx,dicmp bx+si,dxmov dx,word ptr bx+sijl lea4 add di,2loop lea2lea3:mov si,countmov rank+si,axadd count,2mov si,countcmp count,rank-gradeje lea5jmp lea1lea4:inc axadd di,2loop lea2jmp lea3lea5:mov ah,4chint 21hmain endpcode endsend start。5、体会和意见。实验三 分支程序设计从键盘输入月份数值,显示月份的英文字母一、实验目的:1、熟悉分支、DOS功能调用等基本的程序结构。2、使用DEBUG的A命令、E命令以及R命令修改内存中程序代码、数据以及寄存器的内容,使得程序输出不同的结果。二、实验内容:从键盘输入月份值,如(1-12),显示月份的英文名称(JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC )。三、编程提示:1、定义如下的数据结构monin LABEL BYTE max DB 3 act DB ? mon DB 3 DUP(?) alfmon DB ?,13,10,$ montab DB JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC2、使用DOS系统功能调用实现从键盘输入月份数值(可能是一位也可能是二位),将月份值的ASCII转换成数值,根据此数值确定月份英文名在字符串数组montab中的位置,将该位置连续三个字节拷贝到alfmon单元中,再通过DOS系统功能调用显示alfmon为起始的字符串。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。data segmentplease db please enter the momth:,13,10,$max DB 3act DB ?mon DB 3 DUP(?)alfmon DB ?,13,10,$montab DB JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DECdata endscode segment assume ds:data,cs:code,es:datamain proc farstart:mov ax,datamov ds,axmov es,axlen0:lea dx,pleasemov ah,09hint 21hlea dx,maxmov ah,0ah int 21hmov cl,byte ptr actxor ax,axxor bx,bxxor ch,chlea si,monlen1:mov dl,10mul dlmov bl,byte ptr sisub bl,30hadd ax,bxadd si,1loop len1len2:mov dl,3mul dllea si,montabsub ax,3add si,axlea di,alfmonmov cx,3cld rep movsblea dx,alfmonmov ah,09hint 21hexit:mov ah,4chint 21hmain endpcode endsend start5、体会和意见。实验四 子程序设计从键盘输入一个四位十进制无符号数,并将其从屏幕上显示出来一、实验目的:1、熟悉分支、循环、子程序调用、DOS功能调用等基本的程序结构。2、掌握子程序调用的参数传递。3、掌握综合程序的编制及调试方法。二、实验内容:从键盘输入一个四位的十进制数(如4525D),然后在屏幕上以十六进制形式将其显示出来(11ADH)。三、编程提示:1、采用DOS功能调用从键盘输入一串字符。2、设计一个子程序将键盘缓冲区中的字符转换为数值,即4-4、5-5、2-2、5-5,再将其转化为数值4525保存到BX寄存器中。3、设计一子程序将BX中的二进制数以十六进制形式显示。即用循环依次取BX中四位二进制N 数,将其转化为对应十六进制数的ASCII码,再通过DOS系统调用将其显示出来。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。data segmentplease db please enter the number:,13,10,$answer db the answer is:,13,10,$max DB 5act DB ?mon DB 4 DUP(?)temp db 4 DUP(?),13,10,$tem dw 10hdata endscode segment assume ds:data,cs:code,es:datastart:mov ax,datamov ds,axmov es,axlen0:lea dx,pleasemov ah,09hint 21hlea dx,maxmov ah,0ah int 21hcall change1 call change2lea dx,answermov ah,09hint 21hlea dx,tempmov ah,09hint 21hexit:mov ah,4chint 21hchange1 procmov cl,byte ptr actxor ax,axxor bx,bxxor ch,chlea si,monlen1:mov dx,10mul dxmov bl,byte ptr sisub bl,30hadd ax,bxadd si,1loop len1mov bx,axretchange1 endpchange2 procxor ax,axxor cx,cxxor dx,dxlea si,temp+4mov cx,4mov ax,bxlen4:div temcmp dx,9ja len6add dx,30hjmp len7len6:add dx,40hsub dx,9len7:mov byte ptr si,dlxor dx,dxdec siloop len4retchange2 endpcodeend start5、体会和意见。实验五 综合程序统计不同成绩段学生的人数(2)一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。2、掌握综合程序的编制及调试方法。二、实验内容:设有十个学生成绩分别是76,69,84,90,73,88,99,63,100和80分。试编制一个子程序,统计低于60分,6069分,7079分,8089分,9099分和100分的人数,并输出显示统计结果。三、编程提示:1、成绩分等部分采用分支结构,统计所有成绩则用循环结构完成,显示统计结果采用DOS功能调用。2、统计学生成绩和显示统计结果两部分内容用子程序结构来完成。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。change macro tempadd temp,30hmov dl,temp mov ah,02hint 21hendmdata segmentgrand db 76,69,84,90,73,88,99,63,100,80sum1 db 0sum2 db 0sum3 db 0sum4 db 0sum5 db 0sum6 db 0sum db 10data endscode segment assume ds:data,cs:codestart:mov ax,datamov ds,axmov es,axcall alu call showmov ah,4chint 21halu procmov si,-1str:cmp sum,0jz exitinc sidec sumcmp grandsi,60jb len1cmp grandsi,70jb len2cmp grandsi,80jb len3cmp grandsi,90jb len4cmp grandsi,100jb len5jmp len6len1:inc sum1jmp strlen2:inc sum2jmp strlen3:inc sum3jmp strlen4:inc sum4jmp strlen5:inc sum5jmp strlen6:inc sum6jmp strexit:retalu endpshow procchange sum1change sum2change sum3change sum4change sum5change sum6retshow endpcode endsend start5、体会和意见。实验六 综合程序输入学生成绩,计算学生名次,按学号顺序显示学生名次(2)一、实验目的:1、掌握分支、循环、子程序调用、DOS功能调用等基本的程序结构。2、掌握综合程序的编制及调试方法。二、实验内容:按学号顺序从键盘输入学生成绩(成绩之间用逗号分隔)保存在成绩数组中,计算每个学生的名次,并按学号顺序存入内存中名次数组,最后,按学号顺序显示每个学生的名次。三、编程提示:1、设计一个子程序INPUT接受键盘输入的每个学生成绩,并存入成绩数组。其中INPUT子程序调用DECIBIN子程序,将每个学生的成绩保存在BX寄存器中。当遇到逗号时将BX内容写入成绩数组,遇到回车表示成绩输入完毕。2、设计RANKP子程序根据成绩数组计算每个学生名次,并将名次写入名次数组(这部分功能请参考实验二)。3、设计OUTPUT子程序输出名次数组中学生名次,注意要将数值形式的名次转换成ASCII码表示后再显示,此功能通过子程序BINDEC实现转换。四、实验报告:1、程序说明。说明程序的功能、结构。2、调试说明。包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。3、画出程序框图。4、写出源程序清单和执行结果。data segmentgrade db 50 dup(?)rank db 50 dup(?)count dw ?ts1 db please enter grade,13,10,$ts2 db the rank is:,13,10,$data endscode segmentassume ds:data,cs:code,es:datastart:mov ax,datamov ds,axmov es,axcall inputcall rank1call outputmov ah,4chint 21hinput proclea dx,ts1mov ah,09hint 21hx

温馨提示

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

评论

0/150

提交评论