微机原理实验报告.doc
《微机原理实验报告.doc》由会员分享,可在线阅读,更多相关《微机原理实验报告.doc(65页珍藏版)》请在三一文库上搜索。
1、微机原理实验报告 目录微机原理实验报告1目录2第一部32位微机原理实验4实验一 显示程序实验4一、实验步骤4二、实验程序5三、实验结果5实验二 数据传送实验6一、实验步骤6二、实验程序6三、实验结果7实验三 数码转换程序实验8一、将ASCII码表示的十进制数转换为二进制数8二、将十进制数的ASCII码转化为BCD码12三、将十六进制数的ASCII码转化为十进制数19四、BCD码转换为二进制码23实验四 运算类程序实验26一、实验思路26二、实验程序28三、实验结果29实验五 分支程序设计实验30一、实验步骤30二、实验程序33三、实验结果34实验六 循环程序设计实验35一、实验步骤35二、实验
2、程序37三、实验结果38汇编语言部分实验总结39第二部分32位微机接口技术实验40实验一 8259中断控制器应用实验40一、实验内容40二、实验步骤40三、实验思考题及所填空缺的数据的分析47四、实验结果48实验二 8255并口控制器应用实验49一、实验内容49二,实验步骤50三、实验思考题及所填空缺的数据的分析53四、实验结果54实验三 8254定时/计数器应用实验56一、实验内容56二、实验步骤56三、实验思考题及所填空缺的数据的分析60四、实验结果62接口部分实验总结63第一部 32位微机原理实验实验一 显示程序实验一、 实验步骤1. 运行Tddebug软件,选择Edit菜单,根据实验内
3、容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容; 5. 更改数据区中的数据,考察程序的正确性。二、 实验程序 实验程序如下: DATA SEGMENT MES DB Show a as hex:, 0AH,0DH,$ SD DB a DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA
4、START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET MES ;显示提示信息 MOV AH, 09H INT 21H MOV DI, OFFSET SD MOV AL, DS:DI AND AL, 0F0H ;取高4位 SHR AL,4 CMP AL, 0AH ;是否是A以上的数 JB C2 ADD AL, 07H C2: ADD AL, 30H MOV DL, AL ;显示字符 MOV AH, 02H INT 21H MOV AL, DS:DI AND AL, 0FH ;取低4位 CMP AL, 0AH JB C3 ADD AL, 07H C3: ADD
5、 AL, 30H MOV DL, AL ;显示字符 MOV AH, 02H INT 21H MOV AX, 4C00H ;返回DOS INT 21H CODE ENDS END START三、实验结果程序运行结果为:本程序既是把字符“a”转化为其ASCII码并以10进制数的形式显示在屏幕上。实验二 数据传送实验一、实验步骤1. 运行Tddebug软件,选择Edit菜单; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执
6、行后,各寄存器及数据区的内容; 5. 更改数据区中的数据,考察程序的正确性。二、实验程序 DDATA SEGMENT ;定义源数据段 MSR DB HELLO,WORLD!$ LEN EQU $- MSR DDATA ENDS EXDA SEGMENT ;定义附加数据段 MSD DB LEN DUP(?) EXDA ENDS MYSTACK SEGMENT STACK ;定义堆栈段 DW 20 DUP(?) MYSTACK ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE, DS:DDATA, ES:EXDA START: MOV AX, DDATA MOV DS
7、, AX ;装载数据段寄存器 MOV AX, EXDA MOV ES,AX ;装载附加数据段寄存器 MOV SI, OFFSET MSR ;设置SI MOV DI, OFFSET MSD ;设置DI MOV CX, LEN NEXT: MOV AL, SI ;开始传输数据 MOV ES:DI, AL INC SI INC DI DEC CX JNZ NEXT PUSH ES POP DS ;将附加段寄存器的段值赋给数据段寄存器 MOV DX, OFFSET MSD MOV AH, 9 INT 21H MOV AX, 4C00H ;利用DOS功能调用返回DOS状态 INT 21H CODE EN
8、DS END START三、实验结果程序运行结果为:本程序将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。实验三 数码转换程序实验一、将ASCII码表示的十进制数转换为二进制数(1)实验思路十进制数可以表示为:Dn10n+Dn-110n-1+D0100 =Di10i 其中Di代表十进制数1、2、39、0。 上式可以转换为: Di10i=(Dn10+Dn-1)10)+Dn-2)10+D1)10+D0 由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。根据上面的原理,采取十进制数外部输入的方式储存在缓冲
9、区中,调用缓冲区中的储存数将之转化为二进制数显示在屏幕上,转换过程的流程图下图所示。CALL INPUT显示输入提示,等待从键盘输入十进制数字符串,并将之储存在内存中CALL DISPP回车换行CALL CHANGE将数据串转化为相应的数值存放在BX中CALL LIST_BX将BX中的内容以二进制的形式显示在屏幕上返回DOS显示的二进制位数为CX=16将BX左移一位将BX的最低位值赋给DL将DL中的数值转化为其ASCII码将DL中的ASCII码送往屏幕显示RET返回LIST_BX子程序流程图 (2)实验程序 DATA SEGMENT STRING DB Input:,$ NUM DB 6,?,
10、6 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX CALL INPUT ;调用显示输入子程 CALL DISPP ;回车换行 CALL CHANGE ;调用将输入字符串转化为相应的十进制数值子程 CALL LIST_BX ; 调用将十进制数转化为二进制数并输出子程 MOV AH,4CH INT 21H INPUT PROC LEA DX,STRING MOV AH,09H INT 21H LEA DX,NUM MOV AH,0AH INT 21H RET INPUT ENDP
11、CHANGE PROC LEA SI,NUM+2 MOV CL,NUM+1 MOV CH,0 MOV AX,0 MOV DI,10 NEXT: MUL DI MOV BH,0 MOV BL,SI AND BL,0FH ADD AX,BX INC SI LOOP NEXT ZERO: MOV BX,AX RET CHANGE ENDP LIST_BX PROC MOV CX,16 ;规定输出二进制位数为16位 ROTATE: ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H MOV AH,2H INT 21H LOOP ROTATE RET LIST_BX END
12、P DISPP PROC MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H RET DISPP ENDP CODE ENDS END START(3)实验结果当输入为五位十进制数00012时,输出结果如下:二、将十进制数的ASCII码转化为BCD码(1)实验思路十进制数与BCD码之间的转化只是将每一位的十进制数转化为四位的二进制数,按位显示即可,而在内存中的十进制数是以其ASCII码的形式存储,要将内存中的十进制数转化为BCD码要先将每一位的ASCII重新转化为十进制数,再转化为BCD码显示。本实验要求输入不是十进制数的AS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 报告
链接地址:https://www.31doc.com/p-3268075.html