微机原理实习报告北京科技大学.docx
《微机原理实习报告北京科技大学.docx》由会员分享,可在线阅读,更多相关《微机原理实习报告北京科技大学.docx(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理实习报告北京科技大学微机原理上机实习报告 学院:班级:学号:姓名:指导老师:3 2013 年 年 8 8 月一、实习目的1、驾驭汇编语言的语法和编程思路; 2、驾驭汇编语言的编译程序 masm、链接程序 link 和调试程序 debug,以及dos 模拟工具 dosbox 的安装运用方法; 3、运用上述工具设计汇编程序; 4、复习微机原理与接口技术课上关于汇编程序的学问,敏捷运用汇编语言。二、实习要求1、运用软件为 dos 模拟工具 dosbox、汇编语言的编译程序 masm、链接程序link 和调试程序 debug 或轻松汇编软件 QASM。2、程序分为选做题和必做题两部分,要求运用
2、汇编语言编写。三、题目分析 第一题 1 1 、题目要求:设计程序,并在程序中显示自己的姓名拼音、班级、学号。2 2 、需求分析:程序须要用到 DOS 功能调用 INT 21H 中的 9 号功能调用:显示字符串。重点和难点是定义数据段时要在字符串尾加$’符,否则会在输出所需字符串之后接着输出乱码。3 3 、程序运行截图: 4 4 、问题和解决:1)输出会显示乱码,在数据段添加$’符之后问题被解决。2)提示无堆栈段,定义堆栈段之后运行正常。 其次题 1 1 、题目要求:编写一个显示数字宏,在 dos 界面输入一个数字后,调用该宏显示输入的数字。2 2 、需求分析:程序须要用
3、到 DOS 功能调用 INT 21H 中的 9 号功能调用:显示字符串和 10号功能调用:输入一串字符。其中 9 号调用须要被封装为宏。由于要限制字符长度,须要对输入的字符串进行相应溢出处理。3 3 、程序运行截图:4 4 、问题和解决:出现的主要问题是溢出处理。我采纳了逐位比较的方法,将数字固定在 0至 65535 之内,如输入溢出,则提示溢出信息OVERFLOW ERROR。 第三题 1 1 、题目要求:输入 3 个 16 比特数无符号数 x、y 和 z,显示 x 和 y,并计算 r=x/y+z,显示 r,要求处理溢出等状况。2 2 、需求分析:程序须要用到其次题的输入数字功能,同时须要将
4、字符串转化为数字进行处理。同时,程序涉及到算数指令 MUL,DIV,ADD 等,尤其要留意的是溢出的处理。在计算 R 完毕之后,还须要将 R 重新转化为字符串形式输出。3 3 、程序运行截图: 4 4 、问题和解决:首先是将字符串转化为数字的问题。在处理这一部分代码的时候,我才发觉自己对于 ASCII 码和机器数的分别相识不是很清楚,通过查书,我实行了将字符串的 ASCII 码依次减 30H 的方法,首先将它们以一串字符的方法存储,再利用循环转化为数字。这样就可以顺当地进行运算了。其次是对于循环方式编程的不熟识。由于对于汇编循环的相识不是很清楚,第一次编程的时候出现了许多错误,后来逐一检查才发
5、觉,由于习惯于 C+、Java等语言的编程,许多时候会想当然,导致脱离循环的推断语句出现逻辑错误,更改后运行正常。第三是溢出的处理,我利用了其次题的处理方式,同时增加了计算过程中的推断,在超过 65535 时会提示OVERFLOW ERROW。 第四题 1 1 、题目要求:从 dos 界面输入 4 个数字作为汇编程序的参数,编写冒泡法排序的子程序,进行排序输出最大值,并显示输入的 4 个数字和最大值。2 2 、需求分析:本题目可以利用第三题的数字输入和处理,唯一不同的是处理方式,即冒泡法排序。排序是题目的重点。3 3 、程序运行截图: 4 4 、问题和解决:出现的主要问题是冒泡法排序。由于对汇
6、编的循环不熟识,编程时出现了混乱,于是我画了程序流程图,根据流程图编写程序,果真事半功倍。此外,在第一遍运行程序时,发觉无论大小都会进行交换,检查程序之后发觉遗忘添加比较的内容,添加之后运行正常。 第五题 1 1 、题目要求:设计键盘中断程序及其调用程序,在 dos 界面运行过程中,完成如下功能:a)输入 q 键结束程序 b)输入 i 键记录一个长度最长为 16 个字母的姓名拼音 c)输入 n 键显示刚刚输入的姓名拼音(不能有空格)2 2 、需求分析:本题目考察重点是中断和 DOS 功能调用的转换。3 3 、程序运行截图: 4 4 、问题和解决:出现的问题是程序推断跳转时的错误,在检查之后更改
7、了跳转条件;除此之外,起先运行时程序会进入死循环无法跳出中断,发觉是循环语句有问题导致的,更改后运行正常。 第六题 1 1 、题目要求:设计鼠标程序,完成如下功能 a)在屏幕显示鼠标的坐标位置 b)点击鼠标左键,程序退出 2 2 、需求分析:程序涉及到硬件(鼠标)的处理,其难点为定位光标位置并输出。3 3 、程序运行截图:4 4 、问题和解决:拿到题目之后觉得无从下手,因此到图书馆借阅了相关书籍,同时在网络上查找资料,得到了定位鼠标的相关代码,更改后运行胜利。四、心得体会经过此次实习,我发觉自己对于汇编语言和计算机硬件的了解还很浅薄,汇编编程很好地熬炼了我的实力,也补上了我在课上缺失的学问。我
8、的收获如下:1、编程语言都是相通的。虽然比之 C+、Java 等语言,汇编语言更加底层,对硬件操作的要求更高,但驾驭汇编语言有助于熬炼逻辑性和加深对微机原理的理解。同理,在其他计算机语言中学习到的学问也可以反而用在汇编上,例如此次遇到的冒泡法排序等等。2、查找资料特别有用。此次的第六题就是通过查找资料解决的,同时还在此过程中驾驭了很多课堂上学不到的新学问。3、只要细心,错误是肯定会被解决的。虽然出错的时候让人很头疼,但查错的过程更是熬炼自己的过程,因常出错的地方正是驾驭不好的地方。4、实践出真知。经过编程,我才发觉自己对于书本学问只停留在表面的理解,只能应付考试,然许多学问点都说不清。在一遍一
9、遍查书、改错的过程中,我对许多之前模棱两可的学问都有了比较清楚的相识,还可以对其他同学讲解,感觉很有成就感。五、附录:汇编实习程序1、 ;=数据段= DATASSEGMENTMS1DBzhangyiying,1103,41156072$ DATASENDS ;=堆栈段= STACKS SEGMENT STACK DB200DUP(0) STACKS ENDS ;=代码段= CODESEGMENTASSUMECS:CODE,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX LEA DX,MS1 MOV AH,9 INT 21H ;=返回 DOS=M
10、OV AX, 4C00HINT 21H CODEENDSEND START2、 ;=数据段= DATASSEGMENTMS1DBIN PUT A NUMBER:$;输入提示 MS2DB0DH,0AH,THE INPUT NUMBER IS:$;输出提示MSERROR DB0DH,0AH,OVERFLOW ERROR.$ ;溢出提示BUFFDB16 ;用于存储输入的字符串 DBRESULTDB16DUP($) DATASENDS ;=堆栈段= STACKS SEGMENT STACK DB200DUP(0) STACKS ENDS ;=代码段= CODESEGMENTASSUMECS:CODE,
11、DS:DATAS,SS:STACKSSTART:MOV AX,DATAS MOV DS,AX ;=输出宏= SHOWMACRO OPE LEA DX,OPE MOV AH,9 INT 21H ENDM ;=输入提示= SHOW MS1 ;=输入数字= MOV DX,OFFSET BUFF MOVAH,10 INT 21H ;=溢出处理(065535)=MOVCL,BUFF+2MOVCH,BUFF+1CMP CL,-JEECCMP CH,5JNE NSAVE ECDX1:CMP CL,6JGECJEECDX2JBNSAVEECDX2:MOVCL,BUFF+3CMP CL,5JGECJEECDX3
12、JBNSAVE ECDX3:MOVCL,BUFF+4CMP CL,5JGECJEECDX4JBNSAVE ECDX4:MOVCL,BUFF+5CMP CL,3JGECJEECDX5JBNSAVE ECDX5:MOVCL,BUFF+6CMP CL,5JGECJBENSAVEEC:LEA DX,MSERROR MOV AH,9INT 21HJMP ED ;=输出数字= NSAVE: SHOW MS2 SHOW RESULT ;=返回 DOS= ED: MOV AX, 4C00HINT 21HCODEENDSEND START 3、 ;=数据段= DATASSEGMENTMSX1DB0DH,0AH,
13、INPUT X:$ ;输入提示 MSX2DB0DH,0AH,X:$ MSY1DB0DH,0AH,INPUT Y:$MSY2DB0DH,0AH,Y:$MSZ1DB0DH,0AH,INPUT Z:$ MSZ2DB0DH,0AH,INPUT ENDS.$ MSR DB0DH,0AH,R=X/Y+Z=$ MSERROR DB0DH,0AH,OVERFLOW ERROR.$BUFF1DB7,?,7 DUP($);用于存储字符串 BUFF2DB7,?,7 DUP($) BUFF3DB7,?,7 DUP($) BUFF4DB7,?,7 DUP($)X DW 0;用于存储字符串转化之后的数字 Y DW 0 Z
14、 DW 0 R DW 0DATASENDS;=堆栈段= STACKS SEGMENT STACK DB200DUP(0) STACKS ENDS ;=代码段= CODESEGMENTASSUMECS:CODE,DS:DATAS,SS:STACKSSTART:MOVAX,DATAS;初始化 MOVDS,AX ; =输入 X(带溢出处理)并显示=LEA DX,MSX1 MOV AH,9INT 21HMOV DX,OFFSET BUFF1MOV AH,10INT 21HMOVCL,BUFF1+2;处理溢出MOVCH,BUFF1+1CMP CL,-JE ECCMP CH,5JNE NSAVE1 ECD
15、X1:CMP CL,6JGECJEECDX2JBNSAVE1 ECDX2:MOVCL,BUFF1+3 CMP CL,5JGECJEECDX3JBNSAVE1 ECDX3:MOVCL,BUFF1+4CMP CL,5JGECJEECDX4JBNSAVE1 ECDX4:MOVCL,BUFF1+5CMP CL,3JGECJEECDX5JBNSAVE1 ECDX5:MOVCL,BUFF1+6CMP CL,5JGECJBENSAVE1EC:LEA DX,MSERROR MOV AH,9INT 21HJMP ED NSAVE1:LEA DX,MSX2 MOV AH,9INT 21HLEA DX,BUFF1+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实习 报告 北京科技大学
限制150内