微机原理及应用实验报告 (2)_第1页
微机原理及应用实验报告 (2)_第2页
微机原理及应用实验报告 (2)_第3页
微机原理及应用实验报告 (2)_第4页
微机原理及应用实验报告 (2)_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、.微机原理及其应用上机实验报告 实验一 程序调试实验(顺序结构程序设计)一、实验目的:1学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。2熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。3、熟悉和掌握DEBUG常用命令的使用二、实验要求:1、上机前,要认真阅读前言和课本相关章节2、上机前,画好流程图,编写好程序3、上机时,注意出现的错误,记录下出错信息,翻译之4、完成好实验报告三、实验内容:在内存TAB开始的16个单元连续存放了015的平方值(0225),任给一个数X(0 X 15),求X的平方值,并把结果存放在Y单元中。(2).分析X平方的值是tab为首地

2、址且x的值为有效地址中的值。data segment开始AX清零将第一个数据读取到alSi,ax相加结果给si以si的数据位地址的内容给alY al 结束 tab db 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225 x db 8 y db ? data ends stack segment parastack db 100 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax mov al,x

3、lea si,tab add si,ax mov al,si mov y,al mov ah,4ch int 21hcode ends end start (3).程序调试:4.心得体会了解了顺序结构,掌握了程序的运行,调试。 实验二 分支程序设计一、实验目的:熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。掌握分支程序设计、编写、调试和运行的方法。二、实验要求:1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。二、实验内容1.判断X单元数据

4、的奇偶性,若为奇数,将Y单元设置为0FFH,若为偶数,将Y单元清0。(2).分析开始取x值赋给alAL与01h与运算结果是否为0YesNo将0赋给y将0ffh赋给y结束将x值给寄存器al,al和1相与,判断最低位是0或1,若为0,x为偶数,否则为奇数。 data segmentx dw 69hy db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax mov ax,x and ax,01h jz next1 mov y,0ffh jmp next next1:mov y,0 next:mov ah,4

5、ch int 21h code ends end start (3).程序调试(4).心得体会掌握了add指令的用法,熟悉了分支结构。 2. 设计个比较两个8位无符号数的大小、并把较小的数存人MIN单元的程序。假设这两个数分别存放在FIRST和SECOND单元中。(2).分析将first值赋给al,判断al与second的大小,将小的值给min。data segment开始取first值给al判断al是否大于second将al值给min将second值给min结束是否first db 32hsecond db 56hmin db ?data endscode segmentassume cs:

6、code,ds:datastart:mov ax,data mov ds,ax mov al,first cmp al,second jc next mov bl,second mov min,bl jmp next1 next:mov min,al next1:mov ah,4ch int 21h code ends end start (3).程序调试(4).心得体会掌握了cmp指令的用法,加深了对分支结构的了解。实验三 循环程序设计一、实验目的掌握循环指令的使用方法;掌握实现单重、多重循环程序设计、编写、调试和运行的方法。二、实验要求:1、上机前认真分析题意,找出算法,画出流程图,依据流

7、程图,编好程序2、在调试程序的过程中,对出现的错误应记录它的英文提示,进行翻译,把更正的指令用其它颜色的笔记录的原程序清单的右边,便于比较。三、实验内容:开始AX,BX清零AX+bx赋给axBX+1AX是否大于等于1000是否BX赋给nAx赋给sum结束1、 从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,将累加和送入sum单元。data segment n dw ? sum dw ?data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,ax mov ax,0

8、 mov bx,0 next: inc bxadd ax,bx cmp ax,1000 jb next mov n,bx mov ax,sum mov ah,4ch int 21hcode ends end start2.内存地址BUFFER开始存放着10个带符号字节数组,编写程序求数组中正数、零和负数的个数,并分别将它们存于PLUS开始的单元。(2).分析将寄存器al,bx初始化,取buffer首地址给si,设置循环次数给cx,判断si的值正负还是零,将正数个数值送给al,负数个数值送给bh,零的个数给bl,再将三个值存放在以plus为首地址的地址中。 data segment开始将bx,a

9、l初始化取buffer首地址给si,并设置循环次数判断si为正数还是负数还是零si为整数则al加1,si为负数则bh加1,si为零则bl加1.将al,bl,bh赋给以plus为首地址的地址判断cx是否为零si+1是否结束buffer db 10h,78h,23h,00h,56h,46h,86h,0efh,0bch,65hcnt equ $-bufferplus db 3data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax mov bx,0 mov al,0 lea si,buffer mov cx,cntl

