Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .stack 100
- DISP MACRO STRING
- PUSH AX
- PUSH DX
- MOV AH, 09
- MOV DX, OFFSET STRING
- INT 21H
- POP DX
- POP AX
- DISP ENDM
- .data
- TODAY DB "Today is: ", "$"
- TIME DB ", The Time is: ", "$"
- BS DB 60 DUP(8), "$"
- DAY DW D0, D1, D2, D3, D4, D5, D6
- D0 DB "SUNDAY ", "$"
- D1 DB "MONDAY ", "$"
- D2 DB "TUESDAY ", "$"
- D3 DB "WEDNESDAY ", "$"
- D4 DB "THURSDAY ", "$"
- D5 DB "FRIDAY ", "$"
- D6 DB "SATURDAY ", "$"
- MONTH DW M0, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11
- M0 DB "/January/", "$"
- M1 DB "/February/", "$"
- M2 DB "/March/", "$"
- M3 DB "/April/", "$"
- M4 DB "/May/", "$"
- M5 DB "/June/", "$"
- M6 DB "/July/", "$"
- M7 DB "/August/", "$"
- M8 DB "/September/", "$"
- M9 DB "/October/", "$"
- M10 DB "/November/", "$"
- M11 DB "/December/", "$"
- TEMP DB 10 DUP(?)
- .code
- mov ax, @data
- mov ds, ax
- main:
- ; read the status of the stdin
- mov ah,0bh
- int 21h
- ; FF there is character , 00 there is no character
- cmp al,0ffh
- jnz skip
- ; read character
- mov ah,8
- int 21h
- cmp al,27
- jz exit
- skip:
- call print_all
- jmp main
- exit:
- mov ah, 4ch
- int 21h
- ; PRINTS THE CURRENT TIME, DATE, ..
- print_all proc
- PUSH AX
- PUSH DX
- PUSH SI
- PUSH CX
- DISP TODAY
- ; print day name
- MOV SI, OFFSET DAY
- MOV AH, 02AH
- INT 21H
- MOV AH, 0
- ADD AX, AX
- ADD SI, AX
- MOV AH, 09H
- MOV DX, [SI]
- INT 21H
- ; PRINTS THE DAY OF MONTH
- MOV AH, 02AH
- INT 21H
- xor dh, dh
- mov ax, dx
- call print_dec
- ; PRINT MONTH
- MOV SI, OFFSET MONTH
- MOV AH, 02AH
- INT 21H
- MOV DL, DH
- XOR DH, DH
- DEC DX
- ADD DX, DX
- ADD SI, DX
- MOV AH, 09H
- MOV DX, [SI]
- INT 21H
- ; PRINTS THE YEAR
- MOV AH, 02AH
- INT 21H
- MOV AX, CX
- CALL PRINT_DEC
- DISP TIME
- ; PRINTS HOUR
- MOV AH, 2CH
- INT 21H
- MOV AL, CH
- XOR AH, AH
- CALL PRINT_DEC
- MOV DL, ":"
- MOV AH, 2
- INT 21H
- ; PRINTS MINUTE
- MOV AH, 2CH
- INT 21H
- MOV AL, CL
- XOR AH, AH
- CALL PRINT_DEC
- MOV DL, ":"
- MOV AH, 2
- INT 21H
- ; PRINTS SECOND
- MOV AH, 2CH
- INT 21H
- MOV AL, DH
- XOR AH, AH
- CALL PRINT_DEC
- MOV CX, 58
- MOV DX, OFFSET BS
- MOV AH, 9
- INT 21H
- POP CX
- POP SI
- POP DX
- POP AX
- ret
- endp
- ; PRINTS DECIMAL NUMBER SOTRED IN AX
- print_dec proc
- MOV SI, 0
- MOV BX, 10
- MOV CX, 0
- DISPX1:
- MOV DX, 0
- DIV BX
- MOV TEMP[SI], DL
- INC SI
- INC CX
- ADD AX, 00
- JNZ DISPX1
- DEC SI
- DISPX2:
- MOV DL, TEMP[SI]
- MOV AH, 02H
- ADD DL, 30H
- INT 21H
- DEC SI
- LOOP DISPX2
- ret
- endp
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement