主题:高手求教!!!(急)
STACK SEGMENT STACK 'STACK'
DB 1024 DUP (0)
STACK ENDS
DATA SEGMENT
TIMEA EQU THIS BYTE
TH DB (?)
TW DB (?)
TS DB (?)
ROW_REG DB (?)
COL_REG DB (?)
DATA ENDS
VIDEO SEGMENT AT 0B800H
WD_BUFFER LABEL WORD
V_BUFF DB 25*80*2 DUP (?)
VIDEO ENDS
PROGRAM SEGMENT
MAIN PROC FAR
ASSUME CS:PROGRAM,DS:DATA,SS:STACK,ES:VIDEO
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,0B800H
MOV DS,AX
MOV CX,4000
MOV BX,0 ;ERROR OR NOT?
CLRM: MOV BYTE PTR [BX],0
INC BX
LOOP CLRM
MOV AX,DATA
MOV DS,AX
MOV AX,VIDEO
MOV ES,AX
MOV AH,2
INT 1AH
MOV TH,CH
MOV TW,CL
MOV TS,DH
MOV CX,3
MOV BX,0
SHOWTIME: PUSH CX
MOV AL,TIMEA[BX]
MOV AL,0F0H
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV AH,00001111B
MOV CL,00
MOV CH,24
CALL DISPLAY
MOV AL,TIMEA[BX]
AND AL,0FH
ADD AL,30H
INC CL
CALL DISPLAY
INC CL
CALL DISPLAY
INC CL
MOV AL,3AH
MOV AH,01011111B
CALL DISPLAY
INC BX
POP CX
LOOP SHOWTIME
RET
MAIN ENDP
DISPLAY PROC NEAR ;address of display
;buffer=row*80*2+col*2
PUSH BX
PUSH CX
PUSH AX
MOV AL,160
MUL CH ;ROW*80*2(160)=AX
MOV BL,CL
ROL BL,1 ;BL*2
MOV BH,0
ADD BX,AX
POP AX
MOV ES:[WD_BUFFER+BX],AX
POP CX
POP BX
RET
DISPLAY ENDP
PROGRAM ENDS
END START
DB 1024 DUP (0)
STACK ENDS
DATA SEGMENT
TIMEA EQU THIS BYTE
TH DB (?)
TW DB (?)
TS DB (?)
ROW_REG DB (?)
COL_REG DB (?)
DATA ENDS
VIDEO SEGMENT AT 0B800H
WD_BUFFER LABEL WORD
V_BUFF DB 25*80*2 DUP (?)
VIDEO ENDS
PROGRAM SEGMENT
MAIN PROC FAR
ASSUME CS:PROGRAM,DS:DATA,SS:STACK,ES:VIDEO
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,0B800H
MOV DS,AX
MOV CX,4000
MOV BX,0 ;ERROR OR NOT?
CLRM: MOV BYTE PTR [BX],0
INC BX
LOOP CLRM
MOV AX,DATA
MOV DS,AX
MOV AX,VIDEO
MOV ES,AX
MOV AH,2
INT 1AH
MOV TH,CH
MOV TW,CL
MOV TS,DH
MOV CX,3
MOV BX,0
SHOWTIME: PUSH CX
MOV AL,TIMEA[BX]
MOV AL,0F0H
MOV CL,4
SHR AL,CL
ADD AL,30H
MOV AH,00001111B
MOV CL,00
MOV CH,24
CALL DISPLAY
MOV AL,TIMEA[BX]
AND AL,0FH
ADD AL,30H
INC CL
CALL DISPLAY
INC CL
CALL DISPLAY
INC CL
MOV AL,3AH
MOV AH,01011111B
CALL DISPLAY
INC BX
POP CX
LOOP SHOWTIME
RET
MAIN ENDP
DISPLAY PROC NEAR ;address of display
;buffer=row*80*2+col*2
PUSH BX
PUSH CX
PUSH AX
MOV AL,160
MUL CH ;ROW*80*2(160)=AX
MOV BL,CL
ROL BL,1 ;BL*2
MOV BH,0
ADD BX,AX
POP AX
MOV ES:[WD_BUFFER+BX],AX
POP CX
POP BX
RET
DISPLAY ENDP
PROGRAM ENDS
END START