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

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

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

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

这是一组独立的数据区,通过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://nantz.top/zblog/?id=157


分享给朋友:

相关文章

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

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

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

几种在linux中的调试器的编译结果。

几种在linux中的调试器的编译结果。

很多人用源码进行编译,会不成功,原因有很多,我现在讲讲linux 下必有的gdb调试器来说明一下。我用的linux 系统 是 优麒麟 19.04.10.1 加强版,属于试用版。随系统自带的gdb是8....

linux 下的汉字输入法.

linux 下的汉字输入法.

各位老师,才子,同事们好!有很多初级玩linux的同学都会碰到一个难题,也就是在linux 下的汉字输入法.这个问题一直困绕了linux 使用者多年.我还好,每次都使用正常.现在说说心得笔记就可以了....

linux mint 20 下编译最新内核所添加的文件。

linux mint 20 下编译最新内核所添加的文件。

linux mint 20 下编译最新内核文件所需要的两个文件包。sudo apt-get install libncurses5-devsudo apt-get install libssl-dev...

linux 下的《仙剑奇侠传》

linux 下的《仙剑奇侠传》

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

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

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

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