前三道题参考汪神博客【微机原理与汇编语言】考点总结
4、 K0-K7接通I/O输入端口的低8位,L0-L7接通I/O输出端口的低8位,INL连接300IN,OUTL连接300OUT,实现如下功能:闭合K0开关,L0-L7依次点亮,间隔2s(调用Delay子程序),其它情况下,L0-L7全部熄灭。
;简单I/O口扩展 19200
; 连线:
; 输入输出 INL ----- 端口地址 300IN
; 输入输出 i0~i7 --- 逻辑电平开关 K0~K7
; 输入输出 OUTL ---- 端口地址 300OUT
; 输入输出 o0~o7 --- 发光二极管 L0~L7
; 输入输出 D0~D7 --- 数据总线 D0~D7
CS_IO EQU 0300H
CODE SEGMENT
ASSUME CS:CODE
START PROC NEAR
MOV DX,CS_IO
MOV DX,0300H
MOV CL,00000001B
MLOOP: IN AL,DX
NOT AL
TEST AL,01000000B
JZ STOP
MOV AL,CL
OUT DX,AL
ROL CL,1
CALL DELAY
JMP MLOOP
STOP:
MOV AL,00000000B
OUT DX,AL
MOV CL,00000001B
JMP MLOOP
START ENDP
DELAY PROC
PUSH DX
PUSH AX
MOV DX,02H
MOV AX,0
L1:
SUB AX,1
SBB DX,0
CMP AX,0
JNE L1
CMP DX,0
JNE L1
POP AX
POP DX
RET
DELAY ENDP
CODE ENDS
END START
5、 IMS连接393分频器的1A,1QD连接2A,2QD连接8253的CLK1,OUT1连接CLK2,OUT2连接一个发光二极管,8253的片选端CS连接300H端口,GATE1和GATE2连接+5V,编程实现发光二极管循环熄灭3秒,闪亮1秒。
; 8253定时计数器
; 连线:
; 8253 CS ------ 端口地址 300CS
; PACK IMS ----- 393 1A
; 393 1QD ------ 8253 CLK1
; 8253 OUT1 ---- 8253 CLK2
; 8253 OUT2 ---- 发光二极管 L?
; 8253 GATE1 -- (A10)+5V
; 8253 GATE2 -- (A10)+5V
; 运行:
; 运行程序,发光二极管1s周期闪烁
CS8253 EQU 0303H
COUNT0 EQU 0300H
COUNT1 EQU 0301H
COUNT2 EQU 0302H
CODE SEGMENT
ASSUME CS:CODE
START PROC NEAR
MOV DX,CS8253
MOV AL,01110110B
OUT DX,AL
MOV DX,COUNT1
MOV AX,19200
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,CS8253
MOV AL,10010100B
OUT DX,AL
MOV DX,COUNT2
MOV AX,4
OUT DX,AL
JMP $
START ENDP
CODE ENDS
END START
6、 8255的A口接数码管的a-h,B口连接6个数码管的选通端0-5,8255的片选端CS连接300H端口,数码管显示0-3的编码存放到数据区的LED变量中,编程实现数码管依次显示0,1,2,3,间隔2秒。
; 8255 PA输入 PB输出
; 连线:
; 8255 CS ---------- 端口地址 300CS
; 8255 PA7..PA0 ---- 逻辑电平开关 K7..K0
; 8255 PB7..PB0 ---- 发光二极管 L7..L0
; 运行:
; 全速运行程序,拨动K0~K7,观察L0~L7发光二极管显示
CS8255 EQU 0303H
PORTA EQU 0300H
PORTB EQU 0301H
DATA SEGMENT
BUF DB 11000000B,11111001B,10100100B,10110000B
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC NEAR
MOV DX,CS8255 ;8255初始化
MOV AL,80H
OUT DX,AL
okok: mov si,offset BUF
mov bl,4
MAIN:
MOV DX,PORTA ;读PA数据
mov AL,[si]
OUT DX,AL
MOV DX,PORTB ;数据写PB
mov al,000001B
call delay
OUT DX,al
inc si
sub bl,1
cmp bl,0
Ja MAIN
jmp okok
START ENDP
delay proc
push cx
push bx
mov cx ,0ffffh
l0: mov bx,3
l1: sub bx,1
cmp bx,0
ja l1
dec cx
cmp cx,0
ja l0
pop bx
pop cx
ret
delay endp
CODE ENDS
END START
7、 8255的A口接数码管的a-h,B口连接6个数码管的选通端0-5,8255的片选端CS连接300H端口,数码管显示0-3的编码存放到数据区的LED变量中,编程实现如下功能:键盘输入‘0’-‘3’之间的字符,数码管显示对应的数值,键盘输入其它字符,数码管没变化。
; 8255 PA输入 PB输出
; 连线:
; 8255 CS ---------- 端口地址 300CS
; 8255 PA7..PA0 ---- 逻辑电平开关 K7..K0
; 8255 PB7..PB0 ---- 发光二极管 L7..L0
; 运行:
; 全速运行程序,拨动K0~K7,观察L0~L7发光二极管显示
CS8255 EQU 0303H
PORTA EQU 0300H
PORTB EQU 0301H
DATA SEGMENT
BUF DB 11000000B,11111001B,10100100B,10110000B
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC NEAR
MOV DX,CS8255 ;8255初始化
MOV AL,80H
OUT DX,AL
mov si,offset BUF
MAIN:
MOV DX,PORTA ;读PA数据
mov ah,1
int 21h
sub al,48
mov ah,0
add si,ax
mov AL,[si]
OUT DX,AL
MOV DX,PORTB ;数据写PB
mov al,000001B
OUT DX,al
Jmp MAIN
START ENDP
CODE ENDS
END START