Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
hax32
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 31
#1

Объем CMOS - Assembler

21.12.2010, 14:58. Просмотров 2294. Ответов 3
Метки cmos (Все метки)

Друзья! Помогите написать программу, которая определит весь объем CMOS памяти, установленной на машине. Просто пишу курсач, чтение и редактирование CMOS есть, а вот как определить общий объем не знаю. Если кто нибудь сталкивался помогите найти, буду очень признателен. Заранее спасибо
http://www.cyberforum.ru/assembler/thread133650.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2010, 14:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Объем CMOS (Assembler):

Прямое чтение CMOS
Расскажите, пожалуйста, как можно прочитать данные из CMOS.

Создать программу, читающую из CMOS информацию о размере основной дополнительной памяти
Товарищи помогите с решением простейшей задачи.....оч срочно...буду очень...

Защищенный режим и ошибка "CMOS checksum error"
написал прогу (опять таки из книги) для перехода в защищенный режим......

Объем свободной оперативной памяти
Как через ассемблер (tasm) узнать объем свободной оперативной памяти? ...

Отобразить объем оперативной памяти
Нужно создать программу, которая отображает объем оперативной памяти....

3
Mikl___
Автор FAQ
11365 / 5908 / 534
Регистрация: 11.11.2010
Сообщений: 10,932
22.12.2010, 05:16 #2
Лучший ответ Сообщение было отмечено как решение

Решение

hax32, "Помогите написать программу, которая определит весь объем CMOS памяти, установленной на машине." а чего его определять? На всех машинах CMOS стандартно имеет 64 регистра, пронумерованных от 00 до 3Fh. Для чтения регистра нужно послать его номер в порт с адресом 70h, а затем прочитать его через порт 71h. Для чтения всей информации из CMOS можно воспользоваться следующей программой
Assembler
1
2
3
4
5
6
7
8
9
MOV CX,40h
    XOR BX,BX
A1: MOV AX,BX
    OUT 70h,AL
    IN AL,71h
    MOV BUFFER[BX],AL
    INC BX
    LOOP A1