10、op1:test si,80h jz zero inc bh jmp nextzero:cmp byte ptrsi,0 jz next2 inc al jmp nextnext2:inc blnext:inc si loop lop1 lea di,plus mov di,al inc di mov di,bl inc di mov di,bh mov ah,4ch int 21hcode endsend start (3).程序调试(4).心得体会学习了循环结构,了解了循环指令的用法。3、内存中有一串以“$”结尾的字符串,统计其中“A”出现的次数。2).分析初始化寄存器,取字符串首地址,首

11、先判断si内容是否为$,若是则结束程序,否则再判断si是否为A,若是则bl加1记录A的个数,否则判断下一个字符。开始初始化bl,取string首地址给si,设置循环次数给cxsi值给al,判断是否为$判断si是否为Abl加1, 将bl值给jin结束判断cx是否为零是是否否是否Si+1cx-1cx-1data segmentstring db jAnsAhAenA$cnt equ $-stringjin db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax mov bl,0 lea si,string

12、 mov cx,cntnext2:mov al,si cmp al,$ jz next3 cmp al,A JZ next jmp next1next:inc blnext1:inc si loop next2next3:mov jin,bl mov ah,4ch int 21h code ends end start3).程序调试4).心得体会加深了对循环结构的了解,强化了对循环指令的运用。实验四 字符串的输入和输出一、实验目的:掌握字符串输入和输出的方法,掌握基本的I/O功能调用,学习对内存变量进行处理的方法。二、实验要求:1、分析题意,写出算法,画出流程图,再编程2、认真调试程序,对程序

13、可能存在的所有情况都要进行运行,只有这样才能证明程序的正确性。三、实验内容:1、在内存单元中存放了两个字符串STRINGl和STRING2(设其长度相同),试编写程序,比较它们所含的字符是否相同。若相同,则显示Match;否则,显示No match。2).分析取string1和string2的首地址给si和di,设置循环次数给cx,比较si和di内容是否相同,若全部相同则显示器输出mantch,若不相同,则输出no mantch.data segmentstring1 db jinshengcnt equ $-string1string2 db jinshenrbuff1 db match$b

14、uff2 db no match$data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax开始取string1和string2的首地址给si和di将string1的长度值给cx将si和bi的数据给al和blAL与bl是否相同是否SI+1DI+1CX是否为零是否显示mantch显示no mantch结束 lea si,string1 lea di,string2 mov cx,cnt next: mov al,si mov bl,di cmp al,bl jz next1 lea dx,buff2 mov ah,

15、9 int 21h jmp next2 next1:inc si inc di loop next lea dx,buff1 mov ah,9 int 21h next2:mov ah,4ch int 21h code ends end start3).程序调试4).心得体会了解了字符串比较的指令和字符串输出的指令。实验五 程序设计综合应用一、实验目的:通过本实验,深入掌握汇编语言程序设计的方法与技巧。二实验内容:2、内存单元MEM开始存放了一个长度为10的无符号字节数组,编写程序找出其中的最大值和最小值并存于MAX和MIN单元。2).分析取men的手首址给si,将首址中的数值给al、bl,再

16、将其他数值逐个与al、bl比较,最小值给bl,最大值给al。CX-1SI+1开始取men首地址给si设置循环次数给cx再取men的一个数据将men第一个数据给al,bl和al,bl比较CX=0最小值给bl最大值给al结束BL给min,al给maxdata segmentmem db 23h,45h,98h,24h,03h,15h,16h,65h,48h,35h min db ?max db ?data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax lea si,mem mov al,si mov bl,al

17、mov cx,9 next:inc si cmp si,al jnc da cmp si,bl jc xiao jmp again da:mov al,si jmp again xiao:mov bl,si again:dec cx jnz next mov max,al mov min,bl mov ah,4ch int 21h code ends end start3).程序调试4).心得体会深入掌握汇编语言程序设计的方法与技巧,加深了对循环指令的用法。3. 将字符串转换成大写字母字符串。设字符串的首地址为STRING,字符串的长度在LENGTH单元内。数据段可定义如下:DATA SEGM

18、ENTSTRING DB I am a student!LENGTH DB 15DATA ENDS程序在循环体内逐个取出字符,判断是否在小写字母a和z之间,若在就将其转换成大写字母并放回原处,若不在则保持原字符不变。2).分析取string首地址给si,设置循环次数给cx,用循环指令依次判断si中字符并作出相应的操作,将string中的小写字母改成大写。data segmentstring db I am a student!lenth1 db 15data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax lea si,string mov

温馨提示

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

评论

0/150

提交评论