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

Assembler для начинающих

Войти
Регистрация
Восстановить пароль
 
mracobes9
8 / 8 / 1
Регистрация: 02.04.2015
Сообщений: 196
#1

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

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

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

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

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

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

Число секунд из CMOS - Assembler
Здравствуйте! При попытке считать количество секунд из CMOS появляются значения в диапазоне от 0 до 89: .model small .stack 100h ...

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

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

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

Вроде бы так.
1
mracobes9
8 / 8 / 1
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:06  [ТС] #3
Ethereal, То есть как я понял всего обьем cmos памяти 128 байт ? И можно ли это узнать программно ?
0
Ethereal
3015 / 1288 / 166
Регистрация: 17.02.2013
Сообщений: 2,192
08.06.2015, 15:17 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Например, если такая 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 / 1
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:18  [ТС] #5
Ethereal, спасибо
0
Ethereal
3015 / 1288 / 166
Регистрация: 17.02.2013
Сообщений: 2,192
08.06.2015, 15:20 #6
Цитата Сообщение от mracobes9 Посмотреть сообщение
То есть как я понял всего обьем cmos памяти 128 байт ?
С доступом по (записал адрес в порт 70h, записал/прочитал значение из 71h) могут быть
или cmos 64 байта или cmos 128 байт.

Добавлено через 30 секунд
Цитата Сообщение от mracobes9 Посмотреть сообщение
И можно ли это узнать программно ?
Тут надо подумать над удачным алгоритмом. Но можно конечно.
1
mracobes9
8 / 8 / 1
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:23  [ТС] #7
Ethereal, кстати звездочки появляются раз в секунду. Вот только как бы теперь это в своем редакторе реализовать ?
0
Ethereal
3015 / 1288 / 166
Регистрация: 17.02.2013
Сообщений: 2,192
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 / 1
Регистрация: 02.04.2015
Сообщений: 196
08.06.2015, 15:54  [ТС] #9
Ethereal, спасибо
0
Rius
Эксперт .NET
3550 / 2615 / 606
Регистрация: 25.05.2015
Сообщений: 8,200
Записей в блоге: 10
Завершенные тесты: 4
08.06.2015, 16:25 #10
Они уже вроде и до 4 кБайт дошли в объёме. 128 байт это старая память на AT компах.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2015, 16:25
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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