文档介绍:上机模拟试题3
编制一个程序:统计K1〜K8中置“1”的开关数N和置“0”的开关数 M,并将N显示在八段LED显示器LED6上,M显示在LED3上,两组交替 显示(交替时间的延时由软件实现)。当八个开关都为0时,结束程序。 设8255A的B 口作八段LED显示器的段选口,C作为位选口,A 口接开关。
;硬件连接:
;8255A □接开关信号(J4—J5: 8根线);
;8255B 口接 LED 段选(J2—J7: 8 根线);
;8255C 口接 LED 位选(J3—J8: 6 根线)
DATA SEGMENT
MESS DB 0C0H, 0F9H, 0A4H, OBOH, 99H, 92H, 82H, 0F8H, 80H
;0到8段码表
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE, DS:DATA
START: PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA
MOV DS, AX
MOV DX, 20BH
MOV AL, 90H ; 1 001 0 00 0
OUT DX, AL
Mov dx, 209h
Mov al, Offh ;关显示
Out dx, al
LP1:
MOV CX, 8
MOV DX, 208H
;判断8次(循环计数值为8)
LP2:
LP3:
IN AL, DX
MOV AH, 0
ROL AL, 1
JNC LP3 INC AH LOOP LP2
;读入开关状态
;AH:开关置'1,个数计数器
;移入CF进行判断
;开关置'O', AH不计数
;开关置'1', AH加1 (统计1的个数)
;8个开关状态已判断完毕?尚未,继续
CMP AH, 0
JE EXIT
MOV AL, AH
LEA BX, MESS
XLAT
;已经完毕。8个开关是否全'0' ?
;是全'0',准备退出
;置'1'开关个数存AL,准备查对应的段码
;BX指向段码表首地址
;查出置'1'开关个数的段码
MOV DX, 209H
OUT DX, AL
;B 口:段控口
;送段码
MOV DX, 20AH
MOV AL, 20H
OUT DX, AL
CALL DELAY
;C 口:位控口
;LED6位费信号
;LED6显示