Ответы на вопросы по курсу Системное программирование
Рефераты >> Программирование и компьютеры >> Ответы на вопросы по курсу Системное программирование

Редакторы бывают 3 разновидностей.

1) Загрузчик – загружает объектный модуль и передает управление на точку входа программы.

2) Компоновщик – формирует исполняемый файл, точно соответствующий образу программы в памяти, привязывая его к абсолютным адресам.

3) Компоновщик, генерирующий псевдоперемещаемый код – записывает в исполняемый файл таблицу перемещений (relocation table), где содержатся данные о ячейке внутри кода, которая зависит от местоположения в памяти. Такой исполняемый файл перед запуском программы требует настройки. Этим занимается операционная система, в формате которой создается исполняемый модуль.

1. Основная память ЭВМ. Адресация, адресное пространство.

Число микросхем памяти, физически присутствующих в компьютере, определяет объем памяти, которую можно использовать для программ и данных. Это число может меняться от машины к машине. Объем памяти обычно можно наращивать с помощью плат расширения, вставляемых в специальные разъемы. Для процессора память - это не более чем несколько тысяч 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

Расширения BIOS

C000

Расширения BIOS

B000

Видеопамять

A000

Видеопамять

9000

ОЗУ

8000

ОЗУ

7000

ОЗУ

6000

ОЗУ

5000

ОЗУ

4000

ОЗУ

3000

ОЗУ

2000

ОЗУ

1000

ОЗУ

0000

ОЗУ; обычно здесь ПО ОС.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

· прямая;

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

· косвенная;

· базовая;

· индексная;

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

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

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

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

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

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


Страница: