請問dump cmos 所有值的方法?請多多指教

qoocc1 2008-12-04 09:39:10
跑出來都是不正確的值,請多多指教


.model small
code segment
assume cs:code,ds:code
org 100h
data segment
db 256 dup ('$')
data ends
start:
mov ax,data
mov ds,ax


mov al,1 ;year+mouth+day
mov cx,256
cmos1:


call CMOS00
add al,1
loop cmos1
;----------------------------------------------------------------------------------------






mov ax,4ch
int 21h
;---------------------子程序: changeBCD----------------------------------------------------
;子程序: changeBCD
;功能: 從CMOS ROM讀取BCD碼,並轉化為十進制字符。
;參數: CMOS ROM的(bl)號單元
;返回: 返回一個字符串,首地址為ds:si
CMOS00:
push cx

mov al,bl
out 70h,al

in al,71h
mov ah,al

mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h
mov ah,2
int 21h
ret

code ends
.stack
end start
...全文
168 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterkill 2008-12-05
  • 打赏
  • 举报
回复
LS的
- -#
xtdumpling 2008-12-04
  • 打赏
  • 举报
回复
再小改一下:
.model small
.stack 100h
.code
org 100h
start:
xor bx,bx
mov cx,256
cmos1:
call CMOS00
inc bx
test bx,0fh
jnz @f
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
@@:
loop cmos1
mov ah,4ch
int 21h

CMOS00 proc
push cx
mov ax,bx
or al,80h
out 70h,al
jmp $+2
jmp $+2
in al,71h

mov ah,al
mov cl,4
shr ah,cl
mov cl,al
.if ah >= 10
add ah,'A'-10
.else
add ah,'0'
.endif
mov dl,ah
mov ah,2
int 21h

and cl,00001111b
.if cl >= 10
add cl,'A'-10
.else
add cl,'0'
.endif
mov dl,cl
mov ah,2
int 21h

mov dl,' ' ; 输出一个空格,以免所有数据挨在一起不便查看
mov ah,2
int 21h
pop cx
ret
CMOS00 endp

end start

不过貌似Windwos下是得不到正确的值的
cnzdgs 2008-12-04
  • 打赏
  • 举报
回复
错还真不少,帮你改一下,再试试吧:
.model tiny,c
.code
org 100h
start:
xor bx,bx
mov cx,256
cmos1:
call CMOS00
inc bx
loop cmos1
mov ah,4ch
int 21h

CMOS00 proc
push cx
mov ax,bx
out 70h,al
in al,71h
mov ah,al
and al,00001111b
.if al >= 10
add al,'A'-10
.else
add al,'0'
.endif
mov cl,4
shr ah,cl
.if ah >= 10
add ah,'A'-10
.else
add ah,'0'
mov dx,ax
mov ah,2
int 21h
mov dl,dh
mov ah,2
int 21h
mov dl,' ' ; 输出一个空格,以免所有数据挨在一起不便查看
mov ah,2
int 21h
pop cx
ret
CMOS00 endp

end start
BAYNPU 2008-12-04
  • 打赏
  • 举报
回复
code ends
.stack ;把这句指令删掉,程序可以显示256个字符.
end start

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