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

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

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

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

这是一组独立的数据区,通过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


分享给朋友:

相关文章

阿里云后台的一个身份证信息查询工具。

阿里云后台的一个身份证信息查询工具。

注:此软件时效性已过,只在此陈列,没有什么意义。工具主图形界面有时会欠费,查不了时,请付1分钱给阿里云。下载地址:个人身份证阿里云查询.rar...

Radasm 编辑器配置VC2010下的Opencv 环境。

Radasm 编辑器配置VC2010下的Opencv 环境。

Opencv 下载地址:https://opencv.org/releases.html备用下载地址1:https://blog.csdn.net/yanzi1225627/article/detai...

关于DOSBOX的简单说明。

关于DOSBOX的简单说明。

linux 下的共享软件DOSBOX 在有些版本的linux 中不能使用鼠标。网上说明要换声卡地址和中断,连接鼠标端口才可以使用。 曾经设置过,可以使用参数不记得。有个解决方法。这是软件问题。 先卸载...

USB设备的插入机制与USB驱动故障。

USB设备的插入机制与USB驱动故障。

USB主机检测设备,首先在USB集线器的每个端口的D+,D-上,分别接了一个15K欧姆的下拉电阻到地。集线器端口为空时,被这两个电阻拉低了电平。在USB设备端,D+或者D- 上接了上拉1.5K电阻。全...

关于编译器不愿意说的那些事。

关于编译器不愿意说的那些事。

计算机发展了好多年。当中也不泛有很多对程序的爱好。很多人不是专业水平,也不是在算法类中特别出众,就是喜欢而已。好像认为自己就只那个水平,或者为一些调试不通过发愁。可以说,实际上都不是你的错,是编译器的...

谈谈引导程序的想法。

谈谈引导程序的想法。

当个人电脑一出现就有了磁盘系统,不管是软盘,光盘,硬盘,计算机要应用操作系统就要引导,引导程序一段代码。这引导代码很小,在第一个磁盘的扇区上,平时没什么人注意它。这段代码损坏一个字节,都会造成计算机瘫...