微机原理实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BUF DB ?,?,?,?,?,?
START9: MOV CX,0005H
;"dais 88" ON/OFFLED,COUNT
A90: PUSH CX
A91: MOV BX,OFFSET BUF
MOV AX,0A0DH
MOV [BX],AX
ADD BX,2
MOV AX,0501H
MOV [BX],AX
实验流程
思考 编一程序把4000H~400AH中内容按从小到大排列。 实验程序 ;--------------------------- 数据排序实验-------------------CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3090H S5: MOV CX,000AH A53: MOV BX,4000H PUSH CX A52: MOV AX,[BX] CMP AL,AH JC A51 A54: INC BX LOOP A52 POP CX LOOP A53 JMP $ A51: XCHG AL,AH
LOOP A99
JMP START9
;--------------------------
DIS: MOV CL,20H
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
PUSH BX
MOV BX,OFFSET LED
XLAT
POP BX
MOV DX,ZXK
OUT DX,AL
MOV AL,CL MOV DX,ZWK OUT DX,AL PUSH CX MOV CX,0100H DELAY: LOOP $ POP CX CMP CL,01H JZ EXIT INC BX SHR CL,1 JMP DIS1 EXIT: MOV AL,00H MOV DX,ZWK OUT DX,AL RET CODE ENDS END S9
LED9: MOV AL,90H JMP LEDX
LEDA: MOV AL,88H JMP LEDX
LEDB: MOV AL,83H JMP LEDX
LEDC: MOV AL,0C6H JMP LEDX
LEDD: MOV AL,0A1H JMP LEDX
LEDE: MOV AL,86H JMP LEDX
C0 F9 A4 B0 99 92 82 F8 80 90 88 83 C6 A1 86 8E FF
LED数码管的字位代码:
字位 1
2
代码 20
10
实验连线
连接位置1
138 A , B, C
A15
Βιβλιοθήκη Baidu
GND
138 G
8255 CS
8255 PA
8255 PB
8255 D0…..D7
3
4
5
6
08 04 02 01
实验思考
修改程序,查找其他内容。
实验程序
;------------------------- 找"零"个数-------------------
CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
ORG 30B0H
S6: MOV BX,4100H
;COUNT
MOV AX,0000
LEDF: MOV AL,8EH JMP LEDX
LEDX: MOV DX,0FFDCH OUT DX,AL MOV CL,20H MOV DX,0FFDDH
LEDX1: MOV AL,CL OUT DX,AL PUSH CX CALL DLL POP CX ROR CL,1 JMP LEDX1
DLL: MOV BX,0020H DL1: DEC BX
连接位置2 A5, A6, A7 02第11脚 02第12脚 02第13脚 138 Y3 字形口 字位口 系统数据总线D0…..D7
实验步骤 在4000H中分次输入00,01,02……0F,每次运行程序后观察数码管上 数字循环情况。 实验程序 ;------------------------ 多分支程序设计---------------------CODE SEGMENT
MOV [BX],AX JMP A54 CODE ENDS END S5
实验六 找“零”个数
实验目的 熟悉汇编语言编程,掌握串操作指令的使用。 实验内容 在4000H~400FH中查出有几个字节是零,把个数放在4100H中。 实验流程
实验步骤
在4000H~400FH的几个单元中填入零,运行本程序后检查4100H 中是几个单元数。
MOV [BX],AX
MOV CX,0010H
MOV DI,4000H
CLD
A62: SCASB
JZ A61
A63: LOOP A62
JMP $
A61: INC BYTE PTR [BX]
JMP A63
CODE ENDS
END S6
实验七 多分支程序
实验目的
掌握汇编语言的编程,熟悉程序散转的设计方法。
ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3130H S8: JMP A81 TAB DW LED0,LED1,LED2,LED3,LED4,LED5,LED6,LED7 DW LED8,LED9,LEDA,LEDB,LEDC,LEDD,LEDE,LEDF A81: MOV BX,OFFSET TAB MOV SI,4000H MOV AL,[SI] AND AL,0FH SHL AL,1 MOV AH,00H ADD BX,AX JMP [BX] LED0: MOV AL,0C0H JMP LEDX LED1: MOV AL,0F9H JMP LEDX LED2: MOV AL,0A4H JMP LEDX LED3: MOV AL,0B0H JMP LEDX LED4: MOV AL,99H JMP LEDX LED5: MOV AL,92H JMP LEDX LED6: MOV AL,82H JMP LEDX LED7: MOV AL,0F8H JMP LEDX LED8: MOV AL,80H JMP LEDX
实验流程
实验步骤 调试运行3060程序,检查4100H~410FH中内容是否和4200H~ 420FH中内容完全一致。 实验程序 ;-------------------------- 数据区移动--------------------------CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE ORG 3060H S4: MOV CX,0010H MOV SI,4100H MOV DI,4200H CMP SI,DI JA A42 ADD SI,CX ADD DI,CX A41: DEC SI DEC DI MOV AL,[SI] MOV [DI],AL LOOP A41
实验九 8255并行口实验:PA口控制PB口
实验目的 ⑴掌握8255A和微机接口方法。 ⑵掌握8255A的工作方式和编程原理。 实验内容 用8255 PA作开关量输入口,PB作输出口。 程序流程
实验电路
编程提示 8255A芯片简介 8255A可编程外围接口芯片是Intel公司生产的通用并行接口芯片, 它具有A、B、C三个并行接口,用+5V电源供电,能在以下三种方式下 工作: 方式0:基本输入/输出方式 方式1:选通输入/输出方式 方式2:双向选通工作方式 使8255A端口A工作在方式0并作为输入口,读取K1—K8八个开关 量,送PB口显示。PB口工作在方式0作为输出口。 实验步骤 ⑴按实验电路图连接线路: ①8255A芯片A口的AP0~PA7依次和开关量输入插孔K1~K8相 连。 ②8255A芯片B口的AB0~PB7依次接L1~L8 ⑵运行实验程序。 在系统处“P.”状态时,输入32E0,按EXEC键, 拨动K1~K8、L1~L8会跟着亮灭。 实验程序 ;----------------- 8255A并行口实验 PA输入,PB输出------------CODE SEGMENT
实验内容
多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存
器或某单元的内容进行程序转移。在设计多分支转移程序时,如果分支
太多,则平均转移速度太慢,本实验采用转移地址表实现多分支转移,
可以提高平均转移速度。
编写程序,根据送入的数据转移运行。
实验流程
编程提示 字形口地址:FFDCH 字位口地址:FFDDH LED数码管0~F的字行代码: 0 1 2 3 4 5 6 7 8 9 ABC D E F 灭
ASSUME CS:CODE,DS:CODE,ES:CODE ORG 31E0H S9: JMP START9 ZXK EQU 0FFDCH ZWK EQU 0FFDDH LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H
INC BX
LOOP A93
MOV CX,0020H
;OFFSET,TIME
A94: PUSH CX
CALL DIS
POP CX
LOOP A94
POP CX
LOOP A90
;-------------------
MOV CX,0005H
;"good" ON/OFFLED-COUNT
A99: PUSH CX
CMP BX,0000 JZ DL3 MOV CX,04FFH LOOP $ JMP DL1 DL3: RET CODE ENDS END S8
实验八 显示子程序
实验目的
熟悉LED显示器的显示过程。 实验内容 编写程序,依次闪动显示“Dais 88”“good”。 实验流程
实验连线 连接位置1 138 A , B, C A15 GND 138 G 8255 CS 8255 PA 8255 PB 8255 D0…..D7
POP CX
LOOP A96
MOV CX,0003H
MOV AX,1010H
MOV BX,OFFSET BUF
A97: MOV [BX],AX
INC BX
INC BX
LOOP A97
MOV CX,0020H
;OFFSET-TIME
A98: PUSH CX
CALL DIS
POP CX
LOOP A98
POP CX
ADD BX,2
MOV AX,0808H
MOV [BX],AX
MOV CX,0050H
;ONLED,TIME
A92: PUSH CX
CALL DIS
POP CX
LOOP A92
MOV CX,0003H
MOV AX,1010H
MOV BX,OFFSET BUF
A93: MOV [BX],AX
INC BX
连接位置2 A5, A6, A7 02第11脚 02第12脚 02第13脚 138 Y3 字形口 字位口 系统数据总线D0…..D7
实验步骤 连续运行31E0h程序,观察数码管显示情况。 实验程序 ------------------------- 显示子程序---------------------------CODE SEGMENT
A95: MOV BX,OFFSET BUF
MOV AX,0009H
MOV [BX],AX
ADD BX,2
MOV AX,0D00H
MOV [BX],AX
ADD BX,2
MOV AX,1010H
MOV [BX],AX
MOV CX,0050H
;ONLED-TIME
A96: PUSH CX
CALL DIS
实验四 数据区移动
实验目的 掌握RAM中的数据操作。 实验内容 把4100H源RAM区首地址内的16字节数据传送到4200H目标RAM 区。 设计思想
程序要求把内存中一数据区(称为源数据块)传送到另一存储区 (称为目的数据块)。源数据块和目的数据块在存储器中可能有三种情 况,如下图:
对于两个数据分离的情况,如图(a),数据的传送从数据块的首地址 开始,或者从数据块的末地址开始均可。但对于有部分重叠的情况,则 要加以分析,否则重叠部分会因“搬移”而遭破坏。 可以得出如下结论:当源数据首址大于目的块首址时,从数据块首 址开始传送数据。当源数据首址小于目的块首址时,从数据块末址开始 传送数据。
JMP $ A42: MOV AL,[SI]
MOV [DI],AL INC SI INC DI LOOP A42 JMP $ CODE ENDS END S4
实验五 数据排序实验
实验目的 熟悉8088指令系统,掌握程序设计方法。 实验内容 编写并调试一个排序子程序,其方法为用冒泡法将RAM中的几个 单元字节无符号的正整数,按从小到大的次序重新排列。 实验步骤 ⑴从第一个数开始,依次把相邻的两个数进行比较,即第(N-2)个 数与第(N-1)个数比较,第(N-1)个数与N个数比较等等;若第(N-1)个数 不大于第N个数,则两者交换,否则不交换,直到N个数的相邻两个数 都比较完为止。此时。N个数中的最小数将被排在N个数的最后。 ⑵对剩下的(N-1)个数重复第⑴步,找到(N-1)个数中的最小数。 ⑶重复第⑵步,直到N个数全部排序好为止。 实验步骤 在4000H~400AH中通过键盘命令输入不等的10个数,运行本实验 程序后检查4000H~400AH中内容是否按从大到小排列。在和PC机联机 时,用连续单步方式,可很清楚地看出数据排序时数据移动变化情况。