نمایش نتایج 1 تا 5 از 5

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

  1. #1

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

    با سلام
    اگر کسی سورسی در مورد خالی کردن باطری Cmos پیدا کرد ممنون می‌شیم.

  2. #2
    بیشتر توضیح بدهبد : اگر سخت افزاری می خواهیا که در دفترچه مادربورد نوشته شده ولی اگر نرم افزاری می خواهید




    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

    اینم کدش.

  3. #3
    با تشکر از شما
    ولی منظور من تو قسمت Debug بود.

  4. #4

  5. #5
    تو Debug بنویسید.

    O 70,64
    O 71,64

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •