Вопрос № 23298: Очень часто из многих книг, авторы
мимо ходом затрагивали такие термина, как
CMOS и ПЗУ, до этого момента я думал, что CMOS - это
и есть ПЗУ.
Но в одной книге прямо сейчас читаю.
Цитата: "в ПЗУ записать что - либо невозможно,...Вопрос № 23303: Вопрос про массивы:
Я задал массив в ассемблере:
...
fibo dup(12) db ?
...
Как получить доступ к конкретному элементу,например
с индексом 4?
Допусти в Паскале так:
...
var fibo : array[1..12] of byte; ...
Вопрос № 23.298
Очень часто из многих книг, авторы
мимо ходом затрагивали такие термина, как
CMOS и ПЗУ, до этого момента я думал, что CMOS - это
и есть ПЗУ.
Но в одной книге прямо сейчас читаю.
Цитата: "в ПЗУ записать что - либо невозможно, а в
CMOS - памяти свободного места для хранения вирус-
ного кода никогда не хватит"
Дак чем же отличается ПЗУ от CMOS и наоборот?.
CMOS (Complementary Metal-Oxide Semiconductor).
ПЗУ (Постоянное Запоминающее Устройство).
Отправлен: 10.07.2005, 17:03
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Евгений Иванов
Здравствуйте, Терсков Алексей Николаевич!
CMOS - применяется для хранения данных. их можно стирать.
ПЗУ - нельзя стереть. (ну если только ультрафиолетовые).
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 10.07.2005, 17:08
Отвечает: John Freeman
Здравствуйте, Терсков Алексей Николаевич!
CMOS это вообще не название чипа, это название структуры, а суть в том, что на основе CMOS сделали RAM с ОЧЕНЬ малым энергопотреблением, ну и размером соответствующим(изначально 16 байт и сейчас не сильно больше), вот этот RAM питается от батарейки годами и хранит настройки BIOS
--------- You're trying to take me They trying to make me This is the only Gives me the only thing Tired of lying, I'm tired of lying The only thing I inderstand is what I feel...
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 10.07.2005, 21:49
Отвечает: Ayl
Здравствуйте, Терсков Алексей Николаевич!
ПЗУ (ROM, Read-only memory) - постоянное запоминающее устройство, допускается только чтение.
CMOS - энергонезависимая память, предназначена для записи и сохранения важных параметров для работы компа. В ней хранятся настройки BIOS, которые можно просмотреть и изменить через BIOS Setup. Размер памяти CMOS - несколько десятков байт.
В ПЗУ хранится программа POST и код для загрузки с дискового накопителя. Также хранятся все программы BIOS (кроме работы с видеокартой, Video BIOS маппируется на основную память прямо с карты). Область ПЗУ - с A0000 по FFFFF, причем адреса с A0000 по BFFFF отводятся для Video BIOS, С0000 - DFFFF - область для подключения дополнительной памяти (EMS), E0000 - FFFFF - собственно ПЗУ (стандартные обработчики прерываний, POST, IBM PC Identification Code, BIOS release date, etc).
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 11.07.2005, 13:21
Отвечает: ASMодей
Здравствуйте, Терсков Алексей Николаевич!
Многие путают CMOS и ПЗУ (ROM). Еще вместо ПЗУ часто говорят BIOS. Но это все совсем разные типы памяти, а BIOS - это вообще не память :)
1. ПЗУ - это отдельная микросхема постоянной памяти (на материнской плате ее можно найти по голографической наклейке). Именно в ПЗУ хранится BIOS.
Раньше ПЗУ можно было записывать специальными программаторами, предварительно очистив ее с помощью ультрафиолета, для чего в микросхеме было специальное окошко из кварцевого стекла. В современных компьютерах ПЗУ работает на так называемой Flash-памяти. Это значит, что ее можно стирать и перезаписывать специальными программами.
2. CMOS-память - это энергонезависимая память компьютера. Именно в ней хранятся все настройки BIOS'а, а также часы реального времени (RTC). Питается эта память от аккумулятора на материнской плате (потому и энергонезависимая).
Ответ отправил: ASMодей (статус: Профессионал)
Отправлен: 11.07.2005, 18:48
Вопрос № 23.303
Вопрос про массивы:
Я задал массив в ассемблере:
...
fibo dup(12) db ?
...
Как получить доступ к конкретному элементу,например
с индексом 4?
Допусти в Паскале так:
...
var fibo : array[1..12] of byte;
write(fibo[3]);
Для записи
fibo[3] := 3;
...
А в ассемблере можно?
Отправлен: 10.07.2005, 18:10
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Евгений Иванов
Здравствуйте, Терсков Алексей Николаевич!
mov bx, offset fibo
mov si, 3
m1:
mov al,[bx+si]
inc si
cmp si, maxelem
jnz m1
применяя 32-бит, можно вот так (даже в реальном режиме, только обнули старшее слово!)
fibo dd dup(12) ?
mov ebx, offset fibo
mov esi , 3
m1:
mov eax, [ebx+esi*4]
inc esi
cmp esi, maxelem
jnz m1
то есть, учитывается размер элемента.
удачи!
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 10.07.2005, 18:18
Отвечает: Master135
Здравствуйте, Терсков Алексей Николаевич!
В процессоре 80386 для записи эффективного адреса можно использовать любой 32-битный регистр общего назначения как базовый, а также любой регистр общего назначения кроме ESP как индексный. Так же появилась возможность умножения индексного регистра на 2, 4 или 8, что облегчает работу с массивами данных и два дополнительных сегментных регистра – FS и GS.
Поскольку в качестве базового и индексного регистра могут использоваться одни и те же регистры общего назначения, для определения сегмента по умолчанию важную роль играет порядок следования. Вначале идет базовый регистр, затем – индексный. При базовом регистре EBP или ESP сегмент по умолчанию – SS, во всех остальных случаях – DS.
Таким образом к элементу массива можно обращатся например так при этом занести в ЕСХ номер элемента массива A[ECX] Вот еще несколько примеров:
MOV BX, [ebx + ecx + 1] ; базовый регистр, индексный регистр и константа
MOV DX, gs:[edi] ; только индексный регистр
MOV SI, [eax + 2*eax] ; базовый регистр, индексный регистр и множитель
Приложение:
Ответ отправил: Master135 (статус: 6-ой класс)
Отправлен: 10.07.2005, 20:47
Отвечает: Ayl
Здравствуйте, Терсков Алексей Николаевич!
Конечно, можно.
Например, так:
mov bx, OFFSET fibo ; начало массива
mov al, 4 ; 5-й элемент массива (нумерация - с 0!)
xlat ; AL = BX [AL] - в AL - соотвествующий элемент массива
можно так:
mov bx, OFFSET fibo
mov al, [bx+4]
или так:
mov bx, 4
mov al, fibo [bx]
или так (для просмотра всех элементов):
mov si, OFFSET fibo
mov cx, 12
@loop:
lodsb ; AL = [SI]; SI = SI + 1
call Print_AL
loop @@loop
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 11.07.2005, 13:28
Отвечает: ASMодей
Здравствуйте, Терсков Алексей Николаевич!
Да почти так же, как и на паскале:
mov al, fibo[3]
Ответ отправил: ASMодей (статус: Профессионал)
Отправлен: 11.07.2005, 18:51