今天把自己写的cmos时间读取的实模式汇编稍微修改了下,呵,主要是调整了下显示格式,呵,至少看上去好多了

下面,源码也一并发上来,
DATA SEGMENT
CMOS_INDEX DB 0,2,4,6,7,8,9,50
CMOS_DATA DW 8 DUP(?)
SUN DB 'Sun','$'
MON DB 'Mon','$'
TUE DB 'Tue','$'
WED DB 'Wed','$'
THU DB 'Thu','$'
FRI DB 'Fri','$'
SAT DB 'Sat','$'
NOTE DB 'Note:Press any key to exit!',10,13,'$'
NOTE2 DB 'Now,the time is,',10,13,'$'
AUTHOR DB 10,13,'This program is written by Pingf!',10,13,'$'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA
MOV AX,DATA
MOV DS,AX
MOV CX,8
MOV AH,9
LEA DX,NOTE
INT 21H
LEA DX,NOTE2
INT 21H
READ:
MOV SI,CX
MOV AL,BYTE PTR CMOS_INDEX[SI-1]
OUT 70H,AL
IN AL,71H
MOV AH,AL;P
SHR AL,4;i
AND AH,0FH;n
ADD AL,30H;g
ADD AH,30H;f
NEG SI;'s
ADD SI,8
MOV BX,SI;program
MOV WORD PTR CMOS_DATA[SI][BX],AX
MOV AH,1
INT 16H
JNZ EXIT
LOOP READ
CALL PRINTF
MOV CX,8
JMP READ
EXIT:
MOV AH,2
MOV DL,10
INT 21H
MOV AH,9
LEA DX,AUTHOR
INT 21H
MOV AX,4C00H;pingf's program
INT 21H
MAIN ENDP
PRINTF PROC
MOV CX,14
MOV SI,0
PRINT:
MOV AH,2
MOV DL,BYTE PTR CMOS_DATA[SI]
INT 21H
WEEK_JUMP:
INC SI
CMP SI,4
JNZ NEXT_6
MOV AH,2
MOV DL,'/'
INT 21H
JMP PRINT
NEXT_6:
CMP SI,6
JNZ NEXT_8
MOV AH,2
MOV DL,'/'
INT 21H
JMP PRINT
NEXT_8:
CMP SI,8
JNZ NEXT_12
MOV AH,2
MOV DL,' '
INT 21H
INC SI
MOV BX,SI
CALL WEEK_DISPLAY
JMP WEEK_JUMP
NEXT_12:
CMP SI,12
JNZ NEXT_14
MOV AH,2
MOV DL,':'
INT 21H
JMP PRINT
NEXT_14:
CMP SI,14
JNZ NEXT_16
MOV AH,2
MOV DL,':'
INT 21H
JMP PRINT
NEXT_16:
CMP SI,16
JZ NEXT
LOOP PRINT
NEXT:
MOV AH,2
MOV DL,13
INT 21H
RET
PRINTF ENDP
WEEK_DISPLAY PROC
MOV SI,BX
CMP BYTE PTR CMOS_DATA[SI],31H;T
JZ SUNDAY
CMP BYTE PTR CMOS_DATA[SI],32H;h
JZ MONDAY
CMP BYTE PTR CMOS_DATA[SI],33H;i
JZ TUESDAY
CMP BYTE PTR CMOS_DATA[SI],34H;s
JZ WEDNESDAY
CMP BYTE PTR CMOS_DATA[SI],35H;
JZ THURSDAY
CMP BYTE PTR CMOS_DATA[SI],36H
JZ FRIDAY
CMP BYTE PTR CMOS_DATA[SI],37H
JZ SATURDAY
; program
SUNDAY:
MOV AH,9
LEA DX,SUN
INT 21H
MOV AH,2
MOV DL,' ';i
INT 21H
JMP WEEK_END
MONDAY:
MOV AH,9
LEA DX,MON
INT 21H
MOV AH,2
MOV DL,' ';s
INT 21H
JMP WEEK_END
TUESDAY:
MOV AH,9
LEA DX,TUE
INT 21H
MOV AH,2
MOV DL,' ';
INT 21H
JMP WEEK_END;written
WEDNESDAY:
MOV AH,9
LEA DX,WED
INT 21H
MOV AH,2
MOV DL,' ';
INT 21H
JMP WEEK_END
THURSDAY:
MOV AH,9
LEA DX,THU
INT 21H
MOV AH,2
MOV DL,' ';b
INT 21H
JMP WEEK_END
FRIDAY:
MOV AH,9
LEA DX,FRI
INT 21H
MOV AH,2
MOV DL,' ';y
INT 21H
JMP WEEK_END
SATURDAY:
MOV AH,9
LEA DX,SAT
INT 21H
MOV AH,2
MOV DL,' ';
INT 21H
WEEK_END:;Ping
RET;f
WEEK_DISPLAY ENDP
CODE ENDS
END MAIN
-----------------------------------------------------------平繁【Pingf】
----------------原创程序,如需转载或引用,请注明出处!
-------------------------------------虽然技术含量不高,但也是要写上上面一句话的!