微机原理实验_第1页
微机原理实验_第2页
微机原理实验_第3页
微机原理实验_第4页
微机原理实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上微机原理实验1、 实验目的:1、 应用学过的汇编语言编写简单程序,将汇编语言在编程中实际应用。2、 掌握汇编语言的编辑、汇编、连接、调试等基本方法。3、 灵活应用各种语句实现要求的程序功能。4、 在实验中进一步掌握并熟练应用汇编语言,理解常用指令、伪指令及存储空间分配等2、 实验内容:从键盘取得一串字符显示在屏幕上,然后将这串字符以输入的反序再显示一遍,并统计这字符串中A的个数,显示在屏幕上。附加要求:可以从键盘输入需要统计的字符,并统计这字符串中这个字符的个数,显示在屏幕上。3、 流程图:开 始结 束输出相同的字符数量计数加1和输入字符比较是否相同CX=0?指针指向

2、第一个字符设置CX循环次数即字符串的字符数输出提示输入字符SHU RU ZI FU CX=0?输出指针指向单元中的字符指针指向 1指向前一个单元指针指向字符串最后一个字符设置循环次数CX为输入的字符个数输出提示“反转后字符”FAN ZHUAN HOU ZI FU 输入字符串输出提示“输入字符串”SHU RU ZI FU CHUAN 输入要查找的字符否是是否指向下一个字符是 否4、 实验程序:DATAS SEGMENTPASS DB 20 ;预留20个字节的空间存放输入的字符BLK1 DB 'SHU RU ZI FU CHUAN: $' ;在屏幕上要显示的提示语句BLK2 DB

3、'SHU RU ZI FU : $'BLK3 DB 'SHU LIANG SHI: $'BLK4 DB 'FAN ZHUAN HOU: $'DATAS ENDS;*以上是数据段定义,下面开始代码段*CODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX ;实现ASSUME中的承诺;* MOV AH,09H ;字符串输出功能09H LEA DX,BLK1 INT 21H ;*显示第一句提示语* MOV AH,0AH ;字符串输入功能0AH LEA DX,PASS INT

4、 21H ;*以上完成字符串输入并显示出来* MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;*以上实现回车换行* MOV AH,09H LEA DX,BLK4 INT 21H ;*输出BLK4中定义的内容,提示为反转后字符串* MOV CL,PASS+1 ;PASS+1处是实际输入的字符个数 MOV CH,0 ;CH置0,CX为循环的次数也就是输入的字符个数 MOV DL,PASS+1 MOV DH,0 ;DX同样是字符个数,用于后面的加法运算 LEA SI,PASS+2 ;PASS+2处为实际输入字符的开始位置; ADD SI,DX ;用加法

5、实现了将SI的指针指向了字符串的最后一个字符S0: DEC SI ;SI不断减1,指针指向地址不断前移,也就反向了输出刚才输入的字符串 MOV AH,02H ;显示输出功能02H MOV DL,SI ;输出指针所指向单元中的内容 INT 21H LOOP S0;*以上用循实现了字符串的反转后输出功能* MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;*回车换行* MOV AH,09H LEA DX,BLK2 INT 21H;*显示提示语BLK2输入要查找的字符的提示语输出* MOV AH,01H ; 有回显的输入,显示的是输入的要查找字符 INT

6、 21H MOV CL,PASS+1 XOR CH,CH LEA SI,PASS+2 XOR DL,DL ;和前面相同CX设置了循环次数,SI指向第一个字符S1: CMP AL,SI ;进行字符比较,是和Al比较,若相同则计数加1,不同则比较下一个 JNZ NEXT INC DL ;DL记录的是比较过程中相同的字符数NEXT: INC SI ;指向下一个字符LOOP S1 MOV BL,DL ;DL记录的数量给BL后面语句输出之前要用到DL ;*通过以上循环将所有字符比较一遍得到数量* MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;*回车换

7、行* MOV AH,09H LEA DX,BLK3 INT 21H;*输出提示语BLK3相同字符的数量* MOV DL,BL ADD DL,30H ;计数加30H是为了转换成ASC码输出。 MOV AH,02H INT 21H MOV AH,4CH INT 21HCODES ENDS END START5、 调试及遇到的问题:在使用MASA进行连接link的时候出现了语句的错误,经过仔细的查找将语句中因为输入错误,符号输入错误,比如出现了汉字输入的分号等问题加以修改,程序可以正常生成obj文件,进而可以生成exe可执行文件,但是在执行过程中出现了下面几个比较严重的问题,是因为程序编写逻辑或原理

8、错误造成的,虽然可以得到exe可执行文件但是输出的结果是有问题的,所以经过了改正才得以解决。(1)从输出的字符串可以看出输出了乱码 经过查找是因为,定义的字符串地址PASS,其中PASS+1是字符的个数,PASS+2是第一个字符串,所以在程序中将字符个数 MOV CL,PASS+1 语句写成了MOV CL,PASS就使得程序出现了上面的显示有乱码输出。(2)输出的字符少了一个问题在相同的位置,字符的第一个实际的位置是在PASS+2,而在编写程序的时候写的是PASS+1,所以导致了在程序输出的时候得到的是少一个字符的情况。这个问题需要仔细看输出才发现的,所以在编程的时候容易发生错误,在认真看输出

9、后发现少了一个字符。(3)输出的数量显示的是一个笑脸图案而不是数字查找问题后发现,是在定义输出的时候少了一个步骤,ADD DL,30H ,加30H是让DL中得到的计数值转化成为ASC码输出然后我们才能看到数字,否则看到的都是对应的乱码。这个问题是一个编程程序根本问题如果不解决是得不到最终结果的,所以在多次调试和改变之后终于能够得到最后的正确结果。6、 实验结果:经过反复的找错调试,最终程序正确并且得到了输出的结果,输入任意的字符串,能够反序输出然后输入要查找的字符,能够得到要查找的字符的个数。7、 分析总结:通过这次实验,实际操作编写一个程序,并运行得到结果,整个过程让我对汇编语言的理解更为深刻,对汇编语言的各种语句的功能更加熟悉,对汇编程序的运行过程也有了更直观的了解。课程知识和实验结合起来,能够使知识运用更熟悉灵活。同时,编写程序是一个需要知识和细心地过程,任何的细小的

温馨提示

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

评论

0/150

提交评论