Ответы на вопросы по курсу “Системное программирование”

Вопросы - Компьютеры, программирование

Другие вопросы по предмету Компьютеры, программирование

использовать для программ и данных. Это число может меняться от машины к машине. Объем памяти обычно можно наращивать с помощью плат расширения, вставляемых в специальные разъемы. Для процессора память - это не более чем несколько тысяч 8-разрядных ячеек, каждая из которых имеет уникальный адрес.

Говорят обычно не о физическом объеме памяти, а об адресуемой памяти. 8086 может адресоваться к 1024 К, то есть к 1048576 байтам памяти. Другими словами, это - максимальное количество различных адресов и, следовательно, максимальное количество байт данных, к которым может обратиться процессор.

Обращение к байту памяти производится с помощью 20-разрядного адреса. В схеме использования памяти процессором 8086 адреса имеют "ширину" 20 бит, поскольку они передаются по 20- разрядной шине адреса. Обычно адреса представляются в шестнадцатеричной системе исчисления. Таким образом, допустимый диапазон адресов памяти - от ООООО до FFFFF в шестнадцатеричной системе исчисления. При рассмотрении 1024 Кбайтного адресного пространства PC его делят на 16 блоков по 64 Кбайт и обозначают каждый из этих блоков шестнадцатеричной цифрой, совпадающей со старшей цифрой адреса. Например, первые 64 Кбайт памяти - блок О, адреса байтов этого блока от ООООО до OFFFF, последние 64 Кбайт - блок F, адреса байтов этого блока от FOOOO до FFFFF.

Структура основной памяти, адресуемой 8086

F000ПЗУ: BIOS, ROM-BASIC, диагностикаE000Расширения ПЗУD000Расширения BIOSC000Расширения BIOSB000ВидеопамятьA000Видеопамять9000ОЗУ8000ОЗУ7000ОЗУ6000ОЗУ5000ОЗУ4000ОЗУ3000ОЗУ2000ОЗУ1000ОЗУ0000ОЗУ; обычно здесь ПО ОС.

Теоретически, любая область памяти может представлять собой либо неизменяемое ПЗУ, либо ОЗУ. Однако принято первые десять блоков (блоки с нулевого по девятый общим объемом 640 Кбайт) заполнять оперативной памятью. Оперативная память в PC устанавливается начиная с блока О и последовательно, без пропусков, наращивается до блока 9 включительно. Если не все десять блоков заполнены, то программы не должны использовать адреса несуществующей памяти. Обращение по этим адресам может вызывать различные последствия в зависимости от модели машины, однако обычно эта ошибка никак не обнаруживается и программа продолжает работу.

 

Общая структура машинных команд, адресность. Способы адресации операндов. Расслоение памяти, выравнивание, кэш-память.

Общая структура машинных команд.

Операнды, которые используются в операторах ассемблера, могут быть регистром (г), адресом памяти (mem), непосредственным значением, задаваемым прямо в операторе (imm), сегментным регистром (sr). В связи с этим существуют различные форматы одних и тех же команд:

первый и второй операнды - регистры. Результат помещается по адресу первого операнда. Могут использоваться все регистры общего назначения.

первый операнд - регистр, второй - адрес памяти. Результат помещается в регистр, указанный в операторе, например:

mov ах, DATA ; в регистр АХ помещается содержимое поля DATA

первый операнд - адрес памяти, второй - регистр. Результат помещается по тому адресу, который используется в качество первого операнда.

первый операнд - регистр, второй - непосредственные данные. Результат помещается в регистр.

первый операнд - адрес памяти, второй - непосредственные данные. Результат помещается по указанному адресу.

первый операнд - сегментный регистр, второй - регистр общего назначения. Результат помещается в сегментный регистр, причем задание регистра CS в таком формате команды не применяется.

первый операнд - регистр общего назначения, второй - сегментный регистр. Результат помещается в регистр общего назначения.

Команды, работающие с одним операндом, могут работать с регистрами общего назначения, адресами памяти или с сегментными регистрами.

Способы адресации операндов. В программах на Assembler применяются следующие типы адресации операндов:

регистровая;

прямая;

непосредственная;

косвенная;

базовая;

индексная;

базово-индексная.

Регистровая адресация подразумевает использование в качестве операнда регистра процессора, например: push DS mov BP,SP

При прямой адресации один операнд представляет собой адрес памяти, второй - регистр: mov DATA, АХ

Непосредственная адресация применяется, когда операнд длиной в байт или слово находится в ассемблерной команде: mov AX,4Ch

При использовании косвенной адресации исполнительный адрес формируется исходя из сегментного адреса в одном из сегментных регистров и смещения в регистрах ВХ, ВР,SI или DI, например: mov АL, [ВХ], mov АН, [SI].

В случае применения базовой адресации исполнительный адрес являетсй суммой значения смещения и содержимого регистра ВР или ВХ, например:

mov АХ, [ВР + 6]

mov [ВХ + Delta], АХ

При индексной адресации исполнительный адрес определяется как сумма значений указанного смещения и содержимого регистра SI или DI так же, как и при базовой адресации, например:

mov DX, [SI+5]

mov ES: [DI]+6, AL

Базово-индексная адресация подразумевает использование для вычисления исполнительного адреса суммы содержимого базового и индексного регистров, а также смещения, находящегося в операторе, например:

mov ВХ, [BP][SI]

mov ES:[BX+DI],AX

Кэш-память сверхоперативная память, обращение к которой намного быстрее, чем к оперативной и в которой хранятся наиболее часто используемые участки последней. При обращении к памяти сначала нужные данные ищутся в кэш-памяти. При отсутствии производится обращение к оперативной памяти