实验14
无言assume cs:code
data segment
db '2000/00/00 00:00:00','$'
db 2,5,8,11,14,17 ; 对应年、月、日、时、分、秒的偏移地址
db 9,8,7,4,2,0 ; 对应年、月、日、时、分、秒在CMOS RAM中的位置
data ends
code segment
start: movax,data
movds,ax
movsi,0 ; 定位字符串
movdi,20 ; 定位偏移地址
movbp,26 ; 定位时间信息的位置
movcx,6
l0: moval,ds: ; 获取年份
call get_time
movsi,ds:
andsi,0FFH ; 数据是8位的,留下低8位
movds:,ah
movds:,al
incdi
incbp
loop l0
movah,2 ; 置光标
movbh,0 ; 第0页
movdh,12 ; dh中放行号
movdl,30 ; dl中放列号
int10h
movdx,0
movah,9 ; 在光标位置显示字符串
int21h
movax,4c00h
int21h
; 功能: 返回时间的十进制形式
; 参数: (al)=内存位置
; 返回: (ah)=数据的十位数
; (al)=数据的个位数
get_time:push cx
out70h,al
in al,71h
movah,al ; al中从CMOS RAM的指定单元中读出的数据
movcl,4
shrah,cl ; ah中为数据的十位
andal,00001111b ; al中为数据的个位
addah,30h ; 转换为十进制ASCII码
addal,30h ; 转换为十进制ASCII码
popcx
ret
code ends
end start
页:
[1]