вторник, 5 мая 2009 г.

Архитектура ЭВМ

Излагать здесь столь обширный материал не хочется, да и не зачем. Кто хочет разобраться во всех тонкостях могут изучить курс "Архитектура и организация ЭВМ (Авторы: В.В. Гуров, В.О. Чуканов)".

Здесь же я изложу наиболее важный аспект адресации памяти.

Как уже говорилось, все ячейки памяти пронумерованы последовательно от 0. Процессор обеспечивает доступ к байтам или словам памяти. Нужные байты отыскиваются в памяти по их номерам, выполняющим функции адресов. Некоторые данные (например, коды символов) требуют для своего хранения одного байта; для других данных этого места не хватает, и под них в памяти выделяется 2, 4, 8 или еще большее число байтов. Обычно пары байтов называют словами, а четверки - двойными словами, хотя иногда термином "слово" обозначают любую порцию машинной информации.

При обсуждении содержимого многобайтового данного приходится ссылаться на составляющие его байты; эти байты условно нумеруются от нуля и располагаются (при их изображении на бумаге) в порядке возрастания номера справа налево, так что слева оказываются байты с большими номерами, а справа - байты с меньшими номерами. Крайний слева байт принято называть старшим, а крайний справа - младшим. Такой порядок расположения байтов связан с привычной для нас формой записи чисел: в многоразрядном числе слева указываются старшие разряды, а справа - младшие. Следующее число, если его написать за предыдущим, опять начнется со старшего разряда и закончится младшим. Однако в памяти компьютера данные располагаются в более естественном порядке непрерывного возрастания номеров байтов и, таким образом, каждое слово или двойное слово в памяти начинается с его младшего байта и заканчивается старшим.


Рассмотрим десятичное число 1025. Для записи в память шестнадцатеричного представления этого числа – 0401 требуется два байта или одно слово. Оно состоит из старшей части - 04 и младшей части – 01. Система хранит в памяти байты слова в обратной последовательности: младшая часть по меньшему адресу, а старшая – по большему адресу. Предположим, что процессор записал шестнадцатеричное число 0401 из регистра в ячейки памяти 5612 и 5613, следующим образом:

Процессор полагает, что байты данных в памяти представлены в обратной последовательности и обрабатывает их соответственно. Несмотря на то, что это свойство полностью автоматизировано, следует всегда помнить об этом факте при программировании и отладке ассемблерных программ.

Комментариев нет: