Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler, MASM, TASM

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

Объем CMOS - Assembler

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

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

Чтение из CMOS - Assembler
Помогите! Выдает ошибку 613.obj : warning LNK4078: multiple ".data" sections found with different attributes (C0220040) LINK : error...

чтения информации из CMOS - Assembler
Составить программу чтения информации из CMOS памяти и размещения ее на экране в удобочитаемом виде

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

Работа с CMOS и RDTSC - Assembler
Не подскажите, каким образом можно сопоставить временные каналы 70h и 71h и значения счетчика временных тиков процессора (посредством...

установка будильника.. работа с RTC CMOS RAM - Assembler
необходимо получить значение текущего времени и задать значение будильника через 3 часа 28 мин от текущего..прошу помощи..буду очень...

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

3
Mikl___
Заблокирован
Автор FAQ
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
23.12.2010, 04:45 #4
Цитата Сообщение от hax32
о спасибо большое, как то просто очень
Зачем делать сложным,
То что проще простого? ("Казанова"© Наутилус Помпилиус)
0
23.12.2010, 04:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2010, 04:45
Привет! Вот еще темы с ответами:

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

Объем свободной оперативной памяти - Assembler
Как через ассемблер (tasm) узнать объем свободной оперативной памяти? Подскажите, как сделать, а то я вообще не представляю...:wall: ...

Отобразить объем оперативной памяти - Assembler
Нужно создать программу, которая отображает объем оперативной памяти. (использовать прерывание 12). заранее спасибо.

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


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

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

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