微机原理与接口技术实验指导资料.docx
《微机原理与接口技术实验指导资料.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验指导资料.docx(53页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术实验指导资料
《微机原理及接口技术》
实验指导书
杨霞周林英编
长安大学电子与控制工程学院
2009年9月
前言
本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。
完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。
手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。
主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。
所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。
学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。
实验一清零程序
一、实验目的
掌握8088汇编语言程序设计和调试方法。
二、实验设备
STAR系列实验仪一套、PC机一台。
三、实验内容
把RAM区内4000H-40FFH单元的内容清零。
四、程序框图
五、源程序清单
.MODELTINY
.STACK100
.DATA
.CODE
ORG0100H
START:
MOVBX,4000H
MOVAX,0000H
MOVCX,80H
L1:
MOV[BX],AX
INCBX
INCBX
LOOPL1
JMP$
ENDSTART
六、实验步骤
手动修改RAM区内4000H-40FFH的内容,连续或单步方式运行程序,检查4000-40FFH内容执行程序前后的变化。
七、思考
1、把4000H-40FFH中的内容改成FF,如何修改程序。
2、把4000H-40FFH中的内容改成00~FF,如何修改程序。
实验二拆字程序
一、实验目的
掌握汇编语言设计和调试方法。
二、实验设备
STAR系列实验仪一套、PC机一台。
三、实验内容
把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H的高位清零,一般本程序用于把数据送显示缓冲区时用。
四、程序框图
五、源程序
.MODELTINY
.STACK
.DATA
.CODE
START:
MOVBX,4000H
MOVAL,[BX]
MOVAH,AL
MOVCL,4
SHRAH,CL
INCBX
MOV[BX],AH
ANDAL,0FH
INCBX
MOV[BX],AL
JMP$
六、实验步骤
手动修改4000H的内容,用连续或单步方式运行程序,检查4000H-4002H中内容变化情况。
七、思考
1.如何用断点方式调试本程序。
2.把4000H、4001H单元低位的内容合成一字送4002H单元。
实验三数据区移动
一、实验目的
掌握RAM中的数据操作。
二、实验设备
STAR系列实验仪一套、PC机一台。
三、实验内容
把4100H源RAM区首址内的16字节数据传送到4200H目标RAM区。
四、设计思想
程序要求把内存中某一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。
源数据块和目的数据块在存储器中可能有三种情况,如下图:
对于两个数据块分离的情况,如图(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。
但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。
可以得出以下结论:
当源数据首址>目的块首址时,从数据块首址开始传送数据。
当源数据块首址<目的块首址时,从数据块末地址开始传送数据。
五、程序框图
六、源程序清单
.MODELTINY
.STACK
.DATA
.CODE
ORG0100H
START0:
MOVCX,0010H
MOVSI,4100H
MOVDI,4200H
CMPSI,DI
JAA42
ADDSI,CX
ADDDI,CX
A41:
DECSI
DECDI
MOVAL,[SI]
MOV[DI],AL
LOOPA41
JMP$
A42:
MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPA42
JMP$
ENDSTART0
七、实验步骤
调试运行3060程序,检查4100-410FH中内容是否和4200-420FH中内容完全一致。
八、思考
1.把4200H源RAM区首址内的16字节数据传送到4100H目标RAM区。
2.把4100H源RAM区首址内的16字节数据传送到410AH目标RAM区。
实验四多分支程序设计
一、实验目的
掌握汇编语言的编程,熟悉程序散转的设计方法。
二、实验设备
STAR系列实验仪一套、PC机一台。
三、实验内容
编写程序,根据接收到的键值,作不同的处理。
四、设计思想
多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存器或某单元的内容进行程序转移。
在设计多分支转移程序时,如果分支太多,则平均转移速度太慢,本实验采用转移地址表实现多分支转移,可以提高平均转移速度。
五、程序框图
六、实验步骤
1、连线说明:
E5区:
CLK
——
B2区:
2M
E5区:
CS
——
A3区:
CS5
E5区:
A0
——
A3区:
A0
E5区:
A、B、C、D
——
G5区:
A、B、C、D
2、在G5区的键盘上输入1位数
3、使用各种手段调试程序
3、结果显示在G5区的数码管上
七、源程序清单
;调用GetKeyB返回键值,根据键值执行相应的程序
.MODEL
TINY
EXTRN
Display8:
NEAR,GetKeyB:
NEAR
.STACK
100
.DATA
BUFFER
DB
8DUP(?
)
.CODE
START:
MOV
AX,@DATA
MOV
DS,AX
MOV
ES,AX
NOP
START1:
CALL
GetKeyB
;键值存放在AL中
CMP
AL,8
JB
START2
XOR
AL,AL
;大于7,作0处理
START2:
XOR
AH,AH
MOV
BX,AX
SHL
BX,1
LEA
DI,Table_1
JMP
CS:
[DI][BX]
Table_1:
DW
Key0,Key1,Key2,Key3,Key4,Key5,Key6,Key7
Key0:
MOV
AL,1
JMP
Key
Key1:
MOV
AL,2
JMP
Key
Key2:
MOV
AL,3
JMP
Key
Key3:
MOV
AL,4
JMP
Key
Key4:
MOVAL,5
JMP
Key
Key5:
MOV
AL,6
JMP
Key
Key6:
MOV
AL,7
JMP
Key
Key7:
MOV
AL,8
JMP
Key
Key:
MOV
CX,8
LEA
DI,BUFFER
REP
STOSB
LEA
SI,BUFFER
CALL
Display8
MOV
CX,60000
LOOP
$
;延时
JMP
START1
END
START
实验五多字节减法运算
一、实验目的
掌握BCD码、补码,熟悉多文件、多模块汇编语言程序设计的方法。
二、实验设备
STAR系列实验仪一套、PC机一台。
三、实验内容
从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。
四、程序框图
五、实验步骤
1、连线说明:
E5区:
CLK
——
B2区:
2M
E5区:
CS
——
A3区:
CS5
E5区:
A0
——
A3区:
A0
E5区:
A、B、C、D
——
G5区:
A、B、C、D
2、在G5区的键盘上输入4位被减数、减数
3、结果显示在G5区的数码管上
六、源程序清单
.MODELTINY
.STACK100
.DATA
ResultDB5DUP(?
)
minuendDW88H,44H,66H,00H,99H;被减数
N1=$-minuend;被减数长度
subtrahendDW22H,55H,88H;减数
N2=$-subtrahend;减数长度
.CODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
PUSHDS
XORAX,AX
PUSHAX
STD;清方向标志
;显示被减数
;LEASI,minuend
;ADDSI,N1-1
;MOVCX,N1
;CALLEX21
;CALLPP2
;;显示减数
;LEASI,subtrahend
;ADDSI,N2-1
;MOVCX,N2
;CALLEX21
;CALLPP2
;计算结果
CALLEX22
;显示结果
LEASI,minuend
ADDSI,N1-1
MOVCX,N1
CALLEX21
jmp$
;模块名称:
EX21
;功能:
显示运算结果
;入口参数:
;出口参数:
EX21PROCnear
PUSHAX
PUSHDX
F:
LODSB
LEABX,Result
ADDBX,CX
MOV[BX],AL
;用十六进制数显示一个字节的内容
;MOVDL,'';显示一个空格符
;MOVAH,2;
;INT21H;
LOOPF
POPDX
POPAX
RET
EX21ENDP
;模块名称:
EX22
;功能:
进行多字节减法运算
;入口参数:
;出口参数:
相减的那结果存在
EX22PROCnear
LEASI,minuend
LEADI,subtrahend
MOVBX,N1
MOVCX,N2
CLC
MM:
MOVAL,[DI]
SBB[SI],AL
INCDI
INCSI
DECBX
LOOPMM
M1:
JZEXIT22
;因LOOP指令对标志位无影响,所以此处的转移是对DECBX而言。
;处理被减数的位数多于减数的位数的情况
JNCEXIT22;无借位则直接退出
SBBBYTEPTR[SI],0;影响CF标志位
INCSI;不影响CF标志位
DECBX;不影响CF标志位,影响ZF标志位
JMPM1
EXIT22:
RET
EX22ENDP
ENDstart
.MODEL
TINY
EXTRN
Display8:
NEAR,GetBCDKey:
NEAR
EXTRN
F1:
BYTE
.STACK
100
.DATA
BUFFER
DB
8DUP(?
)
minuend
DW
1DUP(?
)
;被减数
subtrahend
DW
1DUP(?
)
;减数
.CODE
START:
MOV
AX,@DATA
MOV
DS,AX
MOV
ES,AX
NOP
MOV
F1,0
;先清除显示,再接收键输入
START1:
LEA
DI,minuend
MOV
CX,4
;按键次数
CALL
GetBCDKey
;得到双字节十进制数(被减数)
MOV
F1,1
;接收到第一个键,才清除显示
LEA
DI,subtrahend
MOV
CX,4
;按键次数
CALL
GetBCDKey
;得到双字节十进制数(减数)
MOV
AX,minuend
MOV
BX,subtrahend
MOV
DL,10H
CMP
AX,BX
JNB
START2
XCHG
AX,BX
MOV
DL,11H
;负数
START2:
SUB
AL,BL
;低位
DAS
XCHG
AL,AH
SBB
AL,BH
;高位
DAS
XCHG
AL,AH
CLD
LEA
DI,BUFFER
;存放显示结果
CALL
B1toB2
;低位
MOV
AL,AH
CALL
B1toB2
;高位
MOV
AL,10H
;最高三位消隐
STOSB
STOSB
STOSB
STOSB
LEA
SI,BUFFER+3
MOV
CX,3
CALL
BlackDisplay
;将高位0消隐
LEA
SI,BUFFER
CALL
Display8
JMP
START1
;将一个字节压缩BCD码转换成二个字节非压缩BCD码
B1toB2
PROC
NEAR
PUSH
AX
AND
AL,0FH
STOSB
POP
AX
AND
AL,0F0H
ROR
AL,4
STOSB
RET
B1toB2
ENDP
BlackDisplay
PROC
NEAR
;将高位0消隐
BlackDisplay1:
MOV
AL,[SI]
CMP
AL,0
JNZ
Exit
MOV
AL,10H
MOV
[SI],AL
DEC
SI
LOOP
BlackDisplay1
Exit:
CLD
MOV
[SI+1],DL
RET
BlackDisplay
ENDP
END
START
七、思考
从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上。
实验六显示程序
一、实验目的
1、熟悉8255的功能,理解LED显示原理及控制方法;
2、学会使用LED点阵液晶显示字体和图形;
3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备
STAR系列实验仪一套、PC机一台。
三、实验内容
1、编写程序,用8255的PA、PB口控制LED的位选和段选,
(1)编写程序,控制8位数码管跑马灯形式显示0;
(2)编写程序,控制8位数码管静态显示指定字符1-8;
(3)编写程序,控制8位数码管动态循环显示8位字符;
2、按图连接线路,运行程序,观察实验结果。
四、实验原理图
五、实验步骤
1、主机连线说明:
B4区:
CS(8255)
——
A3区:
CS1
B4区:
A0、A1
——
A3区:
A0、A1
B4区:
JP56、JP53
——
G5区:
JP41、JP42
2、运行程序,验证显示结果。
六:
源程序
(1)控制8位数码管依次显示0;
.MODELTINY
.STACK100
.DATA
IO8255_ConEQU0F003H;CS3
IO8255_AEQU0F000H;A
IO8255_BEQU0F001H;B
LED_TAB:
DB03FH,06H,05BH,04FH,66H,6DH,7DH,07H
DB07FH,6FH,77H,7CH,39H,05EH,79H,71H
.CODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
MOVDX,IO8255_Con
MOVAL,80H;方式0,A,B,C均为输出
OUTDX,AL
MOVAL,0FEH;8255PC输出
MOVCX,8
GOON:
MOVDX,IO8255_A;位选
OUTDX,AL
ROLAL,1
MOVAH,AL
MOVDX,IO8255_B
MOVAL,03FH
OUTDX,AL
MOVAL,AH;0FFH->8255PA
CALLDelay
JMPGOON
DelayPROCNEAR
PUSHCX
MOVCX,20000
Delay1:
LOOPDelay1
POPCX
RET
ENDP
ENDSTART
(2)编写程序,控制8位数码管依次显示任意指定字符(0-F);
.MODELTINY
.STACK100
.MODELTINY
.STACK100
.DATA
IO8255_ConEQU0F003H;CS3
IO8255_AEQU0F000H;A
IO8255_BEQU0F001H;B
F1DB0
LED_TAB:
DB03FH,06H,05BH,04FH,66H,6DH,7DH,07H
DB07FH,6FH,77H,7CH,39H,05EH,79H,71H
.CODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
;MOVF1,0
MOVDX,IO8255_Con
MOVAL,80H;方式0,A,B,C均为输出
OUTDX,AL
MOVAL,0FEH;8255PC输出
MOVCX,8
GOON:
MOVDX,IO8255_B;段选
MOVBX,LED_TAB;装入表头
PUSHAX
MOVAL,F1
XLAT;AL放字形码
OUTDX,AL
POPAX
MOVAL,AH
MOVDX,IO8255_A;位选
OUTDX,AL
ROLAL,1
MOVAH,AL
INCF1
;0FFH->8255PA
CALLDelay
JMPGOON
DelayPROCNEAR
PUSHCX
MOVCX,800
Delay1:
LOOPDelay1
POPCX
RET
ENDP
ENDSTART
(3)编写程序,控制8位数码管同时显示0、1、……F:
.MODELTINY
.STACK100
.MODELTINY
.STACK100
.DATA
IO8255_ConEQU0F003H;CS3
IO8255_AEQU0F000H;A
IO8255_BEQU0F001H;B
LED_TAB:
DB03FH,06H,05BH,04FH,66H,6DH,7DH,07H
DB07FH,6FH,77H,7CH,39H,05EH,79H,71H
F1DB0
.CODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
MOVDX,IO8255_Con
MOVAL,80H;方式0,A,B,C均为输出
OUTDX,AL
MOVAX,0FEFEH;8255PC输出
MOVCX,1600
LEABX,LED_TAB
GOON:
MOVAL,F1
XLAT
MOVDX,IO8255_B;段选
OUTDX,AL
MOVAL,AH
MOVDX,IO8255_A;位选
OUTDX,AL
ROLAL,1
MOVAH,AL
CALLDL500ms
LOOPGOON;8段数码管显示当前值
MOVCX,1600;8段数码管显示完成,则显示下个字符
MOVAL,AH;
;CALLDL3S
INCF1
CMPF1,10H;是否显示完了
JZEXIT
JMPGOON
DL500msPROCNEAR
PUSHCX
MOVCX,400
DL500ms1:
LOOPDL500ms1
POPCX
RET
DL500msENDP
EXIT:
ENDSTART
七、思考
(4)编写程序,控制8位数码管显示当前日期以及时间;
实验七8251串口实验
一、实验目的与要求
了解8251的内部结构、工作原理;了解8251与8088的接口逻辑;掌握对8251的初始化编程方法,学会使用8251实现设备之间的串行通信。
复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备
STAR系列实验仪一套、PC机一台
三、实验内容
1、编制程序:
实现8251A与PC机的串行通讯,使用8253作分频器提供8251的收发时钟。
2、连接线路,从微机接收一批数据,接收完毕,再将它们回送给微机。
四、程序框图
初始化8251:
接收10个字节数据子程序:
发送了10个字节数据子程序:
五、实验原理图
六、实验步骤
1、连线说明:
C5区:
CS(8253)、A0、A1
——
A3区:
CS5、A0、A1
C5区:
CLK0
——
B2区:
2M
C5区:
GATE0
——
C1区的VCC
C5区:
OUT0
——
C5区:
RxC、TxC
C5区:
CS(8251)、C/D
——
A3区:
CS1、A0
C5区:
CLK
——
B2区:
4M
C5区: