微机原理实验.docx
- 文档编号:5462352
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:39
- 大小:1,000.47KB
微机原理实验.docx
《微机原理实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验.docx(39页珍藏版)》请在冰豆网上搜索。
微机原理实验
软件部分
实验1两个多位十进制数相加的实验
实验4统计学生成绩实验
实验6将ASCII码转换为二进制数
实验7将二进制数转换为ASCII码
实验9将键盘输入的大小写字母相互进行转换
实验10求X2的实验
硬件部分
实验七8259单级中断控制器实验
实验1两个多位十进制数相加的实验
一、实验目的
1、熟悉DOS系统命令;学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和执行汇编语言程序的过程。
3、初步联系用DEBUG调试程序运行8086汇编语言程序的过程。
二、实验内容
将两个多位十进制数相加,要求加数和被加数均以BCD码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、对照程序框图完成下列程序
NY
DATASEGMENT
DATA1DB03H09H01H07H04H
DATA2DB06H05H00H08H02H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA2
START:
MOVAX,DATA
MOVDS,AX
MOVSI,OFFSETDATA1
MOVDI,OFFSETDATA2
MOVCX,05
CLC
AD:
MOVAL,[SI]
MOVBL,[DI]
ADCAL,BL
AAA
MOV[SI],AL
INCSI
INCDI
LOOPAD
HLT
CODEENDS
ENDSTART
四、实验结果
1、输入五次t后得到:
初始化ds段后,做好做加法前准备
2、做完第一次加法后得到结果:
09h
si中
3、全部数加完后得到所有结果存入ds段中的si偏移地址中
实验4统计学生成绩实验
一、实验目的
通过对学生成绩统计程序的编写,掌握多重分支程序的基本设计方法。
二、实验内容
将十个学生的成绩按不同分数档进行统计,并将结果存入相应单元中。
三、参考程序框完成下列程序
Y
N
Y
N
Y
N
Y
N
N
Y
NY
DATASEGMENT
GRADEDB56,69,84,83,75,87,98,64,100,71
S5DB0
S6DB0
S7DB0
S8DB0
S9DB0
S10DB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,10
MOVSI,OFFSETGRADE
COMP:
MOVAL,[SI]
CMPAL,60
JLFIVE
CMPAL,70
JLSIX
CMPAL,80
JLSEVEN
CMPAL,90
JLEIGHT
CMPAL,100
JLNINE
INCS10
JMPADDR
NINE:
INCS9
JMPADDR
EIGHT:
INCS8
JMPADDR
SEVEN:
INCS7
JMPADDR
SIX:
INCS6
JMPADDR
FIVE:
INCS5
ADDR:
INCSI
LOOPCOMP
HLT
CODEENDS
ENDSTART
四、实验结果
1、输入四次t后,完成ds段的装载
2、输入五次t后,输入dds:
0查看寄存器内容,完成第一个成绩的统计。
3、进行若干次t后完成所有成绩的统计。
输入dds:
0查看寄存器内容
实验6将ASCII码转换为二进制数
一、实验目的
掌握码制转换的基本原理及相应的转换程序的编写方法。
二、实验内容
将ASCII数据转换为二进制数据;要求将内存中以ASCII码表示的十进制整数(范围0--32767),转换为二进制格式存储。
三、
参考框图完成下列程序
N
Y
DATASEGMENT
DATA1DB33H,39H,36H,34H,31H
GESDB5
RESULTDW(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,0
MOVSI,OFFSETDATA1
MOVBL,GES
ASC:
MOVDX,10
MULDX
MOVDH,0
MOVDL,[SI]
ANDDL,0FH
ADDAX,DX
INCSI
DECBL
JNZASC
MOVRESULT,AX
HLT
CODEENDS
ENDSTART
四、实验结果
1、输入5次t后,初始化完ds段、BL、DX,查看ds段寄存器,得到如下结果
2、输入若干次t后做完第一个ASCII码字符转换后,查看ds段寄存器,得到如下结果:
注意看此时的AX寄存器值(AX=0003),表明ASCII第一个字符已分离出来。
3、输入若干次t后完成所有循环,输入dds:
0查看ds段寄存器,得到如下结果:
转换完的二进制数为:
9AD9,变换为十进制后为39641,与ASCII码表示的数相同,则转换正确。
实验7将二进制数转换为ASCII码
一、实验目的
进一步掌握码制转换的基本原理及相应的转换程序的编写方法。
二、实验内容
将内存变量中的16位二进制数,转换成相应的ASCII码,存入相应的串变量中。
三、参考框图完成程序
Y
N
DATASEGMENT
RESULTDB10DUP(?
)
DATA1DW0F7CH
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,DATA1
MOVDL,OFFSETRESULT
MOVSI,10
DDD:
MOVDX,0
DIVSI
ADDDX,30H
MOV[DI],DL
INCDI
CMPAX,0
JNZDDD
HLT
CODEENDS
ENDSTART
四、实验结果
1、输入3次t后,初始化完ds段、AX,查看ds段寄存器,得到如下结果
2、输入10次t后,转换成功第一个ASCII字符后,得到如下结果:
3、输入若干次t后,做完所有循环,得到最终结果如下:
经过转换后的ASCII码为34H,36H,39H,33H,经验证结果正确。
实验9将键盘输入的大小写字母相互进行转换
一、实验目的
1、了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。
2、掌握DOS功能调用的方法。
二、实验内容
接收键盘字符,并将其中的大小写字母相互转换。
然后将转换结果显示在屏幕上。
三、参考程序框图完成程序。
CRLFMACRO
MOVDL,0DH
MOVAH,02H
INT21H
MOVDL,0AH
MOVAH,02H
INT21H
ENDM
DATASEGMENT
DATABUFDB30DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETDATABUF
MOVSI,0H
CHR:
MOVAH,01H
INT21H
CMPAL,0DH
JZDISP
CMPAL,'Z'
JGSML
ADDAL,20H
MOV[BX+SI],AL
INCSI
JMPCHR
SML:
SUBAL,20H
MOV[BX+SI],AL
INCSI
JMPCHR
DISP:
CRLF
MOVCX,SI
DISP1:
MOVDL,[BX]
INCBX
MOVAH,02H
INT21H
LOOPDISP1
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
四、实验结果
1、输入5次t后,初始化完ds段,得到如下数据(预留30个字节空间)如下图所示:
2、输入g后,输入字符串‘dhiengDGHDKSG’,得到转换后的字符串,如下图所示:
由此可以看出,输入的大小写正常转换,则程序正确能实现转换功能。
实验10求X2的实验
一、实验目的
1、掌握表处理程序设计的基本方法。
2、掌握XLAT语句的用法。
3、掌握DOS功能调用的方法。
二、实验内容
1、编写程序,用查表法求一给定值X的平方,X的取值范围为0~9;
2、要求X从键盘输入,当输入值不为0~9时给出提示信息,并重新输入,按“*”键退出。
三、程序设计部分
程序代码:
CRLFMACRO//定义回车、换行和显示字符
MOVDL,0DH
MOVAH,02H
INT21H
MOVDL,0AH
MOVAH,02H
INT21H
ENDM
DATASEGMENT//定义数据段内容
DATA1DB0,1,4,9,16,25,36,49,64,81//表内容
DATA2DB30DUP(?
)//存放从表中取出的数据
RESULTDB10DUP(?
)//存放转换后的ASCII码数据
DATA3DB'error!
$'//要显示的错误信息字符
DATAENDS
CODESEGMENT//定义代码段内容
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETDATA1
AGAIN:
MOVAH,1//接收输入字符,并存入AL中
INT21H
CMPAL,'*'//判断是否为“*”字符
JZEXIT//若是“*”则退出DOS
CMPAL,30H//判断是否小于0
JBERROR//若是则跳至错误信息
CMPAL,39H//判断是否大于9
JAERROR//若是则跳至错误信息
SUBAL,30H
XLAT//查表,将对应内容存入AL中
MOVDATA2,AL//将AL中的数据存入DATA2中
JMPDISP//跳至显示字符
DISP:
CRLF//显示查出的内容
CALLDDD//调用转换ASCII的子程序
JMPEXIT
ERROR:
CRLF//显示错误信息
MOVDX,OFFSETDATA3
MOVAH,9
INT21H
JMPAGAIN
DDDPROCNEAR//转换ASCII码的子程序
MOVAX,DATA2
MOVDI,OFFSETRESULT
MOVSI,10
ZHU:
MOVDX,0//转换为ASCII码输出
DIVSI
ADDDX,30H
MOV[DI],DL
INCDI
CMPAX,0
JNZZHU
MOVDI,OFFSETRESULT
MOVDX,[DI+1]
MOVAH,02H
INT21H
MOVDX,[DI]
MOVAH,02H
INT21H
RET
DDDENDP
EXIT:
MOVAH,4CH//退出DOS
INT21H
CODEENDS
ENDSTART
五、实验结果
1、运行程序,输入g后,输入6,则得到如下结果:
从上图可看出,结果正确
3、输入g后,输入‘d’,则得到如下结果:
从结果看出,对输入错误的信息处理能正确,直到输入正确数字为至
3、输入g后,输入‘*’后,得到如下结果:
从结果可以看出,当输入“*”后,直接退出DOS,与要求相符。
实验七8259单级中断控制器实验
一、实验目的
(1)掌握8259中断控制器的接口方法。
(2)掌握8259中断控制器的应用编程。
二、实验内容
编制程序,利用8259芯片的IR7作为中断源,产生单一中断,系统显示中断号“7”。
三、程序框图
主程序IR7中断服务程序
四、实验电路
五、编程提示
(1)8259芯片介绍
中断控制器8259A是专为控制优先级中断而设计的芯片。
它将中断源优先级排队,辨别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。
中断序号
0
1
2
3
4
5
6
7
变量地址
20H
~23H
24H
~27H
28H
~2BH
2CH
~2FH
30H
~33H
34H
~37H
38H
~3BH
3CH
~3FH
(2)本实验中使用7号中断源IR7,""插孔和IR7相连,中断方式为边沿触发方式,每按二次AN按钮产生一次中断,编写程序,使系统每次响应外部中断IR7时,显示1个字符“7”,满7次后显示“P.”继续等待中断。
六、实验步骤
(1)按实验电路图连接线路:
①“”插扎和82597号中断IR7插孔相连,“”端初始为低电平
②8259的CS端连138译码器的FFE0孔
(2)运行实验程序
在系统处于命令提示符“P.”状态下,输入3400,按EXEC键,系统显示“P.”
(3)按AN按钮,每按2次,LED数码管从最高位开始依次显示1个“7”,按满14次后显示“P.”继续等待中断。
(4)按复位键RESET返回“P.”或按暂停键STOP+MON键返回“P.”。
实验一8255A并行口实验
(一)LED显示
一、实验目的
(1)掌握8255A的工作原理及使用方法。
(2)通过8255实验,掌握I/O设备与CUP接口的基本原理和编程方法。
二、实验内容
用8255并行口控制LED发光二极管的亮灭,使12个LED循环一次点亮。
三、实验电路
四、编程提示
8255A可编程接口芯片具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0:
基本输入/输出方式
方式1:
选通输入/输出方式
方式2:
双向选通工作方式
设置8255A端口A、B工作在方式0并处于输出方式,由于LED二极管共阳极连接,故8255端口输出为低电平即0时,LED发光二极管点亮。
五、实验步骤
(1)按实验电路图连接线路:
8255A芯片A口的PA0—PA7依次L1—L8。
8255A芯片B口的PB0—PB3依次接L9—L12。
(2)编写实验程序运行。
实验框图如下:
程序如下:
PAEQU0FFD8H;设置A口地址
PBEQU0FFD9H;设置B口地址
PCEQU0FFDAH;设置C口地址
PCTLEQU0FFDBH;设置控制口地址
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,PCTL;初始化8255,设置工作方式
MOVAL,80H;工作在方式0,为输出
OUTDX,AL
MOVAL,73H对A口设置数据
DIS1:
MOVDX,PA;让A口输出,使LED灯1—8按设定顺序亮灭
OUTDX,AL
INCDX;使DX指向B口地址
DIS2:
MOVAL,05H;让B口输出,使LED灯9—12按设定顺序亮灭
OUTDX,AL
MOVCX,0FFFH;设置延时时间
Loop$
JMPDIS1;调至DIS1循环输出
CODEENDS
ENDSTART
实验三8255A并行口实验(三)控制交通灯
一、实验目的
掌握通过8255A并行口传输数据的方法,以控制发光二接管的亮与灭。
二、实验内容
用8255作输出口,控制十二个发光二极管然灭,模拟交通灯管理。
三、实验电路
四、编程提示
(1)通过8255A控制发光二极管PB3、PB0、PA5、PA2对应黄灯,PB1、PA6PA3、PA0对应红灯,PB2、PA7、PA4、PA1对应绿灯、以模拟交通灯的管理。
(2)要完成本实验,必须先了解交通灯的亮灭规律,设有一个十字路口1、3为南北方向,2、4为东西方向。
初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延时一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁,闪烁若干次以后,1、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,在切换到1、3路口方向,之后,重复上述过程。
(3)程序设定好8255A的工作模式,及三个端口均工作在方式0,并处于输出状态。
(4)各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。
五、实验步骤
(1)按实验电路图连接线路
8255A:
PA0-L15PA1-L14PA2-L13PA3-L11
PA4-L10PA5-L9PA6-L7PA7-L6
PB0-L5PB1-L3PB2-L2PB3-L1
(2)编写并运行试验程序
系统显示执行符同时L1-L12发光二极管模拟交通灯显示。
(3)按复位键RESET返回“P.”或按暂停键STOP+MON键返回“P.”。
实验框图如下:
程序如下:
PAEQU0FFD8H;设置A口地址
PBEQU0FFD9H;设置B口地址
PCEQU0FFDAH;设置C口地址
PCTLEQU0FFDBH;设置控制口地址
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H;初始化,定义8255A的工作方式
MOVDX,PCTL
OUTDX,AL;初始化LED灯,使红灯全亮
MOVDX,PA
MOVAL,0B6H
OUTDX,AL
INCDX
MOVAL,0DH
OUTDX,AL
CALLDELAY1;调用延时1子程序,实验延时
P30:
MOVAL,75H;点亮1、3路口的绿灯和2、4的红灯
MOVDX,PA
OUTDX,AL
INCDX
MOVAL,0DH
OUTDX,AL
CALLDELAY1;延时1
CALLDELAY1
MOVCX,08H
P31:
MOVDX,PA;点亮1、3路口的黄灯和1、4路口的黄灯
MOVAL,0F3H
OUTDX,AL
INCDX
MOVAL,0CH
OUTDX,AL
CALLDELAY2
MOVDX,PA
MOVAL,0F7H
OUTDX,AL
INCDX
MOVAL,0DH
OUTDX,AL
CALLDELAY2
LOOPP31
MOVDX,PA
MOVAL,0AEH
OUTDX,AL
INCDX
MOVAL,0BH
OUTDX,AL
CALLDELAY1
CALLDELAY1
MOVCX,08H
P32:
MOVDX,PA;点亮1、3路口的红灯和2、4的绿灯
MOVAL,9EH
OUTDX,AL
INCDX
MOVAL,07H
OUTDX,AL
CALLDELAY2
MOVDX,PA
MOVAL,0BEH
OUTDX,AL
INCDX
MOVAL,0FH
OUTDX,AL
CALLDELAY2
LOOPP32
JMPP30
DELAY1PROCNEAR;延时1子程序,堆栈实现
PUSHAX
PUSHCX
MOVCX,0030H
DELY2:
CALLDELAY2
LOOPDELY2
POPCX
POPAX
RET
DELAY1ENDP
DELAY2PROCNEAR;延时2子程序,堆栈实现
PUSHCX
MOVCX,8000H
LOOP$
POPCX
RET
DELAY2ENDP
CODEENDS
ENDSTART
实验八定时/计数器8253方波
一、实验目的
(1)学会8253芯片和微机接口原理和方法。
(2)掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容
8253的0通道工作在方式3,产生方波。
三、程序框图
四.实验电路
五、编程提示
8253芯片介绍
8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,
用+5V单电源供电。
8253的功能用途:
(1)延时中断 (5)实时时钟
(2)可编程频率发生器(6)数字单稳
(3)事件计数器 (7)复杂的电机控制器
(4)二进制倍频器
8253的六种工作方式:
(1)方式0:
计数结束中断 (4)方式3:
方波频率发生器
(2)方式1:
可编程频率发生 (5)方式4:
软件触发的选通信号
(3)方式2:
频率发生器 (6)方式5:
硬件触发的选通信号
8253的0号通道工作在方式3,产生方波。
六、实验步骤
(1)按实验电路图连接线路:
①8253的GATE0接+5V。
②8253的CLK0插孔接分频器74LS393(左上方)的T2插孔,分频器的频率源为:
4.9152MHz(已连好)。
③8253的CS孔与138译码器的FFE0孔相连。
(2)运行实验程序
在系统处于"P."状态下,输入3490,按EXEC键
(3)用示波器测量8253的OUT0输出插孔有方波产生。
(4)按复位键RESET返回“P.”或按暂停键STOP+MON键返回“P.”。
实验程序如下:
PA0EQU0FFE0H;设置0口地址
PA1EQU0FFE1H;设置1口地址
PA2EQU0FFE2H;设置2口地址
PA3EQU0FFE3H;设置3口地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验