微机原理实验指导书 何小海 严华.docx
《微机原理实验指导书 何小海 严华.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书 何小海 严华.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理实验指导书何小海严华
实验一数据传送
一、实验目的
熟悉星研集成环境软件的使用方法。
熟悉Borland公司的TASM编译器
熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。
二、实验内容
1、熟悉星研集成环境软件。
2、编写程序,实现数据段的传送、校验。
使用汇编语言,将数据段中3000H~30FFH单元的内容传送给实验仪B4区的61C256的2000H~20FF中;B4区的61C256在I/O设备区,使用
、
读写;再将它传送回数据段的6000H~60FFH中。
三、程序流程图(学生根据实验内容设计)
四、实验步骤
在DS段内3000H~30FFH中输入数据;使用单步、断点方式等调试程序,检测DS段内6000H~60FFH中的内容。
熟悉查看特殊功能寄存器、CS段、DS段的各种方法。
五、程序清单(参考)
本实例的源程序如下:
.MODEL
TINY
;memorymode:
tiny
.STACK
100
;堆栈
.CODE
;开始程序段
START:
MOV
AX,@DATA
MOV
DS,AX
MOV
ES,AX
NOP
MOV
CX,100H
MOV
SI,3000H
MOV
DX,2000H
START1:
MOV
AL,[SI]
OUT
DX,AL
INC
SI
INC
DX
LOOP
START1
MOV
DI,6000H
MOV
DX,2000H
MOV
CX,100H
START2:
IN
DX,AL
MOV
[DI],AL
INC
DI
INC
DX
LOOP
START2
SJMP
$
Move
ENDP
END
START
六、思考题
编写一个程序,将数据段中2000H~20FFH单元的内容传送给数据段的6000H~60FFH中。
实验内容:
1、用所学过的寻址方式编程实现将存储单元DS:
1000H单元的内容送到DS:
2020H单元。
2、设各寄存器及存储单元的内容如下:
(DS)=0500H,(BX)=0010H,(SI)=0001H,(05010)=12H,(05011)=34H,(05012)=56H,
(05013)=78H,(05120)=ABH,(05121)=CDH,(05122)=EFH,说明下列各条指令执行完后
AX寄存器中的内容。
(1)MOVAX,1200H
(2)MOVAX,BX
(3)MOVAX,DS:
[0120H]
(4)MOVAX,[BX]
(5)MOVAX,0110H[BX]
(6)MOVAX,[BX][SI]
(7)MOVAX,0110H[BX][SI]
实验二基本算术与逻辑运算
一、实验目的
1、熟悉算数和逻辑运算指令的功能。
2、进一步了解标志寄存器各标志位的意义和指令执行对它的影响。
二、实验内容
1、将寄存器BX作地址指针,自BX所指的内存单元(0010H)开始连续存放着三个无符号数(10H、04H、30H)。
编写程序求三个数的和与积,并将结果存放在这三个数之后的单元中。
2、写出完成下述功能的程序段
(1)传送15H到AL寄存器。
(2)将AL的内容乘以2。
(3)传送15H到BL寄存器。
(4)AL的内容乘以BL的内容。
最后结果(AX)=?
3、写出完成下述功能的程序段
(1)从地址DS:
0000H单元中,传送一个数据58H到AL寄存器
(2)把AL寄存器的内容右移二位。
(3)再把AL寄存器的内容与字节单元DS:
0001H中的数据12H相乘。
(4)将乘积存入字单元DS:
0002H中。
三、程序流程图(学生根据实验内容设计)
四、实验步骤
①在微机仿真实验系统下输入源程序并存盘;②对源程序进行编译、链接形成目标代码,同时排除源程序中的错误;③将编译、链接形成的目标文件下载到仿真实验系统中;④利用单步、运行到光标所在行等方式进行程序调试;⑤检查程序运行结果并进行分析
五、思考题
1、假设要清除偏移地址从0010H到0020H字存储单元中的内容,应该如何实现?
2、简要说明ADD指令和AND指令对标志位的影响。
实验三直线程序的设计
一、实验目的
熟悉8086汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码。
二、实验内容
设a,b,c,d四个数分别以单字节压缩BCD码形式存放在内存NUM开始的四个单元。
计算(a+b)-(c+d)并观察结果。
,
熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。
三、程序流程图(学生根据实验内容设计)
四、实验步骤
①在微机仿真实验系统下输入源程序并存盘;②对源程序进行编译、链接形成目标代码,同时排除源程序中的错误;③将编译、链接形成的目标文件下载到仿真实验系统中;④利用单步、运行到光标所在行等方式进行程序调试;⑤检查程序运行结果并进行分析
五、思考题
1、BCD码如何表示?
请举例说明压缩BCD码和非压缩BCD码的区别。
2、带符号的十进制数加法程序如何编写?
实验四分支程序的设计
一、实验目的
熟悉使用8086指令,掌握汇编语言的设计和调试方法;理解并能运用散转指令,掌握分支程序结构的设计方法。
二、实验内容
编写程序,根据接收到的键值,作不同的处理。
三、程序流程图(学生根据实验内容设计)
四、实验步骤
四、实验步骤
1、连线说明:
E5区:
CLK
——
B2区:
2M
E5区:
CS
——
A3区:
CS5
E5区:
A0
——
A3区:
A1
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
六、思考题
程序中为什么要把输入的值作乘以2处理?
实验五8255控制交通灯实验
一、实验目的与要求
1、了解8255芯片的工作原理,熟悉其初始化编程方法以及输入、输出程序设计技巧。
学会使用8255并行接口芯片实现各种控制功能,如本实验(控制交通灯)等。
2、熟悉8255内部结构和与8088的接口逻辑,熟悉8255芯片的3种工作方式以及控制字格式。
3、认真预习本节实验内容,尝试自行编写程序,填写实验报告。
二、实验设备
STAR系列实验仪一套、PC机一台
三、实验内容
1、编写程序:
使用8255的PA0..2、PA4..6控制LED指示灯,实现交通灯功能。
2、连接线路验证8255的功能,熟悉它的使用方法。
四、实验程序流程图(学生根据实验内容设计)
五、实验原理图
六、实验步骤
1、连线说明:
B4区:
CS、A0、A1
——
A3区:
CS1、A1、A2
B4区:
JP56(PA口)
——
G6区:
JP65
2、观察实验结果,是否能看到模拟的交通灯控制过程。
七、演示程序
.MODEL
TINY
COM_ADD
EQU
0F006H
PA_ADD
EQU
0F000H
PB_ADD
EQU
0F002H
PC_ADD
EQU
0F004H
.STACK
100
.DATA
LED_Data
DB
01111110B
;东西绿灯,南北红灯
DB
01111111B
;东西绿灯闪烁,南北红灯
DB
01111101B
;东西黄灯亮,南北红灯
DB
11011011B
;东西红灯,南北绿灯
DB
11111011B
;东西红灯,南北绿灯闪烁
DB
10111011B
;东西红灯,南北黄灯亮
.CODE
START:
MOV
AX,@DATA
MOV
DS,AX
NOP
MOV
DX,COM_ADD
MOV
AL,80H
;PA、PB、PC为基本输出模式
OUT
DX,AL
MOV
DX,PA_ADD
;灯全熄灭
MOV
AL,0FFH
OUT
DX,AL
LEA
BX,LED_Data
START1:
MOV
AL,0
XLAT
OUT
DX,AL
;东西绿灯,南北红灯
CALL
DL5S
MOV
CX,6
START2:
MOVAL,1
XLAT
OUT
DX,AL
;东西绿灯闪烁,南北红灯
CALL
DL500ms
MOV
AL,0
XLAT
OUT
DX,AL
CALL
DL500ms
LOOP
START2
MOV
AL,2
;东西黄灯亮,南北红灯
XLAT
OUT
DX,AL
CALL
DL3S
MOV
AL,3
;东西红灯,南北绿灯
XLAT
OUT
DX,AL
CALL
DL5S
MOV
CX,6
START3:
MOV
AL,4
;东西红灯,南北绿灯闪烁
XLAT
OUT
DX,AL
CALL
DL500ms
MOV
AL,3
XLAT
OUT
DX,AL
CALL
DL500ms
LOOP
START3
MOV
AL,5
;东西红灯,南北黄灯亮
XLAT
OUT
DX,AL
CALL
DL3S
JMP
START1
DL500ms
PROC
NEAR
PUSH
CX
MOV
CX,60000
DL500ms1:
LOOP
DL500ms1
POP
CX
RET
DL500ms
ENDP
DL3S
PROC
NEAR
PUSH
CX
MOV
CX,6
DL3S1:
CALL
DL500ms
LOOP
DL3S1
POP
CX
RET
ENDP
DL5S
PROC
NEAR
PUSH
CX
MOV
CX,10
DL5S1:
CALL
DL500ms
LOOP
DL5S1
POP
CX
RET
ENDP
END
START
七、实验扩展及思考
1、如何对8255的PC口进行位操作?
实验六8259A中断控制器实验
一、实验目的与要求
了解8259A的内部结构、工作原理;了解8259A与8088的接口逻辑;掌握对8259A的初始化编程方法,了解8088是如何响应中断、退出中断的。
复习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。
二、实验设备
STAR系列实验仪一套、PC机一台
三、实验内容
1、编制程序:
拨动单脉冲开关,“
”送给8259A的IR0,触发中断,8088计数中断次数,显示于G5区的数码管上
四、实验程序流程图(学生根据实验内容设计)
五、实验原理图
六、实验步骤
1、连线说明:
B3区:
CS、A0
——
A3区:
CS1、A1
B3区:
INT、INTA
——
EMU598+:
INTR、INTA
B3区:
IR0
——
B2区:
单脉冲
E5区:
CS、A0
——
A3区:
CS5、A1
E5区:
CLK
——
B2区:
2M
E5区:
A、B、C、D
——
G5区:
A、B、C、D
2、运行程序
3、上下拨动单脉冲开关,拨动二次,产生一个“
”,观察结果,数码管上显示的次数与拨动开关次数是否对应。
七、演示程序
.MODEL
TINY
EXTRN
Display8:
NEAR
IO8259_0
EQU
0F000H
IO8259_1
EQU
0F002H
.STACK
100
.DATA
BUFFER
DB
8DUP(?
)
Counter
DB
?
ReDisplayFlag
DB
0
.CODE
START:
MOV
AX,@DATA
MOV
DS,AX
MOV
ES,AX
NOP
CALL
Init8259
CALL
WriIntver
MOV
Counter,0
;中断次数
MOV
ReDisplayFlag,1
;需要显示
STI
;开中断
START1:
CMP
ReDisplayFlag,0
JZ
START1
CALL
LedDisplay
MOV
ReDisplayFlag,0
JMP
START1
Init8259
PROC
NEAR
MOV
DX,IO8259_0
MOV
AL,13H
OUT
DX,AL
MOV
DX,IO8259_1
MOV
AL,08H
OUT
DX,AL
MOV
AL,09H
OUT
DX,AL
MOV
AL,0FEH
OUT
DX,AL
RET
Init8259
ENDP
WriIntver
PROC
NEAR
PUSH
ES
MOV
AX,0
MOV
ES,AX
MOV
DI,20H
LEA
AX,INT_0
STOSW
MOV
AX,CS
STOSW
POP
ES
RET
WriIntver
ENDP
LedDisplay
PROC
NEAR
MOV
AL,Counter
MOV
AH,AL
AND
AL,0FH
MOV
Buffer,AL
AND
AH,0F0H
ROR
AH,4
MOV
Buffer+1,AH
MOV
Buffer+2,10H
;高六位不需要显示
MOV
Buffer+3,10H
MOV
Buffer+4,10H
MOV
Buffer+5,10H
MOV
Buffer+6,10H
MOV
Buffer+7,10H
LEA
SI,Buffer
CALL
Display8
RET
LedDisplay
ENDP
INT_0:
PUSH
DX
PUSH
AX
MOV
AL,Counter
ADD
AL,1
DAA
MOV
Counter,AL
MOV
ReDisplayFlag,1
MOV
DX,IO8259_0
MOV
AL,20H
OUT
DX,AL
POP
AX
POP
DX
IRET
END
START
八、实验扩展及思考
1、从8259A收到上升沿,到8086响应中断,试画这个过程的时序图。
实验七8253方波实验
一、实验目的与要求
了解8253的内部结构、工作原理;了解8253与8088的接口逻辑;熟悉8253的控制寄存器和初始化编程方法,熟悉8253的6种工作模式。
二、实验设备
STAR系列实验仪一套、PC机一台
三、实验内容
1、编写程序:
使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。
2、连接线路,验证8253的功能,熟悉它的使用方法。
四、实验程序流程图(学生根据实验内容设计)
五、实验原理图
六、实验步骤
1、连线说明:
C5区:
CS、A0、A1
——
A3区:
CS5、A1、A2
C5区:
CLK0
——
B2区:
2M
C5区:
OUT0
——
C5区:
CLK1
C5区:
OUT1
——
D1区:
Ctrl(蜂鸣器)
C5区:
GATE0、GATE1
——
C1区的VCC
2、测试实验结果:
蜂鸣器发出时有时无的声音;用逻辑笔测试蜂鸣器的输入端口,红绿灯交替点亮。
七、演示程序
.MODEL
TINY
COM_ADDR
EQU
0B006H
T0_ADDR
EQU
0B000H
T1_ADDR
EQU
0B002H
.STACK
100
.CODE
START:
MOV
DX,COM_ADDR
MOV
AL,35H
OUT
DX,AL
;计数器T0设置在模式2状态,BCD码计数
MOV
DX,T0_ADDR
MOV
AL,00H
OUT
DX,AL
MOV
AL,10H
OUT
DX,AL
;CLK0/1000
MOV
DX,COM_ADDR
MOV
AL,77H
OUT
DX,AL
;计数器T1为模式3状态,输出方波,BCD码计数
MOV
DX,T1_ADDR
MOV
AL,00H
OUT
DX,AL
MOV
AL,10H
OUT
DX,AL
;CLK1/1000
JMP
$
;OUT1输出1S的方波
END
START
八、实验扩展及思考
1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?
程序如何编写?
2、使用8253,编写一个实时钟程序。