BUFFER DB 40h DUP (0)
Формат CMOS
00h время дня: секунды (BCD 00-59h, HEX 00-3Bh)
01h время будильника: секунды (BCD 00-59h, HEX 00-3Bh)
02h время дня: минуты (BCD 00-59h, HEX 00-3Bh)
03h время будильника: минуты (BCD 00-59h, HEX 00-3Bh)
04h время дня: часы (BCD 00-23h, HEX 00-17h) в 24 часовой моде (BCD 01-12h, HEX 01-0Ch) в 12 часовой моде (до полудня) (BCD 81-92h, HEX 81-8Ch) в 12 часовой моде (после полудня)
05h время будильника: часы то же самое что и время дня: часы
06h день недели (01-07h, 01=воскресенье)
07h день месяца (BCD 01-31h, HEX 01-1Fh)
08h месяц (BCD 01-12h, HEX 01-0Ch)
09h год по модулю 100 (BCD 00-99h, HEX 00-63h)
0Ah регистр состояния A часов реального времени:
бит 7: установлен, если дата/время обновляются
биты 6-4: базовая частота отсчета времени (22 stage divider), по умолчанию 010b=32.768Гц
биты 3-0: выбор частоты прерываний, 0000 — не задействована 0011 — 122 микросекунды (минимум)
1111 — 500 миллисекунд 0110 — 976.562 микросекунды =1024Гц (по умолчанию)
0Bh регистр состояния B часов реального времени: бит 7: =0 нормальное обновление, =1 аварийное обновление бит 6: разрешение периодических прерываний бит 5: разрешение прерываний будильника бит 4: разрешение прерываний конца обновлений бит 3: разрешение прямоугольных колебаний бит 2: режим даты (=0 BCD, =1 HEX) бит 1: (=0 12 часовая мода, =1 24 часовая мода)
бит 0: =1 учитывать переход на летнее время
0Ch регистр состояния C часов реального времени: бит 7: флаг Interrupt Request =1 когда любой или все с 6 по 4 биты в 1 и appropriate enables (регистр состояния B) установле-ны в 1, вырабатывает прерывание 8 при переключении; бит 6: флаг Periodic Interrupt; бит 5: флаг Alarm Interrupt; бит 4: флаг Update-Enable Interrupt
0Dh Регистр состояния D часов реального времени: бит 7: батарея хорошая
До 0Dh регистра в CMOS разных фирм хранится одинаковая информация о часах и календаре. После 0Dh в зависимости от фирмы производителя (AMSTRAD, IBM PS/2, AMI, PHOENIX и т.д.) информация разная.
0Eh (PS/2) Diagnostic Status Byte Бит 7: =1 indicates clock has lost power Бит 6: =1 indicates incorrect checksum Бит 5: =1 indicates equipment configuration is incorrect Power-on check requires that atleast one floppy be installed Бит 4: =1 indicates error in memory size Бит 3: =1 indicates controller or disk drive faileDInitialization Бит 2: =1 indicates time is invalid Бит 1: =1 indicates installed adaptors do not match configuration Бит 0: =1 indicates a time-out while reading adaptor ID
0Eh-13h (AMSTRAD) время и дата последнего использования машины
0Fh Reset Code (IBM PS/2 “Shutdown Status Byte”)
10h Биты 7-4 тип первого флоппи-дисковода Биты 3-0 тип второго флоппи-дисковода
=0 нет дисковода, =1 — 360 Кб 5,24 дюйма, =2 — 1.2 Мб 5,24 дюйма, =3 — 720 Кб 3,5 дюйма, =4 — 1.4 Мб 3,5 дюйма,
11h (IBM-PS/2) First Fixed Disk Drive Type Byte (00-FFh) Note: if IBM ESDI or SCSI drive controller is used, CMOS drive type will be zero (00 -no drive) и прерывание 13h will be directed to controller ROM.
11h (AMI) Keyboard Typematic Data Бит 7 Enable Typematic (1 = On) Биты 6-5 Typematic Delay (wait before begin repeating) =0 250 ms, =1 500 ms, =2 750 ms, =3 100 ms Биты 4-0 Typematic Rate char/sec e.g. 01010b = 12.0 cps 00 –300 01 -267 02 -240 03 -218 04 -200 05 -185 06 –171 07 –160 08 -159 09 -133 0Ah -120 0Bh -109 0Ch –100 0Dh –92 0Eh -86 0Fh -80 10h -75 11h -67 12h -60
13h -55 14h -50 15h -46 16h -43 17h -40 18h – 37 19h – 33 1Ah -30 1Bh -27 1Ch -25 1Dh -23 1Eh –21 1Fh -20
12h Биты 7-4 тип первого винчестера, если =Fh то правильное зна-чение по адресу 19h
Биты 3-0 тип второго винчестера, если =Fh то правильное зна-чение по адресу 1Ah
13h (AMI) Advanced Setup Options Бит 7 наличие мыши Бит 6 тест памяти расположенной выше 1 MБайта Бит 5 звуковой сигнал во время проверки памяти Бит 4 проверка ошибки паритета памяти Бит 3 отключение проверки памяти нажатием на <Esc> Бит 2 жесткий диск определенный пользователем (1 = Тип 47 data area at address 0:300h) Бит 1 ожидание нажатия на <F1> для вывода сообщений об ошибках Бит 0 включить индикатор Num Lock On при загрузке
14h Периферия: Биты 7-6: =0 1 флоппи дисковод, =1 2 флоппи дис-ковода; Биты 5-4: =0 VGA или EGA дисплей, =1 CGA 40x25 строк, =2 CGA 80x25 строк, =3 монохромный дисплей бит 3 Display Enabled, бит 2 Keyboard Enabled бит 1 наличие сопроцессора бит 0 наличие флоппи-дисковода
14h (AMSTRAD) Контрольная сумма ОЗУ пользователя
15h Базовая память в килобайтах (младший байт)
15h-16h (AMSTRAD) скан-код /код ASCII клавиши Enter
16h Базовая память в килобайтах (старший байт)
17h Расширенная память в килобайтах (младший байт)
17h-18h (AMSTRAD) скан-код /код ASCII клавиши Backspace
18h Расширенная память в килобайтах (старший байт)
19h тип первого винчестера (not in original AT specification but now nearly universally used except for PS/2). Значение от 0 до Fh не используется (would not require extension. Note: this has the effect making type 0Fh (15d) unavailable. Значения от 10h до FFh тип первого винчестера от 16d до 255d Большинство фирм-изготовителей используют следующие ти-пы 47d или 49d — "тип определен пользователем" и параметры are stored elsewhere in the CMOS.
19h-1Ah (AMSTRAD) скан-код /код ASCII кнопки 1 включения джой-стика, по умолчанию: FFFFh -(no translation)
1Ah тип второго винчестера (смотрите 19h)
1Bh (AMI) первый жесткий диск определенный пользователем (тип 47): число цилиндров, LSB
1Bh (PHOENIX) LSB of Word to 82335 RC1 roll compare register
1Bh-1Ch (AMSTRAD) скан-код /код ASCII прерываний кнопки 2 вклю-чения джойстика, по умолчанию: FFFFh -(no translation)
1Ch (AMI) первый жесткий диск определенный пользователем: число цилиндров (старший байт)
1Ch (PHOENIX) MSB of Word to 82335 RC1 roll compare register
1Dh (AMI) первый жесткий диск определенный пользователем: число головок
1Dh-1Eh (AMSTRAD) скан-код /код ASCII 1-ой клавиши мыши по умолчанию: FFFFh -(no translation)
1Dh (Zenith Z-200 monitor) Выбор устройства для загрузки системы Биты 6-5: =0 -MFM Monitor, =1 – загрузка с дискеты (А : ) =2 загрузка с винчестера ( С : ) =3 загрузка с дискеты если не найден винчестер (по умолчанию)
1Dh (PHOENIX) LSB of Word to 82335 RC2 roll compare register
1Eh (AMI) первый жесткий диск определенный пользователем: цилиндр с которого начинается компенсация записью (младший байт)
1Eh (PHOENIX) MSB of Word to 82335 RC2 roll compare register
1Fh (AMI) первый жесткий диск определенный пользователем: цилиндр с которого начинается компенсация записью (старший байт)
1Fh-20h (AMSTRAD) скан-код /код ASCII 2-ой клавиши мыши
20h (AMI) первый жесткий диск определенный пользователем: Control Byte (равен 80h если количество головок равно или больше 8)
20h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) количество цилиндров LSB
21h (AMI) первый жесткий диск определенный пользователем: зона загрузки (младший байт)
21h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) количество цилиндров MSB
21h (AMSTRAD) масштаб X мыши, по умолчанию: 0Ah
22h (AMI) первый жесткий диск определенный пользователем: зона загрузки (старший байт)
22h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) количество головок
22h (AMSTRAD) Y масштаб мыши, по умолчанию: 0Ah
23h (AMI) первый жесткий диск определенный пользователем: количество секторов на одной дорожке
23h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) компенсация записью. LSB
23h (AMSTRAD) BYTE initial VDU mode and drive count default: 20h
бит 7: enables extended serial flow control (NB this is buggy) бит 6: set if two floppy drives installed биты 5-4: (from Amstrad 1640 tech ref) 00 Internal video adapter; 01 CGA адаптер — 40x25 строк;
10 CGA адаптер — 80x25 строк; 11 монохромный адаптер —80x25 строк
24h (AMI) Второй жесткий диск определенный пользователем: количество цилиндров (младший байт)
24h (AMSTRAD) BYTE initial VDU character attribute, default: 7h
24h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) компенсация записью. MSB
25h (AMI) Второй жесткий диск определенный пользователем: количество цилиндров (старший байт)
25h (AMSTRAD) BYTE size of RAM disk in 2K blocks default: 0 -only used by the RAMDISK software supplied.
25h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) зона посадки головок LSB
26h (AMI) Второй жесткий диск определенный пользователем: количество головок
26h (AMSTRAD) BYTE initial system UART setup byte по умолчанию: E3h – формат такой как для 14h прерывания функция 0
26h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) зона посадки головок MSB
27h (AMI) Второй жесткий диск определенный пользователем: цилиндр, с которого начинается компенсация записью (младший байт)
27h (AMSTRAD) BYTE initial external UART setup byte по умолчанию: E3h – формат такой как для 0 функции прерывания 14h 14h прерывания функция 0 — инициализировать последовательный порт AL параметры порта 7-5 бит -скорость передачи, 4-3 бит – контроль четности, 2 бит – количество стоп-битов, 1-0 бит – слово, DX номер порта (00-03)
27h (PHOENIX) первый жесткий диск определенный пользователем (тип 48) количество секторов на одной дорожке
28h (AMI) Второй жесткий диск определенный пользователем: цилиндр с которого начинается компенсация записью (старший байт)
28h (HP Vectra) checksum over words 29h-2Dh
28h-3Fh (AMSTRAD) 24 байта user applications по умолчанию: нули
29h (AMI) Второй жесткий диск определенный пользователем: Control Byte (равен 80h если количество головок равно или больше 8)
29h (PHOENIX) LSB word to Intel 82335 CC0 compare register
2Ah (AMI) Второй жесткий диск определенный пользователем: зона загрузки (младший байт)
2Ah (PHOENIX) MSB word to Intel 82335 CC0 compare register
2Bh (AMI) Второй жесткий диск определенный пользователем: зона загрузки (старший байт)
2Bh (PHOENIX) LSB word to Intel 82335 CC1 compare register
2Ch (AMI) Второй жесткий диск определенный пользователем: ко-личество секторов на одной дорожке
2Ch (COMPAQ) бит 6: включить/выключить индикатор numlock при загрузке
2Ch (PHOENIX) MSB word to Intel 82335 CC1 compare register
2Dh (AMI) Configuration Options Бит 7 если =1 — инсталирован сопроцессор фирмы Weitek
Бит 6 Floppy Drive Seek –выключен для быстрой загрузки Бит 5 Порядок загрузки =0 – загрузка с винчестера, а затем с флоппи; =1 загрузка с флоппи, а затем с винчестера Бит 4 Скорость загрузки (0 – низкая; 1 –высокая) Бит 3 External Cache Enable (1 = On) Бит 2 Internal Cache Enable (1 = On) Бит 1 Use Fast Gate A20 after boot (1 = On) Бит 0 Переключатель «Турбо»
2Dh (PHOENIX) Checks for values AAh or CCh
2Eh Standard CMOS Checksum (старший байт)
2Fh Standard CMOS Checksum, (младший байт)
30h Память сверх 1 мегабайта (младший байт)
31h Память сверх 1 мегабайта (старший байт)
32h байт столетия (BCD значение – текущее 20)
32h (IBM-PS2) Configuration CRC (младший байт). CRC for range 10h-31h
33h Информационный Флаг Бит 7 128K (??? believe this indicates the presence of the special 128k memory expansion board for the AT to boost the "stock" 512k to 640k -all machines surveyed have this бит set) Биты 6-0 ???
33h (IBM PS/2) Configuration CRC (старший байт) (see entry for 32h)
33h (PHOENIX) Бит 4 содержание 4-го бита регистра микропро-цессора CP0
34h (AMI) Адреса теневой памяти и выбор пароля загрузки
Биты 7-6 Выбор пароля: =0 отключен, =1 установлен, =2 зарезервирован, =3 пароль на загрузку системы
Биты 5-0 Адреса теневой памяти ПЗУ: Бит 5 C8000h, бит 4 CC000h, бит 3 D0000h, бит 2 D4000h, бит 1 D8000h, бит 0 DC000h
35h (AMI) Адреса теневой памяти: бит 7 — E0000h, бит 6 — E4000h, бит 5 — E8000h, бит 4 — EC000h, бит 3 — F0000h, бит 2 — C0000h, бит 1 — C4000h, бит 0 — зарезервирован
35h (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) —количество цилиндров LSB Примечание: использу-ется в том случае когда пароль в стиле PS/2 не имеет эффекта.
36h (PHOENIX) Второй жесткий диск определенный пользовате-лем (тип 48) — количество цилиндров MSB. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
37h (IBM PS/2) байт столетия
37h (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) — число головок. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
38h-3Dh (AMI) зашифрованный пароль
38h-3Fh ??? (IBM PS/2) зашифрованный пароль. Инициализируется 00h в всех байтах. Содержит от 1 до 7 скан-кодов.
38h (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) — компенсация записью. LSB. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
39h (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) — компенсация записью. MSB. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
3Ah (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) — зона посадки головок LSB. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
3Bh (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) — зона посадки головок MSB. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
3Ch (PHOENIX) Второй жесткий диск определенный пользователем (тип 48) — количество секторов на одной дорожке. Примечание: используется в том случае когда пароль в стиле PS/2 не имеет эффекта.
3Eh (AMI) Extended CMOS Checksum (старший байт) (includes 34h -3Dh)
3Fh (AMI) Extended CMOS Checksum (младший байт) (includes 34h -3Dh)
4
hax32
0 / 0 / 0
Регистрация: 21.12.2010
Сообщений: 31
22.12.2010, 12:12  [ТС] #3
о спасибо большое, как то просто очень
0
Mikl___
Автор FAQ
11365 / 5908 / 534
Регистрация: 11.11.2010
Сообщений: 10,932
23.12.2010, 04:45 #4
Цитата Сообщение от hax32
о спасибо большое, как то просто очень
Зачем делать сложным,
То что проще простого? ("Казанова"© Наутилус Помпилиус)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2010, 04:45
Привет! Вот еще темы с решениями:

Объем адресуемой памяти и разрядность команды
Друзья, доброго времени суток. Никак не могу ответить для себя на следующий...

объем оперативной памяти через функции вин апи
Нужна функция которая могла бы где то записать объем оперативной памяти. Я ...

ERROR CMOS datetime not set WARNING CMOS checksum bad
Доброе утро! Может ли быть такая ошибка из-за Windows 10?

keyboard/interface error, CMOS settings wrong, CMOS date/time Not Set
Не включался компьютор! Узнал, что надо перезапустить биос. Перезапустил с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru