欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    微机原理实习报告北京科技大学.docx

    • 资源ID:62340740       资源大小:26.43KB        全文页数:82页
    • 资源格式: DOCX        下载积分:9.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理实习报告北京科技大学.docx

    微机原理实习报告北京科技大学微机原理上机实习报告 学院:班级:学号:姓名:指导老师:3 2013 年 年 8 8 月一、实习目的1、驾驭汇编语言的语法和编程思路; 2、驾驭汇编语言的编译程序 masm、链接程序 link 和调试程序 debug,以及dos 模拟工具 dosbox 的安装运用方法; 3、运用上述工具设计汇编程序; 4、复习微机原理与接口技术课上关于汇编程序的学问,敏捷运用汇编语言。二、实习要求1、运用软件为 dos 模拟工具 dosbox、汇编语言的编译程序 masm、链接程序link 和调试程序 debug 或轻松汇编软件 QASM。2、程序分为选做题和必做题两部分,要求运用汇编语言编写。三、题目分析 第一题 1 1 、题目要求:设计程序,并在程序中显示自己的姓名拼音、班级、学号。2 2 、需求分析:程序须要用到 DOS 功能调用 INT 21H 中的 9 号功能调用:显示字符串。重点和难点是定义数据段时要在字符串尾加$’符,否则会在输出所需字符串之后接着输出乱码。3 3 、程序运行截图: 4 4 、问题和解决:1)输出会显示乱码,在数据段添加$’符之后问题被解决。2)提示无堆栈段,定义堆栈段之后运行正常。 其次题 1 1 、题目要求:编写一个显示数字宏,在 dos 界面输入一个数字后,调用该宏显示输入的数字。2 2 、需求分析:程序须要用到 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 、需求分析:程序须要用到其次题的输入数字功能,同时须要将字符串转化为数字进行处理。同时,程序涉及到算数指令 MUL,DIV,ADD 等,尤其要留意的是溢出的处理。在计算 R 完毕之后,还须要将 R 重新转化为字符串形式输出。3 3 、程序运行截图: 4 4 、问题和解决:首先是将字符串转化为数字的问题。在处理这一部分代码的时候,我才发觉自己对于 ASCII 码和机器数的分别相识不是很清楚,通过查书,我实行了将字符串的 ASCII 码依次减 30H 的方法,首先将它们以一串字符的方法存储,再利用循环转化为数字。这样就可以顺当地进行运算了。其次是对于循环方式编程的不熟识。由于对于汇编循环的相识不是很清楚,第一次编程的时候出现了许多错误,后来逐一检查才发觉,由于习惯于 C+、Java等语言的编程,许多时候会想当然,导致脱离循环的推断语句出现逻辑错误,更改后运行正常。第三是溢出的处理,我利用了其次题的处理方式,同时增加了计算过程中的推断,在超过 65535 时会提示OVERFLOW ERROW。 第四题 1 1 、题目要求:从 dos 界面输入 4 个数字作为汇编程序的参数,编写冒泡法排序的子程序,进行排序输出最大值,并显示输入的 4 个数字和最大值。2 2 、需求分析:本题目可以利用第三题的数字输入和处理,唯一不同的是处理方式,即冒泡法排序。排序是题目的重点。3 3 、程序运行截图: 4 4 、问题和解决:出现的主要问题是冒泡法排序。由于对汇编的循环不熟识,编程时出现了混乱,于是我画了程序流程图,根据流程图编写程序,果真事半功倍。此外,在第一遍运行程序时,发觉无论大小都会进行交换,检查程序之后发觉遗忘添加比较的内容,添加之后运行正常。 第五题 1 1 、题目要求:设计键盘中断程序及其调用程序,在 dos 界面运行过程中,完成如下功能:a)输入 q 键结束程序 b)输入 i 键记录一个长度最长为 16 个字母的姓名拼音 c)输入 n 键显示刚刚输入的姓名拼音(不能有空格)2 2 、需求分析:本题目考察重点是中断和 DOS 功能调用的转换。3 3 、程序运行截图: 4 4 、问题和解决:出现的问题是程序推断跳转时的错误,在检查之后更改了跳转条件;除此之外,起先运行时程序会进入死循环无法跳出中断,发觉是循环语句有问题导致的,更改后运行正常。 第六题 1 1 、题目要求:设计鼠标程序,完成如下功能 a)在屏幕显示鼠标的坐标位置 b)点击鼠标左键,程序退出 2 2 、需求分析:程序涉及到硬件(鼠标)的处理,其难点为定位光标位置并输出。3 3 、程序运行截图:4 4 、问题和解决:拿到题目之后觉得无从下手,因此到图书馆借阅了相关书籍,同时在网络上查找资料,得到了定位鼠标的相关代码,更改后运行胜利。四、心得体会经过此次实习,我发觉自己对于汇编语言和计算机硬件的了解还很浅薄,汇编编程很好地熬炼了我的实力,也补上了我在课上缺失的学问。我的收获如下:1、编程语言都是相通的。虽然比之 C+、Java 等语言,汇编语言更加底层,对硬件操作的要求更高,但驾驭汇编语言有助于熬炼逻辑性和加深对微机原理的理解。同理,在其他计算机语言中学习到的学问也可以反而用在汇编上,例如此次遇到的冒泡法排序等等。2、查找资料特别有用。此次的第六题就是通过查找资料解决的,同时还在此过程中驾驭了很多课堂上学不到的新学问。3、只要细心,错误是肯定会被解决的。虽然出错的时候让人很头疼,但查错的过程更是熬炼自己的过程,因常出错的地方正是驾驭不好的地方。4、实践出真知。经过编程,我才发觉自己对于书本学问只停留在表面的理解,只能应付考试,然许多学问点都说不清。在一遍一遍查书、改错的过程中,我对许多之前模棱两可的学问都有了比较清楚的相识,还可以对其他同学讲解,感觉很有成就感。五、附录:汇编实习程序1、 ;=数据段= DATASSEGMENTMS1DB"zhangyiying,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=MOV AX, 4C00HINT 21H CODEENDSEND START2、 ;=数据段= DATASSEGMENTMS1DB"IN 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,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,"6"JGECJEECDX2JBNSAVEECDX2:MOVCL,BUFF+3CMP CL,"5"JGECJEECDX3JBNSAVE ECDX3:MOVCL,BUFF+4CMP CL,"5"JGECJEECDX4JBNSAVE ECDX4:MOVCL,BUFF+5CMP CL,"3"JGECJEECDX5JBNSAVE ECDX5:MOVCL,BUFF+6CMP CL,"5"JGECJBENSAVEEC:LEA DX,MSERROR MOV AH,9INT 21HJMP ED ;=输出数字= NSAVE: SHOW MS2 SHOW RESULT ;=返回 DOS= ED: MOV AX, 4C00HINT 21HCODEENDSEND START 3、 ;=数据段= DATASSEGMENTMSX1DB0DH,0AH,"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 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 ECDX1:CMP CL,"6"JGECJEECDX2JBNSAVE1 ECDX2:MOVCL,BUFF1+3 CMP CL,"5"JGECJEECDX3JBNSAVE1 ECDX3:MOVCL,BUFF1+4CMP CL,"5"JGECJEECDX4JBNSAVE1 ECDX4:MOVCL,BUFF1+5CMP CL,"3"JGECJEECDX5JBNSAVE1 ECDX5:MOVCL,BUFF1+6CMP CL,"5"JGECJBENSAVE1EC:LEA DX,MSERROR MOV AH,9INT 21HJMP ED NSAVE1:LEA DX,MSX2 MOV AH,9INT 21HLEA DX,BUFF1+2MOV AH,9INT 21H ; =输入 Y(带溢出处理)并显示=LEA DX,MSY1 MOV AH,9INT 21HMOV DX,OFFSET BUFF2MOV AH,10INT 21HMOVCL,BUFF2+2MOVCH,BUFF2+1CMP CL,"-"JE EC CMP CH,5JNE NSAVE2 ECDY1:CMP CL,"6"JGECJEECDY2JBNSAVE2 ECDY2:MOVCL,BUFF2+3CMP CL,"5"JGECJEECDY3JBNSAVE2 ECDY3:MOVCL,BUFF2+4CMP CL,"5"JGECJEECDY4JBNSAVE2 ECDY4:MOVCL,BUFF2+5CMP CL,"3"JGECJEECDY5JBNSAVE2 ECDY5:MOVCL,BUFF2+6CMP CL,"5"JGECJBENSAVE2NSAVE2:LEA DX,MSY2 MOV AH,9INT 21HLEA DX,BUFF2+2MOV AH,9INT 21H ; =输入 Z(带溢出处理)=LEA DX,MSZ1 MOV AH,9INT 21HMOV DX,OFFSET BUFF3MOV AH,10INT 21H MOVCL,BUFF3+2MOVCH,BUFF3+1CMP CL,"-"JE ECZCMP CH,5JNE NSAVE3 ECDZ1:CMP CL,"6"JGECZJEECDZ2JBNSAVE3 ECDZ2:MOVCL,BUFF3+3CMP CL,"5"JGECZJEECDZ3JBNSAVE3 ECDZ3:MOVCL,BUFF3+4CMP CL,"5"JGECZJEECDZ4JBNSAVE3 ECDZ4:MOVCL,BUFF3+5CMP CL,"3"JGECZJEECDZ5JBNSAVE3 ECDZ5:MOVCL,BUFF3+6CMP CL,"5"JGECZJBENSAVE3 ECZ:LEA DX,MSERROR MOV AH,9INT 21HJMP ED NSAVE3:LEA DX,MSZ2 MOV AH,9INT 21H ; =存储 X(字符型转化为数字)=NSTA:MOV SI,2MOV CL,BUFF1+1MOV AL,BUFF1+2MOV AH,00HMOV BX,0AH LOOP1:MOV CH,CLSUBAL,30HMOV BUFF1SI,ALDEC CHCMP CH,0JE CONT1 LOOPC:MUL BX;将相应位数乘以位权DECCHCMPCH,0JNELOOPC CONT1:ADDX,AXDECCLINCSIMOV AL,BUFF1SICMPCL,0JNELOOP1 ;=存储 Y=MOV SI,2MOV CL,BUFF2+1MOV AL,BUFF2+2MOV AH,00HMOV BX,0AH LOOP2:MOV CH,CLSUBAL,30HMOV BUFF2SI,ALDECCHCMPCH,0JECONT2 LOOPD:MUL BXDECCHCMPCH,0JNELOOPD CONT2: ADDY,AXDECCLINCSIMOV AL,BUFF2SICMPCL,0JNELOOP2 ;=存储 Z=MOV SI,2MOV CL,BUFF3+1MOV AL,BUFF3+2MOV AH,00HMOV BX,0AH LOOP3:MOV CH,CLSUBAL,30HMOV BUFF3SI,ALDECCHCMPCH,0JECONT3 LOOPM:MUL BXDECCHCMPCH,0JNELOOPM CONT3:ADDZ,AXDECCLINCSIMOV AL,BUFF3SICMPCL,0JNELOOP3 ;=计算 R(带溢出处理)=MOVDX,00HMOVAX,XMOVCX,YDIV CXMOVBX,65535SUB BX,ZCMP BX,AXJG ECJADDAX,ZMOVR,AXJMP PRINTR ECJ: LEA DX,MSERROR MOV AH,9INT 21HJMP ED ;=将 R 的值转化为字符型输出= PRINTR:MOV CX,10000 ;字符型转化MOV DX,00HDIVCXADDAL,30HMOVBUFF4+2,ALMOV AX,DXMOV DX,00HMOV CX,1000DIVCXADDAL,30HMOVBUFF4+3,ALMOV AX,DXMOV DX,00HMOV CX,100DIVCXADDAL,30HMOVBUFF4+4,ALMOV AX,DXMOV DX,00HMOV CX,10DIVCXADDAL,30HMOVBUFF4+5,ALMOV AX,DXMOV DX,00HMOV CX,1DIVCXADDAL,30HMOVBUFF4+6,ALLEA DX,MSR MOV AH,9INT 21HLEA DX,BUFF4+2MOV AH,9INT 21H ;=返回 DOS= ED:MOV AX, 4C00H INT 21HCODE ENDSEND START 4、 ;=数据段= DATASSEGMENT MSX1DB0DH,0AH,"INPUT X:$"MSX2DB0DH,0AH,"X:$"MSY1DB0DH,0AH,"INPUT Y:$"MSY2DB0DH,0AH,"Y:$" MSZ1DB0DH,0AH,"INPUT Z:$"MSZ2DB0DH,0AH,"Z:$"MSR1DB0DH,0AH,"INPUT R:$"MSR2DB0DH,0AH,"R:$"MSERROR DB0DH,0AH,"OVERFLOW ERROR.$" MSM DB0DH,0AH,"THE BIGGEST NUMBER IS:$"BUFF1DB7,?,7 DUP("$")BUFF2DB7,?,7 DUP("$")BUFF3DB7,?,7 DUP("$")BUFF4DB7,?,7 DUP("$")NUMDW 0YDW 0ZDW 0RDW 0 DATASENDS ;=堆栈段= 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+2MOVCH,BUFF1+1 CMP CH,5JNE NSAVE1 ECDX1:CMP CL,"6"JGECJEECDX2JBNSAVE1 ECDX2:MOVCL,BUFF1+3CMP CL,"5"JGECJEECDX3JBNSAVE1 ECDX3:MOVCL,BUFF1+4CMP CL,"5"JGECJEECDX4JBNSAVE1 ECDX4:MOVCL,BUFF1+5CMP CL,"3"JGECJEECDX5JBNSAVE1 ECDX5:MOVCL,BUFF1+6CMP CL,"5"JGECJBENSAVE1EC:LEA DX,MSERROR MOV AH,9INT 21HJMP ED NSAVE1:LEA DX,MSX2 MOV AH,9INT 21HLEA DX,BUFF1+2MOV AH,9INT 21H ; =输入 Y 并显示=LEA DX,MSY1 MOV AH,9INT 21HMOV DX,OFFSET BUFF2MOV AH,10INT 21HMOVCL,BUFF2+2MOVCH,BUFF2+1CMP CH,5JNE NSAVE2 ECDY1:CMP CL,"6"JGECJEECDY2JBNSAVE2 ECDY2:MOVCL,BUFF2+3CMP CL,"5"JGECJEECDY3JBNSAVE2 ECDY3:MOVCL,BUFF2+4CMP CL,"5"JGECJEECDY4JBNSAVE2 ECDY4:MOVCL,BUFF2+5CMP CL,"3"JGECJEECDY5JBNSAVE2 ECDY5:MOVCL,BUFF2+6CMP CL,"5"JGECJBENSAVE2NSAVE2:LEA DX,MSY2 MOV AH,9INT 21HLEA DX,BUFF2+2MOV AH,9INT 21H; =输入 Z 并显示=LEA DX,MSZ1 MOV AH,9INT 21HMOV DX,OFFSET BUFF3MOV AH,10INT 21HMOVCL,BUFF3+2MOVCH,BUFF3+1CMP CH,5JNE NSAVE3 ECDZ1:CMP CL,"6"JGECZJEECDZ2JBNSAVE3 ECDZ2:MOVCL,BUFF3+3CMP CL,"5"JGECZJEECDZ3JBNSAVE3 ECDZ3:MOVCL,BUFF3+4CMP CL,"5"JGECZJEECDZ4JBNSAVE3 ECDZ4:MOVCL,BUFF3+5CMP CL,"3"JGECZJEECDZ5JBNSAVE3 ECDZ5:MOVCL,BUFF3+6CMP CL,"5"JGECZJBENSAVE3 ECZ:LEA DX,MSERROR MOV AH,9INT 21HJMP EDNSAVE3:LEA DX,MSZ2 MOV AH,9INT 21HLEA DX,BUFF3+2MOV AH,9INT 21H ; =输入 R 并显示=LEA DX,MSR1 MOV AH,9INT 21HMOV DX,OFFSET BUFF4MOV AH,10INT 21HMOVCL,BUFF4+2MOVCH,BUFF4+1CMP CH,5JNE NSAVE4 ECDR1:CMP CL,"6"JGECZJEECDR2JBNSAVE4 ECDR2:MOVCL,BUFF4+3CMP CL,"5"JGECZJEECDR3JBNSAVE4 ECDR3:MOVCL,BUFF4+4CMP CL,"5"JGECZJEECDR4JBNSAVE4 ECDR4:MOVCL,BUFF4+5CMP CL,"3"JGECZJEECDR5JBNSAVE4 ECDR5:MOVCL,BUFF4+6CMP CL,"5" JGECZJBENSAVE4 NSAVE4:LEA DX,MSR2 MOV AH,9INT 21HLEA DX,BUFF4+2MOV AH,9INT 21H ; =存储 X=MOV SI,2MOV CL,BUFF1+1MOV AL,BUFF1+2MOV AH,00HMOV BX,0AH LOOP1:MOV CH,CLSUBAL,30HMOV BUFF1SI,ALDEC CHCMP CH,0JE CONT1 LOOPC:MUL BX;将相应位数乘以位权DECCHCMPCH,0JNELOOPC CONT1:ADDNUM,AXDECCLINCSIMOV AL,BUFF1SICMPCL,0JNELOOP1 ;=存储 Y=MOV SI,2MOV CL,BUFF2+1MOV AL,BUFF2+2MOV AH,00HMOV BX,0AH LOOP2:MOV CH,CLSUBAL,30HMOV BUFF2SI,AL DECCHCMPCH,0JECONT2 LOOPD:MUL BXDECCHCMPCH,0JNELOOPD CONT2:ADDY,AXDECCLINCSIMOV AL,BUFF2SICMPCL,0JNELOOP2 ;=存储 Z=MOV SI,2MOV CL,BUFF3+1MOV AL,BUFF3+2MOV AH,00HMOV BX,0AH LOOP3:MOV CH,CLSUBAL,30HMOV BUFF3SI,ALDECCHCMP

    注意事项

    本文(微机原理实习报告北京科技大学.docx)为本站会员(w***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开