Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
mracobes9
8 / 8 / 2
Регистрация: 02.04.2015
Сообщений: 196
#1

Обьем CMOS памяти

08.06.2015, 14:48. Просмотров 875. Ответов 9
Метки нет (Все метки)

Привет всем. При написании редактора CMOS памяти столкнулся с проблемой - не нашел как узнать реальный обьем CMOS памяти. Во всех источниках ни один байт не соответствует его обьему. Может кто-нибудь знает как ее узнать ?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

Объем CMOS
Друзья! Помогите написать программу, которая определит весь объем CMOS памяти,...

Число секунд из CMOS
Здравствуйте! При попытке считать количество секунд из CMOS появляются значения...

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

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

9
Ethereal
3417 / 1556 / 200
Регистрация: 17.02.2013
Сообщений: 2,420
08.06.2015, 15:04 #2
Для адресации к CMOS используются биты 6..0 порта 70h
Т.е. в CMOS максимум 128 ячеек размером в байт.
Если в реальной микросхеме ячеек 64, то чтение ячеек 40h..7Fh повторит чтение ячеек 0..3Fh
(кроме тех ячеек, что изменятся за время между двумя прочтениями).
Это из-за того, что в этом случае бит 6 порта 70h тупо не используется.

Вроде бы так.
1
mracobes9
8 / 8 / 2
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:06  [ТС] #3
Ethereal, То есть как я понял всего обьем cmos памяти 128 байт ? И можно ли это узнать программно ?
0
Ethereal
3417 / 1556 / 200
Регистрация: 17.02.2013
Сообщений: 2,420
08.06.2015, 15:17 #4
Лучший ответ Сообщение было отмечено mracobes9 как решение

Решение

Например, если такая COM-программа выводит звездочки раз в секунду,
то CMOS 64 байта. Если нет, то 128. Программа завершается нажатием
любой клавиши.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Model   Tiny
    .386
    .Code
    Org 100h
 
Start:  mov al, 40h
    out 70h, al
    in  al, 71h
    mov ah, al
@:  mov al, 40h
    out 70h, al
    in  al, 71h
    cmp al, ah
    je  @
    mov ax, 0E00h+'*'
    int 10h
    mov ah, 1
    int 16h
    jz  Start
    mov ah, 0
    int 16h
    ret
 
    End Start
У меня на компе 64 байта CMOS. Компьютеры со 128 байтами CMOS
мучить не приходилось. Говорят, что были компы с 2К CMOS.
Тоже мучить не довелось. Да и доступ к 2К должен быть какой-то
совсем другой.
2
mracobes9
8 / 8 / 2
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:18  [ТС] #5
Ethereal, спасибо
0
Ethereal
3417 / 1556 / 200
Регистрация: 17.02.2013
Сообщений: 2,420
08.06.2015, 15:20 #6
Цитата Сообщение от mracobes9 Посмотреть сообщение
То есть как я понял всего обьем cmos памяти 128 байт ?
С доступом по (записал адрес в порт 70h, записал/прочитал значение из 71h) могут быть
или cmos 64 байта или cmos 128 байт.

Добавлено через 30 секунд
Цитата Сообщение от mracobes9 Посмотреть сообщение
И можно ли это узнать программно ?
Тут надо подумать над удачным алгоритмом. Но можно конечно.
1
mracobes9
8 / 8 / 2
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:23  [ТС] #7
Ethereal, кстати звездочки появляются раз в секунду. Вот только как бы теперь это в своем редакторе реализовать ?
0
Ethereal
3417 / 1556 / 200
Регистрация: 17.02.2013
Сообщений: 2,420
08.06.2015, 15:52 #8
Затупил. Вот так правильнее будет :
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    Model   Tiny
    .Code
    Org 100h
 
Start:  mov al, 40h
    out 70h, al
    in  al, 71h
    mov bl, al
@:  mov ah, 1
    int 16h
    jz  @@
    mov ah, 0
    int 16h
    ret
@@: mov al, 40h
    out 70h, al
    in  al, 71h
    cmp al, bl
    je  @
    mov ax, 0E00h+'*'
    int 10h
    jmp Start
 
    End Start
Добавлено через 52 секунды
Цитата Сообщение от mracobes9 Посмотреть сообщение
Вот только как бы теперь это в своем редакторе реализовать ?
В редакторе надо делать по другому. Щас подумаю как.

Добавлено через 24 минуты
Не вполне строгий алгоритм, но ...
Просто считает сколько ячеек в областях 0..3Fh и 40h..7Fh совпадают.
Тут я нарисовал несколько заморочный алгоритм перебора ячеек, но что
вышло, то вышло. Люблю изящные заморочки. Он сравнивает ячейки
1 2 3 4 ... 3D 3E 3F 0
соответственно с ячейками
41 42 43 44 ... 7D 7E 7F 40
вот именно в таком порядке.
Потом у меня стоит вывод сосчитанного значения на экран.
При прогонах программы получается 63 ячейки совпадают, очень редко
(случилось один раз) 62.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    Model   Tiny
    .Code
    Org 100h
 
Start:
 
    xor bx, bx
@:  inc bl
    or  bl, 40h
    mov al, bl
    out 70h, al
    in  al, 71h
    mov ah, al
    and bl, not(40h)
    mov al, bl
    out 70h, al
    in  al, 71h
    cmp al, ah
    jne @@
    inc bh
@@: test    bl, bl
    jnz @
 
    mov al, bh      ;Число совпадений в BH
    aam
    or  ax, 3030h
    xchg    al, ah
    int 29h
    mov al, ah
    int 29h
    ret
 
    End Start
Можно задаться нестрогим критерием - если совпадают 3/4 ячеек
или более, то будем считать, что это 64-ячеечная CMOS. Если это
не так, то 128-ячеечная.
2
mracobes9
8 / 8 / 2
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:54  [ТС] #9
Ethereal, спасибо
0
Rius
Эксперт .NET
4704 / 3017 / 741
Регистрация: 25.05.2015
Сообщений: 9,278
Записей в блоге: 11
Завершенные тесты: 4
08.06.2015, 16:25 #10
Они уже вроде и до 4 кБайт дошли в объёме. 128 байт это старая память на AT компах.
0
08.06.2015, 16:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2015, 16:25

опрделть тип ЭВМ и ее системных ресурсов:тип и количество дисководов, видеоадаптера, монитора, обьем ОП, версию ОС
Добрый день!!! Не подскажете ,пожалуйста, где можно найти программу, сделаную...

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

В поле дампа памяти вывести на экран содержимое данной памяти [bx+di]
Имеется функция IDIV word ptr . Но предварительно мы записываем значение в...


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

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

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