当前位置:首页 > 我的程序 > 正文内容

贴一个CMOS时钟硬件的RTC内容读取

Peirre2年前 (2023-03-27)我的程序268

这段代码是电脑主板电池附近的模块。

这是一组独立的数据区,通过IO读取,有两段。

其中一组备用的有些主板有,有些主板是不可读的,两份数据没意义。

上一部分可寻找以前的文件例子和源码。

程序编译后在DOSBOX下运行正常,使用32位以上的指令非法。

data segment
_title db 'CMOS Reader ver 1.00',0dh,0ah,
'Author Jacky fu',0dh,0ah,
'Base CMOS Buffer',0dh,0ah,
' 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F',0dh,0ah,
' -----------------------------------------------',0dh,0ah,'$'
counter db 00h
_high db 'High CMOS Buffer',0dh,0ah,'$'
data ends

code segment
assume cs:code,ds:data,es:data
start:

mov ax,data		; 数据段定义
mov ds,ax
xor ax,ax

lea dx,_title		;显示程序提示
mov ah,09h
int 21h

mov cx,00h
loop2:
mov dl,cl
call printdl
mov dl,':'
mov ah,02h
int 21h
call fun2
inc cx
cmp cl,10h
jl loop2

lea dx,_high
mov ah,09h
int 21h

mov al,056h
mov dx,0cd6h
out dx,al
mov dx,0cd7h
in ax,dx
or ax,1000000000000b
out dx,ax

mov cx,00h
mov counter,00h
loop3:
mov dl,cl
call printdl
mov dl,':'
mov ah,02h
int 21h
call fun3
inc cx
cmp cl,10h
jl loop3

mov al,0eh
out 70,al
in al,71
mov dl,al
call printdl 

mov ah,4ch
int 21h

fun4 proc near
push dx
push ax

mov dx,72h
mov al,counter
out dx,al
mov dx,73h
in al,dx
mov dl,al
call printdl
add counter,1

pop dx
pop ax
ret
fun4 endp

fun3 proc near
push cx
push dx
push ax
mov cl,00h
loop4:
call fun4
inc cl
cmp cl,10h
jl loop4
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
int 21h
pop ax
pop dx
pop cx
ret
fun3 endp

fun2 proc near
push cx
push dx
push ax
mov cl,00h
loop1:
call fun1
inc cl
cmp cl,10h
jl loop1
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
int 21h
pop ax
pop dx
pop cx
ret
fun2 endp

fun1 proc near
push dx
push ax

;mov dx,70h
;mov al,counter
;out dx,al
;mov dx,71h
;in al,dx
;mov dl,al
;call printdl
;add counter,1

mov al,counter
;mov dx,70h
out 70h,al
in al,71h
mov dl,al
call printdl 
inc counter

pop dx
pop ax
ret
fun1 endp

;input dl such as xxh,out put as xxh
printdl proc near
push ax
push cx

mov al,dl
mov cl,04h
sar dl,cl
and dl,0fh
call printdlhalf

mov dl,al
and dl,0fh
call printdlhalf

mov dl,' '
mov ah,02h
int 21h

pop cx
pop ax
ret
printdl endp

printdlhalf proc near
push ax
cmp dl,09h
ja largerthan9
add dl,30h
jmp print
largerthan9:
add dl,37h
print:
mov ah,02h
int 21h
pop ax
ret
printdlhalf endp
code ends

end start

9417512.jpg

注:RTC是个硬件芯片,有时集成在南桥中,先的文章源码有注解,留意了。

http://www.nantz.top/zblog/?id=157


分享给朋友:

相关文章

多普勒音速偏移演示计算器。

多普勒音速偏移演示计算器。

多普勒偏移计算器,应用与雷达测距计算。链接:https://pan.baidu.com/s/1i4FkchZ  密码: mq7x...

发布一个雷达显示程序,仅测试,有问题请交流。

发布一个雷达显示程序,仅测试,有问题请交流。

下载地址:雷达显示程序.rar这个雷达显示程序用来显示雷达数据的。使用易语言编写。数据部分还没完善。欢迎提意见。...

关于ch341驱动,联动3D打印机USB串口通讯.

关于ch341驱动,联动3D打印机USB串口通讯.

手上有个3D打印机,搬家的原因,好久没用.天气热了,打印温度很适合,正好可以使用.又过了一年.发现linux 版本内核已经升级,和原来的系统不一样了. 按照3D打印机的说明,和寻找它的程序,原来的方法...

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

以前的DOS游戏《仙剑奇侠传》是炙制人口的一个很容易上手的游戏。这个游戏流行了很多年。很多人在玩过多年以后,重温旧梦,回味游戏之中的情感。这个游戏再版了很多次了。现在linux 下也可以直接玩这个游戏...

显微镜标定计算器,只发此处,留用备查。

显微镜标定计算器,只发此处,留用备查。

易语言写的标定计算器标定计算器.rar只限光学实验显微镜用。知道怎么用的可以选择下载。有问题请留言。显微镜标定计算器是来原于,电子目镜的标定在软件上显示很不正确。此程序只是精度高一点。这个程序是用22...

刚刚上手的一个汇编程序nasm。

刚刚上手的一个汇编程序nasm。

今天使用了masm32软件,总有使不上劲的感觉。因为intel 指令集很多都没有,自己想测试一下,一边翻资料,一边使用。windows 编程好用,但是指令不全,心里总是感觉差一点。又不是编大程序,只是...