参考答案
assume cs:codeseg
codeseg segment
separator:
db ‘/‘, ‘/‘, ‘ ‘, ‘:‘, ‘:‘
date_index:
db 9, 8, 7, 4, 2, 0 ; 这几个位置没啥规律,耽误我写循环
start:
mov ax, cs
mov ds, ax
mov si, offset date_index
mov bp, offset separator
mov ax, 0B800H
mov es, ax
mov di, 0
mov cx, 6
loop_s0_start:
; 提取日期的高位与低位
push cx
mov al, ds:[si]
out 70H, al
in al, 71H
mov ah, al
mov cl, 4
shr ah, cl ; 高位
add ah, 30H
and al, 00001111B ; 地位
add al, 30H
pop cx
; 显示日期
mov dh, 2 ; 用绿色,辨识度高
mov dl, ah ; 显示十位
mov es:[di], dx
mov dl, al ; 显示各位
mov es:[di+2], dx
; 显示分割符号
cmp cx, 1 ; 最后循环没有分割符号显示,直接完成即可
je loop_s0_end
mov dl, ds:[bp]
mov es:[di+4], dx
add si, 1
add bp, 1
add di, 6
loop loop_s0_start
loop_s0_end:
mov ax, 4C00H
int 21H
codeseg ends
end start