马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 yundi 于 2016-1-29 18:27 编辑
实验14
哈哈
;以“年/月/日 时:分:秒”的格式显示当前日期、时间
assume cs:code
data segment
db 'yy/mm/dd hh:mm:ss','#';#换成美元符$
sf db 0,3,6,9,12,15;保存上一行格式串的偏移位置
rf db 9,8,7,4,2,0;保存cmos ram端口下的n号单元
data ends
code segment
start:
mov ax,data
mov ds,ax;设数据段
mov cx,6;循环次数
mov si,0;用偏移取到sf,rf的数据
s1:
;循环取出cmos ram第n号单元的信息
call getinfo
;取到的值转成字符并保存到指定位置ds:[bx]
call saveinfo;调用时ah al 保存着getinfo取得的信息
inc si
loop s1
;循环结束
;在屏幕指定位置显示字符串,用中断方式
mov dx,0
mov ah,9
int 21h
mov ax,4c00h
int 21h
getinfo:
mov al,byte ptr ds:[offset rf+si];要读的单元号n=ds:[offset rf+si]
out 70h,al
in al,71h
mov ah,al
ret
saveinfo:
xor bh,bh
mov bl,byte ptr ds:[offset sf+si];取得格式字符串要修改的位置的偏移值,存到bx
;在ah中处理高位,
push cx
mov cl,4
shr ah,cl
add ah,30h
pop cx
mov ds:[bx],ah;保存xx的高位到格式字符串中
;在al中处理低位,
and al,00001111b
add al,30h
mov ds:[bx+1],al;保存xx的低位到格式字符串中
ret
code ends
end start
|