Работа с CMOS памятью

Материал из Wiki.

Имеет несколько стандартных портов:
70h - регистр адреса
71h - регистр данных
И еще несколько..

Read_CMOS  proc          
out 70h, al  ; CMOS Memory:
 ; used by real-time clock
jcxz $+2  ; Jump if CX is 0
jcxz $+2  ; Jump if CX is 0
in al, 71h  ; CMOS Memory
jcxz $+2  ; Jump if CX is 0
jcxz $+2  ; Jump if CX is 0
retn  ; Return from Procedure
Read_CMOS endp
Write_CMOS  proc          
out 70h, al  ; CMOS Memory:
 ; used by real-time clock
jcxz $+2  ; Jump if CX is 0
jcxz $+2  ; Jump if CX is 0
out 71h, ah  ; CMOS Memory
jcxz $+2  ; Jump if CX is 0
jcxz $+2  ; Jump if CX is 0
retn  ; Return from Procedure
Write_CMOS endp

Оператор jcxz $+2 организует программную задержку в несколько миллисекунд для корректного чтения/записи CMOS.
С такой же целью могут быть вставлены операторы mov ax, ax или out EBh, ax.

Ещё одно замечание: часто можно видеть что-то типа:
mov al, 8Fh          
out 70h, al ; CMOS Memory:
; used by real-time clock
jcxz $+2 ; Jump if CX is 0
jcxz $+2 ; Jump if CX is 0
in al, 71h ; CMOS Memory
jcxz $+2 ; Jump if CX is 0
jcxz $+2 ; Jump if CX is 0
retn ; Return from Procedure
Это не есть чтение ячейки 8Fh. Это есть чтение ячейки 0Fh но с установленным битом запрещения прерывания NMI (седьмой бит).
Если данная информация оказалась полезной/интересной - плюсаните, пожалуйста:

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей