我们做的是秒表
下面是我们的代码:
LWLC.ASM
<span style="font-size:18px">DATA SEGMENT
;8255各个端口地址
IO8255A EQU 1460H
IO8255B EQU 1461H
IO8255C EQU 1462H
IO8255K EQU 1463H
;8254各个端口地址
IO82540 EQU 1440H
IO82541 EQU 1441H
IO82542 EQU 1442H
IO8254K EQU 1443H
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段码0---9
COUNT DW ? ;交替显示次数
COUNTIN DW ? ;延迟函数内循环循环次数
NUMA DB ? ;十位数
NUMB DB ? ;个位数
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
;初始化DS
MOV AX,DATA
MOV DS,AX
;初始化8255
;8255写入控制字98H---->10011000B
;PB,PC0--PC3口均输出,A口,PC4----PC7为输入
MOV AL,98H ;10011000B
MOV DX,IO8255K
OUT DX,AL
MOV NUMA,00H
MOV NUMB,00H
DISPLY:
MOV COUNT, 500
MOV BX, OFFSET LED
MOV BP,COUNT
;交替显示十位(A)和个位(B)
SHOW:
;显示十位数
MOV AL, NUMA
XLAT ;查表
MOV DX, IO8255B
OUT DX, AL ;将该数的LED数码管字形代码送到B口
MOV DX, IO8255C ;接通8段代码管的第一位,在LED上显示十位数
MOV AL, 11111011B
OUT DX, AL
CALL DELAY
CALL DECIDE
;显示个位数
MOV