首页 论坛 博客
 
查看文章
 
标题:06142008_1447_自己写的cmos时间读取程序【实模式汇编】
2008-06-14 14:57:40

今天把自己写的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】
                                         ----------------原创程序,如需转载或引用,请注明出处!
                                                 -------------------------------------虽然技术含量不高,但也是要写上上面一句话的!


本文引用通告地址:http://pingf.spaces.eaw.com.cn/articles/trackback/item/552
类别:日记 | 浏览(82) 引用(0)
 
网友评论:
发表评论:
姓 名: [ 登陆 ]
内 容:
验证码: