前言:本实验为王爽老师的《汇编语言》第三版中的实验14(p271)
实验环境:DOSBox 0.74-3
实验任务:
编程,以“年/月/日 时:分:秒”的格式,显示当前的日期、时间。
注意:CMOS RAM 中存储着系统的配置信息,除了保存时间信息的单元外,不要向其它的单元中写入内容,否则将引起一些系统错误。
程序代码:
assume cs:code
data segment
db 9,'/',8,'/',7,32,4,':',2,':',0,32 ;空格的ASCII码32
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0 ;ds:si指向相关数据
mov ax,0b800h
mov es,ax
mov di,10*160+40 ;es:di指向日期显示的地址
mov cx,6
s: push cx ;保存cx原始数据
mov al,[si] ;存放日期的单元
out 70h,al ;将时间对应的单元写入地址端口
in al,71h ;从数据端口读出时间数据,保存在al中
;转换bcd码
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
mov es:[di],ah ;ah存储相应时间的十位
mov es:[di+2],al ;al存储相应时间的个位
mov al,[si+1] ;ds:[si+1]指向时间后的字符
mov es:[di+4],al
mov ch,00000010b ;设置样式
mov es:[di+1],ch
mov es:[di+3],ch
mov es:[di+5],ch
add si,2 ;si指向下一个时间位
add di,6
pop cx
loop s
mov ax,4c00h
int 21h
code ends
end start
运行结果: