PDA

View Full Version : نحوه خالی کردن Cmos یا باطری سیستم



Morteza Manafpour
شنبه 23 خرداد 1383, 23:20 عصر
با سلام
اگر کسی سورسی در مورد خالی کردن باطری Cmos پیدا کرد ممنون می‌شیم.

Best Programmer
یک شنبه 24 خرداد 1383, 01:16 صبح
بیشتر توضیح بدهبد : اگر سخت افزاری می خواهیا که در دفترچه مادربورد نوشته شده ولی اگر نرم افزاری می خواهید





CSEG SEGMENT PARA PUBLIC 'CODE' ;Start CODE segment
ASSUME CS:CSEG,DS:CSEG,ES:CSEG,SS:CSEG
ORG 100H ;COM file format


CMOS_ADR EQU 70H ;Address port of CMOS
CMOS_DATA EQU 71H ;Data port of CMOS
NUM_BYTES EQU 64 ;Number of bytes in CMOS

MAIN PROC NEAR

MOV CX,NUM_BYTES ;Number of CMOS bytes
GET_NEXT_BYTE:
MOV AH,7 ;Keyboard input W/O echo
INT 21H ;Thru DOS
MOV AH,AL ;Save byte in AH

MOV AL,NUM_BYTES ;Calculate
SUB AL,CL ;Byte to restore
CLI ;No interrupts
OUT CMOS_ADR,AL ;Say this byte is coming
JMP SHORT $+2 ;Delay for slow I/O ports
MOV AL,AH ;Get saved byte
OUT CMOS_DATA,AL ;Write byte
STI ;Allow interrupts
LOOP GET_NEXT_BYTE ;Repeat until done

MOV AH,2CH ;Get time Fn
INT 21H ;Thru DOS
;CH=HH,CL=MM,DH=SS,DL=ss
CALL HEX2BCD ;Convert CH,CL,DH,DL, to BCD
MOV AH,3 ;Set realtime clock Fn
MOV DL,0 ;0 = normal time
INT 1AH ;Thru AT BIOS

MOV AH,2AH ;Get date Fn
INT 21H ;Thru DOS
;CX=year, DH=month, DL=day
MOV AX,CX ;Convert year to
MOV CL,100 ;Century:year format
DIV CL ;AH=year, AL=century
XCHG AH,AL ;Fix order

MOV CX,AX ;Prepare for conversion

CALL HEX2BCD ;Transform CX,DX to BCD

MOV AH,5 ;Set realtime date Fn
INT 1AH ;Thru AT BIOS

RET ;Near return to DOS

MAIN ENDP

HEX2BCD PROC NEAR

PUSH CX ;Save register on stack
MOV AX,DX ;Convert DX first
CALL HB_1 ;Perform first conversion
MOV DX,AX ;Return to DX
POP AX ;Get second arg from stack
HB_1: ;(Fall thru)
MOV CX,0AH ;Set CH=0, CL=A (ten)
XCHG AH,CH ;Set AH=0, save high byte
DIV CL ;Quotient in AL, rem in AH
MOV CL,4
SHL AL,CL ;Convert to BCD

OR AL,AH ;And combine
XCHG AL,CH ;Save

XOR AH,AH ;Zero numerator high byte
MOV CL,0AH
DIV CL ;Divide by ten
MOV CL,4 ;Convert to BCD
SHL AL,CL

OR AH,AL
MOV AL,CH ;Full result in AX
MOV CX,AX ;And CX

RET
HEX2BCD ENDP

CSEG ENDS
END MAIN

اینم کدش.

Morteza Manafpour
یک شنبه 24 خرداد 1383, 20:49 عصر
با تشکر از شما
ولی منظور من تو قسمت Debug بود.

حمیدرضاصادقیان
چهارشنبه 03 تیر 1383, 15:27 عصر
-o 70 10
-o 71 10
-q

Mohsen Yasini
شنبه 21 خرداد 1384, 11:55 صبح
تو Debug بنویسید.

O 70,64
O 71,64