⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01.asm

📁 用8088CPU构建一个微机应用系统
💻 ASM
字号:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
ORG 3500H
TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
BUFFER DB 6 DUP(0)
FUNCTION DB 00H
HAVEKEY DB 00H
SECOND DB 59H
MINUTE DB 20H
HOUR DB 23H
B_SET DB 00H
C_SET DB 00H
D_SET DB 00H
BBCOT DB 00H
CCCOT DB 00H
DDCOT DB 00H
SHU_ZI DB 00H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX   
MOV BX,OFFSET TABLE
MOV DI,OFFSET BUFFER
MOV SI,OFFSET SECOND
MOV AL,88H
OUT 63H,AL
A3:MOV CX,00CFH
A4:CALL KEYTEST
CMP HAVEKEY,0FFH
JNZ A6
CALL KEYSCAN
A6:CALL DISPLAY
CMP FUNCTION,0FFH
JZ A4
LOOP A4
MOV AL,SECOND
ADD AL,01H
DAA
MOV SECOND,AL
CMP SECOND,60H
JNZ ND_HOU
MOV SECOND,00H
MOV AL,MINUTE
ADD AL,01H
DAA
MOV MINUTE,AL
CMP MINUTE,60H
JNZ ND_HOU
MOV MINUTE,00H
MOV AL,HOUR
ADD AL,01H
DAA
MOV HOUR,AL
CMP HOUR,24H
JNZ ND_HOU
MOV HOUR,00H
ND_HOU:CALL DEAL
JMP A3
KEYSCAN:MOV HAVEKEY,00H
CALL DISPLAY
CALL DISPLAY
CALL KEYTEST
CMP HAVEKEY,0FFH
JZ BEGIN1
JMP EXIT1
BEGIN1:MOV AH,0FEH
NEXTKEY:MOV AL,AH
OUT 60H,AL
IN AL,62H
AND AL,0C0H
CMP AL,80H
JZ FIND1
CMP AL,40H
JZ BRIGE
ROL AH,1
JMP NEXTKEY
BRIGE:JMP FIND2
FIND1:PUSH AX
A1:MOV HAVEKEY,00H
CALL DISPLAY
CALL KEYTEST
CMP HAVEKEY,0FFH
JZ A1
POP AX
NOT AH
CMP AH,01H
JZ KEY1
CMP AH,02H
JZ KEY12
CMP AH,04H
JZ KEY0
CMP AH,08H
JZ KEY15
CMP AH,10H
JZ KEY10
CMP AH,20H
JZ KEY14
CMP AH,40H
JZ KEY11
CMP AH,80H
JZ KEY13
JMP EXIT1
KEY1:MOV SHU_ZI,01H
JMP EXIT
KEY12:CMP FUNCTION,0FFH
JNZ C_OUT
MOV C_SET,0FFH
MOV B_SET,00H
MOV D_SET,00H
C_OUT:JMP EXIT1
KEY0:MOV SHU_ZI,00H
JMP EXIT
KEY15:CALL CLEAR
MOV SECOND,00H
MOV MINUTE,00H
MOV HOUR,00H
JMP EXIT1
KEY10:CMP FUNCTION,0FFH
JNZ A_OUT
JMP KEYSCAN
A_OUT:JMP EXIT1
KEY14:MOV FUNCTION,00H
JMP EXIT1
KEY11:CMP FUNCTION,0FFH
JNZ B_OUT
MOV C_SET,00H
MOV B_SET,0FFH
MOV D_SET,00H
B_OUT:JMP EXIT1
KEY13:CMP FUNCTION,0FFH
JNZ D_OUT
MOV C_SET,00H
MOV B_SET,00H
MOV D_SET,0FFH
D_OUT:JMP EXIT1
FIND2:PUSH AX
A2:MOV HAVEKEY,00H
CALL DISPLAY
CALL KEYTEST
CMP HAVEKEY,0FFH
JZ A2
POP AX
NOT AH
CMP AH,01H
JZ KEY9
CMP AH,02H
JZ KEY5
CMP AH,04H
JZ KEY8
CMP AH,08H
JZ KEY4
CMP AH,10H
JZ KEY7
CMP AH,20H
JZ KEY3
CMP AH,40H
JZ KEY6
CMP AH,80H
JZ KEY2
JMP EXIT1
KEY9:MOV SHU_ZI,09H
JMP EXIT
KEY5:MOV SHU_ZI,05H
JMP EXIT
KEY8:MOV SHU_ZI,08H
JMP EXIT
KEY4:MOV SHU_ZI,04H
JMP EXIT
KEY7:MOV SHU_ZI,07H
JMP EXIT
KEY3:MOV SHU_ZI,03H
JMP EXIT
KEY6:MOV SHU_ZI,06H
JMP EXIT
KEY2:MOV SHU_ZI,02H
EXIT:CALL JUDGE
EXIT1:RET
DISPLAY:PUSH AX
CMP B_SET,0FFH
JNZ FFB3
CMP BBCOT,50H
JA FFB1
FFB3:MOV AL,00H
OUT 62H,AL
MOV AL,[DI]
OUT 61H,AL
CALL DELAY
MOV AL,01H
OUT 62H,AL
MOV AL,[DI+01H]
OUT 61H,AL
CMP B_SET,0FFH
JNZ FFB2
FFB1:INC BBCOT
CMP BBCOT,0A0H
JNZ FFB2
MOV BBCOT,00H
FFB2:CALL DELAY
CMP C_SET,0FFH
JNZ FFC3
CMP CCCOT,50H
JA FFC1
FFC3:MOV AL,02H
OUT 62H,AL
MOV AL,[DI+02H]
OUT 61H,AL
CALL DELAY
MOV AL,03H
OUT 62H,AL
MOV AL,[DI+03H]
OUT 61H,AL
CMP C_SET,0FFH
JNZ FFC2
FFC1:INC CCCOT
CMP CCCOT,0A0H
JNZ FFC2
MOV CCCOT,00H
FFC2:CALL DELAY
CMP D_SET,0FFH
JNZ FFD3
CMP DDCOT,50H
JA FFD1
FFD3:MOV AL,04H
OUT 62H,AL
MOV AL,[DI+04H]
OUT 61H,AL
CALL DELAY
MOV AL,05H
OUT 62H,AL
MOV AL,[DI+05H]
OUT 61H,AL
CMP D_SET,0FFH
JNZ FFD2
FFD1:INC DDCOT
CMP DDCOT,0A0H
JNZ FFD2
MOV DDCOT,00H
FFD2:CALL DELAY
POP AX
RET
DELAY:PUSH CX
MOV CX,0100H
DXMS:LOOP DXMS
POP CX
RET
KEYTEST:PUSH AX
MOV AL,00H
OUT 60H,AL
IN AL,62H
AND AL,0C0H
CMP AL,0C0H
JZ NOKEY
MOV HAVEKEY,0FFH
NOKEY:POP AX
RET
DEAL:PUSH AX
PUSH CX
PUSH SI
PUSH DI
MOV SI,OFFSET SECOND
MOV DI,OFFSET BUFFER
MOV AH,00H
MOV CX,0003H
A5:MOV AL,[SI]
AND AL,0FH
XLAT
MOV [DI],AL
INC DI
MOV AL,[SI]
PUSH CX
MOV CL,04H
SHR AL,CL
XLAT
POP CX
MOV [DI],AL
INC DI
INC SI
LOOP A5
POP DI
POP CX
POP AX
RET
CLEAR:PUSH AX
MOV AL,3FH
MOV BUFFER,AL
MOV BUFFER+1,AL
MOV BUFFER+2,AL
MOV BUFFER+3,AL
MOV BUFFER+4,AL
MOV BUFFER+5,AL
POP AX
RET
JUDGE:PUSH AX
PUSH CX
MOV CL,04H
CMP FUNCTION,0FFH
JNZ JD_OUT
CMP B_SET,0FFH
JNZ C_JD
MOV AL,SHU_ZI
SHL SECOND,CL
AND AL,0FH
OR AL,SECOND
MOV SECOND,AL
CALL DEAL
JMP JD_OUT
C_JD:CMP C_SET,0FFH
JNZ D_JD
MOV AL,SHU_ZI
SHL MINUTE,CL
AND AL,0FH
OR AL,MINUTE
MOV MINUTE,AL
CALL DEAL
JMP JD_OUT
D_JD:CMP D_SET,0FFH
JNZ JD_OUT
MOV AL,SHU_ZI
SHL HOUR,CL
AND AL,0FH
OR AL,HOUR
MOV HOUR,AL
CALL DEAL
JD_OUT:POP CX
POP AX
RET
CODE ENDS
END START


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -