微机实验报告手册.docx
《微机实验报告手册.docx》由会员分享,可在线阅读,更多相关《微机实验报告手册.docx(15页珍藏版)》请在冰豆网上搜索。
湖北大学
计算机与信息工程学院
2016——2017学年度
第一学期
学生实验报告册
学生实验守则
1、学生在规定的时间内进行实验,不得无故缺席或迟到。
2、学生在每次实验前对排定要做的实验应进行预习,并按要求作好预习报告。
3、每次实验前,必须交上次实验报告和本次实验预习报告,并经指导教师提问、检查同意后,才可进行本次实验。
4、学生进入实验室指定位置后,首先根据仪器清单核对自己使用的仪器是否有缺少或损坏,发现问题及时向指导教师报告,严禁擅自动用别组仪器。
5、实验时必须有实事求是、严肃认真的科学态度,严格遵守仪器操作规程和注意事项。
6、实验完毕应将实验数据交给指导教师检查,合格后,整理复原好仪器设备,方可离开实验室。
7、保持实验室肃静和整洁,不得大声喧哗,乱丢垃圾和吃东西。
8、学生在实验过程中,由于不遵守操作规程或未经许可,擅自进行实验而造成事故、损坏仪器设备,应及时报告,并填写损坏清单,按院有关规定进行赔偿。
实验报告单
实验名称:
顺序程序设计
同组人实验室时间
一、实验目的:
1.掌握顺序程序设计与调试方法
2.编程实现如下功能:
若有一个数为X=10,利用加法指令和移位指令完成:
(1)X*2
(2)X*4
(3)X*10
二、实验内容:
利用加法指令和移位指令来完成一个数的乘法
三、实验代码:
MOVAL,10
SHLAL,1;左移一位相当于*2
MOVAH,AL;暂存20
SHLAL,1;再左移一位相当于*4
SHLAL,1;再左移一位相当于*8
ADDAH,AL;乘2+乘8后放在AH里
四、实验结果:
AH里的数为20
五、实验小结:
这个实验很简单,只是用了移位操作就完成了对一个数的乘法,没难度
———————————————————————————————
评语:
成绩:
批阅教师:
日期
实验报告单
实验名称:
分支程序设计1
同组人实验室时间
一、实验目的:
掌握分支程序设计与调试方法
二、实验内容:
编程实现如下功能:
设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小排列的程序。
三、实验代码:
BUFDB1,2,3;此处输入数据段代码
MOVSI,OFFSETBUF
MOVAL,[SI]
MOVBL,[SI+1]
MOVCL,[SI+2]
CMPAL,BL
JAENEXT1
XCHGAL,BL
NEXT1:
CMPAL,CL
JAENEXT2
XCHGAL,CL
NEXT2:
CMPBL,CL
JAENEXT3
XCHGBL,CL
NEXT3:
MOV[SI],AL
MOV[SI+1],BL
MOV[SI+2],CL
四、实验结果:
数据段中的1,2,3变成了3,2,1。
五、实验小结:
通过这次实验,我基本了解了分支程序设计的基本过程与原理,以及宏定义与宏调用的基本方法,更进一步加强了对调试方式的掌握。
并且,在这次实验中,打字速度与准确度方面相对于上次实验有了较好的进步。
———————————————————————————————
评语:
成绩:
批阅教师:
日期
实验报告单
实验名称:
循环程序设计1
同组人实验室时间
一、实验目的:
掌握循环程序设计与调试方法
二、实验内容:
编程实现如下功能:
ARRAY数组中有20个有符号字数据,编写程序将ARRAY数据中的数据按正、负分别存入PLUS和NEGA中,并统计正数和负数的个数分别存在MAX和MIN中。
三、实验代码:
DATASSEGMENT
COUNTEQU20
ARRAYDW-1,-2,-3,-4,5,-6,-7,-8,-9,-10,-1,-2,-3,-4,5,-6,-7,-8,-9,-10;存放数组
COUNT1DB0;存放正数的个数
PLUSDW20DUP(?
);存放正数
COUNT2DB0;存放负数的个数
NEGADW20DUP(?
);存放负数
MAXDB0DH,0AH,'Thepositivenumberis:
','$';正数的个数
MINDB0DH,0AH,'Thenegativenumberis:
','$';负数的个数
CRLFDB0DH,0AH,'$'
DATASENDS
START:
SUBAX,AX
PUSHAX
MOVAX,DATAS
MOVDS,AX
MOVCX,COUNT
LEABX,ARRAY
LEASI,PLUS
LEADI,NEGA
BEGIN1:
MOVAX,[BX]
CMPAX,0;是负数吗?
JSFUSHU
MOV[SI],AX;是正数,存入正数数组
INCCOUNT1;正数个数+1
ADDSI,2
JMPSHORTNEXT
FUSHU:
MOV[DI],AX;是负数,存入负数数组
INCCOUNT2;负数个数+1
ADDDI,2
NEXT:
ADDBX,2
LOOPBEGIN1
LEADX,MAX;显示正数个数
MOVAL,COUNT1
CALLDISPLAY;调显示子程序
LEADX,MIN;显示负数个数
MOVAL,COUNT2
CALLDISPLAY;调显示子程序
MOVAH,4CH
INT21H
DISPLAYPROCNEAR;显示子程序
MOVAH,9;显示一个字符串的DOS调用
INT21H
AAM;将(AL)中的二进制数转换为二个非压缩BCD码
PUSHAX
ADDAH,'0';变为0~9的ASSCII码
MOVDL,AH
MOVAH,2;显示一个字符的DOS调用
INT21H
POPAX
ADDAL,'0';变为0~9的ASSCII码
MOVDL,AL
MOVAH,2;显示一个字符的DOS调用
INT21H
LEADX,CRLF;显示回车换行
MOVAH,9;显示一个字符的DOS调用
INT21H
RET
DISPLAYENDP;显示子程序结束
CODESENDS
ENDSTART
四、实验结果:
输入-1,-2,-3,-4,-5,-6,-7,-8,-9,10,11,12,13,14,15,16,17,18,
正数:
9负数:
9
显示正确。
五、实验小结:
由这次实验,基本上掌握了循环程序设计以及其调试方法,对循环结构有了清晰的认识,读懂了程序,并且弥补了一些没有注意到的细节,比如取某段数据首地址,偏移量等语句的使用,通过练习操作,相信会使我对微机及汇编只是的学习大有帮助。
———————————————————————————————
评语:
成绩:
批阅教师:
日期
实验报告单
实验名称:
I/O地址译码1
同组人实验室时间
一、实验目的:
掌握I/O地址译码电路的工作原理。
二、实验内容:
实验电路如图
(1)所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上I/O地址输出端引出,每个输出端包含8个地址,Y0:
280H~287H,Y1:
288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
例如:
执行下面两条指令
Y4输出一个负脉冲,执行下面两条指令
MOVDX,2A0H
OUTDX,AL(或INAL,DX)
Y5输出一个负脉冲。
MOVDX,2A8H
OUTDX,AL(或INAL,DX)
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、实验代码:
L1:
MOVDX,2A0H //选通74LS138的11口
OUTDX,AL //使端口A输出,给D触发器一个时钟信号
LOOP$ //延时
LOOP$ //延时
MOVDX,2A8H //选用74LS138的10口
OUTDX,AL //使D触发器清零
LOOP$ //延时
LOOP$ //延时
MOVAH,11 //十一号功能调用
INT21H //如果有键按下
INCAL //AL加一,退出循环
JNZL1 //如果没键按下,则继续循环
四、实验结果:
当实验电路中的D触发器CLK端输入脉冲时,上升沿使Q端输入高电平,则对应的小灯点亮;
五、实验小结:
第一次实验比较简单、主要是学会了通过程序控制芯片及其端口的选通,其方法是根据芯片外围搭建的电路使DX进行写或读的操作、例如本实验里,要想选通74LS138的11口操作8255的端口A,则需要使A9A8A7A6A5A4A3A2A1A0=1010100000=2A0H,同理操作10口时,则使DX=2A8H,再加上延时DELAY功能,即可使LED灯循环亮灭。
但是如果不给芯片断电,则L