下面的代码实现的功能是实时的显示时间,显示的效果就如同一个电子时钟,这个代码来自于“网易云课堂”讲汇编的一位老师(从0开始,讲的非常的好),这段代码老师写的太好了,贴在下面学习效仿一下:
assume cs:code, ds:data, ss:stack
data segment
db 128 dup(0)
data ends
stack segment stack
db 128 dup(0)
stack ends
code segment
TIME_STYLE db 'YY/MM/DD HH:MM:SS', 0
TIME_CMOS db 9,8,7,4,2,0
start:
mov ax, stack
mov ss, ax
mov sp, 128
call init_reg
call show_clock
mov ax, 4c00h
int 21h
;----------------------------
show_clock:
call show_time_style
showTime:
mov si, OFFSET TIME_CMOS
mov di, 160*10+30*2
mov cx, 6
showDate:
mov al, ds:[si]
out 70h, al
in al, 71h
mov ah, al
shr ah, 1
shr ah, 1
shr ah, 1
shr ah, 1
and al, 00001111b
add ah, 30h
add al, 30h
mov es:[di], ah
mov es:[di+2], al
inc si
add di, 6
loop showDate
jmp showTime
ret
;----------------------------
init_reg:
mov bx, 0b800h
mov es, bx
mov bx, cs
mov ds, bx
ret
;----------------------------
show_string:
push dx
push ds
push es
p