?? q8.asm
字號(hào):
TITLE 8086 Code Template (for EXE file)
; AUTHOR emu8086
; DATE ?
; VERSION 1.00
; FILE ?.ASM
; 8086 Code Template
; 讀取CMOS中的日期和時(shí)間,并顯示之。
#MAKE_EXE#
DSEG SEGMENT 'DATA'
; TODO: add your data here!!!!
DAY DB 'TODAY IS: '
MONTH DB '0' ;設(shè)置日期變量
DB '1'
DB '-'
DATE DB '0'
DB '1'
DB '-'
YEAR DB '2'
DB '0'
DB '0'
DB '0'
DB ' '
TIME DB 'CURRENT TIME IS: '
HOUR DB '0' ;設(shè)置時(shí)間變量
DB '0'
DB ':'
MIN DB '0'
DB '0'
DB ':'
SEC DB '0'
DB '0'
DB '$'
DSEG ENDS
SSEG SEGMENT STACK 'STACK'
DB 256 DUP(?)
SSEG ENDS
CSEG SEGMENT 'CODE'
;*******************************************
START PROC
; Store return address to OS:
PUSH DS
MOV AX, 0
PUSH AX
; set segment registers:
MOV AX, DSEG
MOV DS, AX
MOV ES, AX
; TODO: add your code here!!!!
BEGIN: LEA DI,MONTH
MOV AH,2AH ;讀日期
INT 21H
MOV AL,DH ;月份調(diào)整
CALL ADJPRO
MOV AL,DL ;日期調(diào)整
CALL ADJPRO
MOV AX,CX ;年份調(diào)整
MOV DX,0
MOV BX,100
DIV BX
CALL ADJPRO
MOV AX,DX
DEC DI
CALL ADJPRO
LEA DI,HOUR
MOV AH,2CH ;讀時(shí)間
INT 21H
MOV BH,DH ;在BH設(shè)置時(shí)間刷新變量
MOV AL,CH ;小時(shí)調(diào)整
CALL ADJPRO
MOV AL,CL ;分鐘調(diào)整
CALL ADJPRO
MOV AL,DH ;秒鐘調(diào)整
CALL ADJPRO
LEA DX,DAY ;顯示日期和時(shí)間
MOV AH,09H
INT 21H
MOV DL,13 ;回車(chē)不換行
MOV AH,02H
INT 21H
WAIT: MOV AH,01H ;檢測(cè)是否有鍵盤(pán)輸入
INT 16H
JNZ EXIT
MOV AH,2CH ;無(wú)則重新讀取時(shí)間
INT 21H
CMP DH,BH ;判斷時(shí)間是否需要刷新
JZ WAIT
JMP BEGIN
EXIT: POP AX
POP DS
MOV AH,4CH
INT 21H
START ENDP
ADJPRO PROC ;調(diào)整算法(二進(jìn)制轉(zhuǎn)換成十進(jìn)制)
AND AX,00FFH
MOV BL,10
DIV BL
ADD AL,30H
ADD AH,30H
MOV [DI],AL
INC DI
MOV [DI],AH
INC DI
INC DI
RET
ADJPRO ENDP
; return to operating system:
;*******************************************
CSEG ENDS
END START ; set entry point.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -