|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
复制代码 |
|