资源描述
微机原理实验教学方案
22
2020年4月19日
文档仅供参考,不当之处,请联系改正。
实验一 两个多位十进制数相加的实验
一、实验目的
学习数据传送和算术运算指令的用法
熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容
将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序流程图
图 3-1
四、参考程序清单
DATA SEGMENT
DATA1 DB 33H,39H,31H,37H,34H;被加数
DATA1END EQU $-1
DATA2 DB 34H,35H,30H,38H,32H;加数
DATA2END EQU $-1
SUM DB 5 DUP(?)
DATA ENDS
STACK SEGMENT
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSET DATA1END
MOV DI,OFFSET DATA2END
CALL ADDA
MOV AX,4C00H
INT 21H
ADDA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05H
AD1: SUB BYTE PTR [SI],30H
SUB BYTE PTR [DI],30H
DEC SI
DEC DI
DEC BX
JNZ AD1
MOV SI,DX
MOV DI,BP
MOV CX,05H
CLC
AD2: MOV AL,[SI]
MOV BL,[DI]
ADC AL,BL
AAA
MOV [SI],AL
DEC SI
DEC DI
LOOP AD2
MOV SI,DX
MOV DI,BP
MOV BX,05H
AD3: ADD BYTE PTR [SI],30H
ADD BYTE PTR [DI],30H
DEC SI
DEC DI
DEC BX
JNZ AD3
RET
ADDA ENDP
CODE ENDS
END START
实验二 排序实验
一、实验目的
掌握用汇编语言编写排序程序的思路和方法。
巩固在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容
将指定内存出开始的数据(最多为4位数)按从大到小的顺序排列。第一个数字表示数据的个数(不是要比较的数值!!!)。
三、程序流程图
图 3-2
四、程序清单
DATA SEGMENT
ADDR DW 8,234,35,67,876,54,39,765,237
DATA ENDS
STACK SEGMENT
STA DW 32 DUP(?)
TOP DW ?
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
MOV CX,WORD PTR ADDR[0]
DEC CX
LOOP1: MOV DI,CX
MOV BX,2
LOOP2: MOV AX,WORD PTR ADDR[BX]
CMP AX,WORD PTR ADDR[BX+2]
JGE CCC
XCHG AX,WORD PTR ADDR[BX+2]
MOV WORD PTR ADDR[BX],AX
CCC: ADD BX,2
LOOP LOOP2
MOV CX,DI
LOOP LOOP1
EXIT: MOV AX,4C00H
INT 21H
CODE ENDS
END START
实验三 自编程序上机调试一
一、实验目的
掌握用汇编语言编写程序的思路和方法。
巩固在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容
选课本或作业题中题目上机调试。
实验四 自编程序上机调试二
一、实验目的
掌握用汇编语言编写程序的思路和方法。
巩固在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容
选课本或作业题中题目上机调试。
实验五 8255并行I/O口实验
一、实验要求
利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输入,PB口作输出。
二、实验目的
1、了解8255芯片结构及编程方法。
2、了解8255输入/输出实验方法。
三、预备知识
8255是Intel公司生产的与Intel8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。它有A、B、C三个八位端口寄存器,经过24位端口线与外部设备相连,基中C口可分为上半部和下半部。这24根端口线全部为双向三态。三个端口可分二组来使用,可分别工作于三种不同的工作方式。
四、实验原理图及连线
1、本实验主要用到的模块:8255模块、开关量输出模块、0-1指示模块、实验译码单元等;
2、PA0-PA7分别接开关量输出模块S0-S7对应的插座;
3、PB0-PB7分别接0-1指示模块DO71-DO78对应的插座;
4、8255A的片选/CS接地址译码单元的2A0-2A7;
5、数据线XD0—XD7接系统数据线区的任一插座。
图 3-3
五、实验内容
将实验的线路连接好后,编程,将8255的A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示。
六、程序清单
L8255_CMD EQU 2A3H
L8255_PA EQU 2A0H
L8255_PB EQU 2A1H
L8255_PC EQU 2A2H
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
BEGIN:
MOV CX,0FFH
AA: LOOP AA
MOV DX,L8255_CMD
MOV AL,9CH ;10011000
OUT DX,AL
NOP
NOP
NOP
NOP
NOP
BB: MOV DX,L8255_PA
IN AL,DX
XOR AL,0FFH
MOV DX,L8255_PB
OUT DX,AL
JMP BB
CODE ENDS
END BEGIN
七、程序框图
开始
延时
置8255工作方式
读8255PA口
置8255PB口
见图3-4。
图 3-4
八、实验步骤
1、参照图中的内容连好线;
2、运行上位机软件,装载并运行相应程序即可(联机请参考程序8255.asm)。
注意:同学们自己编写程序时,8255的/CS连线能够接地址译码单元的其它信号,其它连线相同。如果用的端口与本实验不一样,也能够改变IO口的连线。
九、仪器配置
ZY15MicInt12BB微机原理及接口实验箱 一台。
十、实验现象
当读到某个开关处于高电平时,对应的发光二极管就会亮。
十一、思考题
根据程序列出实验中8255的各个端口的地址,如果8255的/CS改接译码信号280H,其它信号不变,那么对应的端口地址又是多少?
实验六 ADC0809A/D转换实验
一、实验目的
1、加深理解逐次逼近法模数转换器的特征和工作原理;
2、掌握A/D转换芯片与8088/86的接口方法;
3、了解A/D芯片ADC0809转换性能及编程方法。
二、预备知识
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100us。本程序是用延时查询方式读入A/D转换结果,也能够用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,做为转换完成的信号。
三、实验原理说明及连线
1、本实验的位置在实验箱的“ADC0809模块”;
2、本实验用芯片ADC0809的片选地址为2B8H,实验箱上已固定好,不需要再连线;
3、将该实验模块的CLOCK和“信号源模块”的1MHz信号连接起来;
4、用排线将“系统数据总线输出单元”中的任意一组数据线和本实验模块的“ADC0809:XD0-XD7”连接起来;
5、将通道0模拟量输入端IN0接模拟信号产生电路模块中的电位器R093的中心抽头,然后将R093的两端一端接地,另一端接VCC(+5V)。
图 3-8
四、实验内容
利用电位器输出一个幅值可调的直流电压信号,送入ADC0809的通道0,将转换后的结果在屏幕上显示出来,并验证它与输入电压的关系。
五、实验步骤
1、确认连接好线路;
2、装载运行程序。
六、实验框图
图 3-9
七、仪器配置
ZY15MicInt12BB微机原理及接口实验箱 一台
八、实验现象
当用户扭动电阻器时,屏幕将显示相应的数值。
九、思考题
按图中的连接线路,输入一个3V的模拟信号,输出的数字信号的理论值是多少,在实验箱上验证该值的正确性。
实验中用的ADC0809的IN0的地址是什么?
十、程序清单
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,2B8H ;2B0H-2B7H
MOV AL,00H
OUT DX,AL
CALL DELAY
IN AL,DX
CALL SHOW
CALL DELAY
JMP START
SHOW PROC NEAR
PUSH DX
PUSH AX
MOV CL,4
SHR AL,CL
AND AL,0FH
CALL H2C
JC SHOW_OUT
MOV DX,88H
OUT DX,AL
POP AX
AND AL,0FH
CALL H2C
JC SHOW_OUT
MOV DX,88H
OUT DX,AL
MOV CX,0FFH
DELA:
LOOP DELA
SHOW_OUT:
POP DX
RET
SHOW ENDP
H2C PROC NEAR
CMP AL,0
JAE N0_9
JMP H2C_ERR
N0_9:
CMP AL,9
JBE N0_9_OK
CMP AL,0AH
JAE HEX_CMP
JMP H2C_ERR
HEX_CMP:
CMP AL,0FH
JBE HEX_CMP_OK
JMP H2C_ERR
HEX_CMP_OK:
CLC
ADD AL,37H
JMP CMP_OUT
N0_9_OK:
CLC
ADD AL,30H
JMP CMP_OUT
H2C_ERR:
STC
CMP_OUT:
RET
H2C ENDP
DELAY PROC NEAR
MOV CX,0FFH
DELEA:
LOOP DELEA
RET
DELAY ENDP
CODE ENDS
END START
展开阅读全文