|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近随手写的练习程序,给大家分享下,多谢大家的支持啊!
- ;******************************************
- ; 程序功能:读取CMOS时间并显示
- ; CMOS读写方法如下:
- ; 1.向地址端口70H写入要访问的单元地址
- ; 2.从71H端口读出数据
- ; 注意:CMOS中存放的是BCD码
- ; 数码: 0 1 2 3 4
- ; BCD码:0000 0001 0010 0011 0100
- ; 数码: 5 6 7 8 9
- ; BCD码:0101 0110 0111 1000 1001
- ; CMOS RAM中时间格式如下:
- ; 秒:00H
- ; 分:02H
- ; 时:04H
- ; 日:07H
- ; 月:08H
- ; 年:09H
- ; BCD码转ASCII码:BCD + 30H = ASCII
- ;******************************************
- assume cs:code,ds:data,ss:stack
- stack segment
- db 16 dup(0)
- stack ends
- data segment
- ;格式: 年 月 日 时 分 秒
- db 0,0,'-',0,0,'-',0,0,' ',0,0,':',0,0,':',0,0,'运行效果图如下:
- ;CMOS端口号序列
- db 09h,08h,07h,04h,02h,00h
- data ends
- code segment
- start: mov ax,stack ;栈段初始化
- mov ss,ax
- mov sp,10h
-
- mov ax,data ;数据段初始化
- mov ds,ax
-
- ;数据段偏移量如下:
- ; L H
- ;年:0, 1
- ;月:3, 4
- ;日:6, 7
- ;时:9, 10
- ;分:12,13
- ;秒:15,16
- ;L->si H->di
- mov si,0
- mov di,1
- xor bx,bx
- mov bx,18
- mov cx,6
- s: mov al,ds:[bx]
- out 70h,al
- in al,71h
- mov ah,al
- push cx
- mov cl,4
- shr ah,cl
- pop cx
- and al,00001111b
- add ah,30h
- add al,30h
- mov byte ptr ds:[si],ah
- mov byte ptr ds:[di],al
- inc bx
- add si,3
- add di,3
- loop s
-
- mov dx,offset ds:[0] ;设置字符串首地址
- call show
-
- mov ah,4ch ;返回OS
- mov al,0h ;返回值:0
- int 21h
- ;*********************
- ; 子程序:显示字符
- ; 入口参数:DS:DX=串首址
- ; 返回值:无
- ;*********************
- show: push ax
- mov ah,09h
- int 21h
- pop ax
- ret
- code ends
- end start
复制代码
运行效果图如下:
运行结果
|
|