?? shijian..txt
字號(hào):
CODE SEGMENTk)8
ASSUME CS:CODE,DS:CODE,ES:CODE
TIMEASC DB "00:00:",' 0"'
TIMEBUF DB 6 DUP (0)
OLD08H DD ?
LOCATE DW 0
NEW08H PROC FAR
CLI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH DS
PUSH ES
;
PUSH CS
POP DS
PUSH CS
POP ES ; 這一段又進(jìn)棧又出棧,是什么作用啊?
CLD
RETRY: MOV DI,OFFSET TIMEBUF
MOV AH,0 ;這一段是什么作用啊
RE_READ: MOV AL,AH
OUT 70H,AL ;為什么要輸出給端口70H,后面又是輸入71H
IN AL,71H
CMP AL,TIMEBUF
JZ EXIT
STOSB
INC AH
CMP AH,6
JNZ RE_READ
MOV DI,OFFSET TIMEASC+6
MOV AH,TIMEBUF+0
CALL BCD_TO_ASC
MOV DI,OFFSET TIMEASC+3
MOV AH,TIMEBUF+2
CALL BCD_TO_ASC
MOV DI,OFFSET TIMEASC+3
MOV AH,TIMEBUF+2
CALL BCD_TO_ASC
MOV DI,OFFSET TIMEASC+0
MOV AH,TIMEBUF+4
CALL BCD_TO_ASC
MOV AH,3
MOV BH,0
INT 10H;這段的功能是什么啊
MOV LOCATE,DX
MOV DX,0047H
MOV SI,OFFSET TIMEASC
MOV CX,9
CALL DISP_STRING
MOV AL,2
MOV BH,0
MOV DX,LOCATE
INT 10H
EXIT: PUSHF
CALL CS:DWORD PTR OLD08H
POP ES
POP DS
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
IRET
NEW08H ENDP
DISP_STRING PROC NEAR
PUSH AX
PUSH BX
PUSH CX
MOV AH,2
MOV BH,0
INT 10H
MOV BX,0007H
RE_DISP: LODSB
MOV AH,0EH
PUSH CX
MOV CX,1
INT 10H
POP CX
LOOP RE_DISP
POP CX
POP BX
POP AX ;這一段是如何做到顯示時(shí)間的?
RET
DISP_STRING ENDP
BCD_TO_ASC PROC NEAR
PUSH CX
MOV AL,AH
MOV CL,4
SHR AL,CL
OR AL,30H
STOSB
MOV AL,AH
AND AL,0FH
OR AL,30H
STOSB
POP CX
RET
BCD_TO_ASC ENDP ; 這段bcd的轉(zhuǎn)化思路是怎樣的?
SET08H: PUSH CS
POP DS
MOV AX,3508H
INT 21H|
MOV SI,OFFSET OLD08H
MOV [SI],BX
MOV [SI+2],ES
MOV DX,OFFSET NEW08H
MOV AX,2508H
INT 21H
MOV DX,OFFSET SET08H
ADD DX,260
INT 27H
CODE ENDS
END SET08H
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -