四川大学微机原理实验报告研究生考试专业课研究生考试专业课.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《四川大学微机原理实验报告研究生考试专业课研究生考试专业课.pdf》由会员分享,可在线阅读,更多相关《四川大学微机原理实验报告研究生考试专业课研究生考试专业课.pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 微机原理实验报告 学 院:专业班级:姓 名 学 号 实验一 汇编语言编程基础 1.3 汇编语言程序上机操作和调试训练 一功能说明 运用 8086 汇编语言,编辑多字节非压缩型 BCD数除法的简单程序,文件名取为*.ASM。运用 MASM EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ 文件。运用 LINK.EXE文件进行连接,形成*.EXE文件。仔细阅读和体会 DEBUG 调试方法,掌握各种命令的使用方法。运用 DEBUG。EXE文件进行调试,使用单步执行命令T 两次,观察寄存器中内容的变化,使用察看存储器数据段命令D,观察存储器数据段内数值。再使用连续执行命令G,执
2、行程序,检查结果是否正确,若不正确可使用DEBUG 的设置断点,单步执行等功能发现错误所在并加以改正。二程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完?Y 显示运算结果 结束 三程序代码 修改后的程序代码如下:DATA SEGMENT A DB 9,6,8,7,5 B DB 5 C DB 5 DUP(0)N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START:MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA
3、 SI,A LEA DI,C MOV CX,N MOV AH,0 LP1:LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2:MOV DL,DI ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用 DEBUG 调试程序,收获很大。在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.
4、EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是 64 位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX 这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验 1.3 中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用 DEBUG 调试时发现得出的结果也很正确。尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇
5、编语言和 C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用 C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。实验二 设计汇编语言程序 一功能说明 练习 1.实验题目:编程计算下列表达式:A=90,B=-70,C=5,Y均为有符号数,计算 Y=2(A+B)+(AC)5 要编写一些稍微复杂的程序,我们会遇到一段程序被反复执行,这样,我们会用到 LOOP指令。使用该指令时,需在 CX中装入循环次数。练习 2.码转换程序设计 编制程序,把十进制数 15786 转化成二进制数。提示:15786=110101
6、010+510+710+810+6,循环 CX=5 练习 3.编制程序,从键盘输入最多 5 个数,求他们的和,存入 SUM。练习 4.用“冒泡“法对一组数 300,250,280,240,260,按从小到大的顺序排列。提示:用冒泡的方法对一组数据元素排序,它的基本方法是:将相邻的两个元素通过比较进行排序,通过多次,多遍的邻元素排序,实现整个一组数的排序。对于 5(N)个元素,整个排序通过 4 遍(=N-1)邻元素排序完成。每一遍的排序由若干次邻元素的排序组成。4 遍排序中,邻元素的排序依次为 4,3,2,1 遍。完成第一遍排序后,最大数沉底,已经到达它应占据的位置,不需要参加下一遍的排序。外循
7、环的次数为 CX=4次(N-1),内循环的次数为 4,3,2,1(DEC CX)排序遍数 本遍排序前 第 一 次 排 序后 第 二 次 排 序后 第 三 次 排 序后 第 四 次 排 序后 1 300,250,280,240,260 250,300,280,240,260 250,280,300,240,260 250,280,240,300,260 250,280,240,260,300 2 250,280,240,260,300 250,280,240,260,300 250,240,280,260,300 250,240,260,280,300 3 250,240,260,280,300
8、 250,240,260,280,300 240,250,260,280,300 4 240,250,260,280,300 240,250,260,280,300 实验要求:1.编制程序,从键盘输入 300,250,280,240,260 这五个数,并思考如何输入任意五个数,五个数可以有一位数,二位数,三位数,四位数,五位数,混合输入比较大小;2.对这组数用冒泡法进行排序,并输出原始数据及排序后数据,两两数据之间用空格分隔;3.利用 DEBUG 调试工具,用 D0命令,查看排序前后,内存数据的变化,以及会用调试命令查看程序运算中寄存器中的值;4.去掉最大和最小的两个值,求出其余值的平均值,并
9、输出最大值,最小值和平均值;5.用压栈 PUSH和出栈 POP指令“先进后出”的特点,设计算法将平均值按位逐个输出(即输出 263);6.用移位指令将平均值以二进制串的形式输出。7.设计程序要有模块化的思想,用子程序实现不同的功能;所有数据输出前要用字符串的输出指令,进行输出提示(如:zui da zhi shi:300等),所有数据结果能清晰地显示在电脑屏幕上。二程序流程图 开始输出 QING SHU RU 5 GE SHU JU提示输入数据输入 5个待排序的数据输出 PAI XU HOU DE SHU JU SHUN XU SHI:CX=4(外循环)CX入栈指针指向第一个数比较相邻两数大小
10、,前一个数比后一个小?CX减 1,指针指向下一个数Y将这两个数交换位置NCX=0?N外循环 CX出桟并减 1YCX=0?N输出排序后的五个数据Y 输出ZUI DA ZHI SHI:输出第5个数即最大值输出ZUI XIAO ZHI SHI:输出第1个数即最小值输出PING JUN ZHI SHI:CX=3指针指向第二个数将其由ASCII 码转换成2进制数HE=0HE=HE+该二进制数CX=0?指针指向下一个数NHE 除以3得到平均值YCX 减1将平均值按位转换为 ASCII码逐个输出输出 PING JUN ZHI DE ER JIN ZHI CHUAN SHU CHU:设置 CX=16,SI=0
11、,数据段设置变量 STR1 DB 16 DUP(30H)将平均值(二进制)带进位左移一位CF=0?将 STR+SI对应的字符输出Y将 STR+SI加 1NSI 加 1CX 减 1CX=0?结束YN 三程序代码 练习一:DATA SEGMENT A DB 90 B DB-70 C DB 5 Y DW?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BL,A MOV CL,B ADD BL,CL ;A+B MOV AL,02H IMUL BL ;2*(A+B)MOV BX,AX MOV AL
12、,A MOV CL,C IMUL CL ;A*C IDIV CL ;A*C/5 ADD AX,BX MOV Y,AX MOV AH,4CH INT 21H CODE ENDS END START 练习二:DATA SEGMENT A DW 15786 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,A MOV CX,16 LEFT:TEST BX,8000H JNZ L1 ;当首位为 1,执行 L1 MOV DL,0 ;输出0 MOV AH,02H INT 21H SHL:SHL
13、BX,1 LOOP LEFT MOV AX,4CH INT 21H L1:MOV DL,1 ;输出1 MOV AH,02H INT 21H JMP SHL CODE ENDS END START 运行结果:练习三:DATA SEGMENT SUM DW?HEHE DB?,?,?,?,?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,HEHE MOV BL,0 MOV CX,5 LOOP1:MOV AH,01H INT 21H SUB AL,30H MOV SI,AL INC SI
14、LOOP LOOP1 MOV CX,5 MOV AX,0 SUB SI,5 LOOP2:ADD AL,SI AAA INC SI LOOP LOOP2 MOV BX,AX MOV SUM,AX MOV DL,BH ADD DL,30H MOV AH,2 INT 21H MOV DL,BL ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 运行结果:冒泡排序法程序:DATAS SEGMENT SHURU DB QING SHU RU 5 GE SHU JU,13,10,$SHU1 DB 4,?,3 DUP(?)S
15、HU2 DB 4,?,3 DUP(?)SHU3 DB 4,?,3 DUP(?)SHU4 DB 4,?,3 DUP(?)SHU5 DB 4,?,3 DUP(?)AVER DB 3 DUP(?)SHUCHU DB PAI XU HOU DE SHU JU SHUN XU SHI,:,$MAX DB ZUI DA ZHI SHI,:,$MIN DB ZUI XIAO ZHI SHI,:,$AVERAGE DB PING JUN ZHI SHI,:,$CHUSHU DB 100,10 HE DW?STR1 DB 16 DUP(30H)STR2 DB PING JUN ZHI DE ER JIN ZHI
16、 CHUAN SHU CHU,:,$DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX MOV ES,AX LEA DX,SHURU;显示 QING SHU RU 5 GE SHU JU:MOV AH,9 INT 21H MOV CX,5;输入五个数字 MOV SI,0 INPUT:LEA DX,SHU1+SI;输入要排序的原始数据 MOV AH,10 INT 21H MOV DL,10;输入后换行 MOV AH,2 INT 21H ADD SI,5;指针加 5,指向下一个变量 LOOP
17、INPUT CLD MOV CX,4;设定排序外循环次数 A:MOV BP,0 PUSH CX;外循环次数入栈 PX:PUSH CX MOV CX,3 LEA SI,SHU1+BP+2;逐位比较两个数大小 LEA DI,SHU1+BP+7 REPZ CMPSB JB B;如果小于直接比较下一个数,否则两个数对换位置 MOV CX,3 Jh:MOV AL,SHU1BP+2 XCHG AL,SHU1BP+7;将两个字节对换位置,循环 3 次即完成这两个数的交换 XCHG AL,SHU1BP+2 INC BP LOOP Jh SUB BP,3 B:ADD BP,5;指向后面两个数字 POP CX L
18、OOP PX POP CX;外循环次数出栈 LOOP A LEA DX,SHUCHU;输出字符串PAI XU HOU DE SHU JU SHUN XU SHI:MOV AH,9 INT 21H MOV CX,5 MOV SI,2 OUTPUT:PUSH CX;计数器入栈实现循环嵌套 MOV CX,3 L:MOV AL,SHU1+SI;输出排序后的 5 个数字 MOV DL,AL MOV AH,2 INT 21H INC SI LOOP L MOV DL,2CH MOV AH,2 INT 21H ADD SI,2 POP CX;计数器出栈 LOOP OUTPUT MOV DL,10 MOV A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川大学 微机 原理 实验 报告 研究生 考试 专业课
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内