|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
无言
- 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: mov ax,data
- mov ds,ax
- mov si,0 ; 定位字符串
- mov di,20 ; 定位偏移地址
- mov bp,26 ; 定位时间信息的位置
- mov cx,6
- l0: mov al,ds:[bp] ; 获取年份
- call get_time
- mov si,ds:[di]
- and si,0FFH ; 数据是8位的,留下低8位
- mov ds:[si],ah
- mov ds:[si+1],al
- inc di
- inc bp
- loop l0
- mov ah,2 ; 置光标
- mov bh,0 ; 第0页
- mov dh,12 ; dh中放行号
- mov dl,30 ; dl中放列号
- int 10h
- mov dx,0
- mov ah,9 ; 在光标位置显示字符串
- int 21h
- mov ax,4c00h
- int 21h
- ; 功能: 返回时间的十进制形式
- ; 参数: (al)=内存位置
- ; 返回: (ah)=数据的十位数
- ; (al)=数据的个位数
- get_time:push cx
- out 70h,al
- in al,71h
- mov ah,al ; al中从CMOS RAM的指定单元中读出的数据
- mov cl,4
- shr ah,cl ; ah中为数据的十位
- and al,00001111b ; al中为数据的个位
- add ah,30h ; 转换为十进制ASCII码
- add al,30h ; 转换为十进制ASCII码
- pop cx
- ret
- code ends
- end start
复制代码 |
|