📄 date1.txt
字号:
; Date Program.
title date
data segment
; add your data here!
Title1 db "Today is :$"
OYear db 4 dup(?)
db "-"
OMonth db 2 dup(?)
db "-"
ODay db 2 dup(?)
db 0DH,0AH,"$"
Title2 db "Please input new date(format:YYYY-MM-DD):$"
NDate db 11
db ?
NYear db 4 dup(?)
db "-"
NMonth db 2 dup(?)
db "-"
NDay db 2 dup(?)
ends
stack segment
dw 128 dup(0)
ends
code segment
BCDAsc proc near
mov al, ah
and al, 0fh
or al, 30h
ror ah, 4
and ah, 0fh
or ah, 30h
mov [si],ax
ret
BCDAsc endp
AscBCD proc near
mov ax, [si]
and ax, 0f0fh
ror ah, 4
add ah, al
ret
AscBCD endp
start:
; set segment registers:
mov ax, data
mov ds, ax
mov es, ax
; display Title1
lea dx, Title1
mov ah, 09h
int 21h
; get old date
mov ah, 2ah
int 21h
; save old date
mov ah, ch ; Century
lea si, OYear
call BCDAsc
mov ah, cl ; Year
inc si
inc si
call BCDAsc
mov ah, dh ; Month
lea si, OMonth
call BCDAsc
mov ah, dl ; Day
lea si, ODay
call BCDAsc
; display Old Date
lea dx, OYear
mov ah, 09h
int 21h
; display Title2
lea dx, Title2
mov ah, 09h
int 21h
; input new date
mov dx, offset NDate
mov ah, 0ah
int 21h
; set new date
lea si, NYear ; Century
call AscBCD
mov ch, ah
inc si ; Year
inc si
call AscBCD
mov cl, ah
lea si, NMonth ; Month
call AscBCD
mov dh, ah
lea si, NDay ; Day
call AscBCD
mov dl, ah
mov ah, 2bh
int 21h
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start ; set entry point and stop the assembler.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -