
- •Организация эвм и систем
- •Глава 1 эвм общего назначения
- •Структура эвм общего назначения.
- •Арифметико-логические устройства.
- •Устройства управления.
- •Risc и cisc процессоры.
- •1.5 Форматы машинных команд.
- •Inc byte ptr [40h] – одноадресная
- •Способы адресации.
- •Стековая адресация. Виды стеков.
- •Глава 2
- •2.1 Микропроцессор к1810вм86.
- •2.2 Назначение входов/выходов вм86 в минимальном режиме.
- •2.3 Назначение входов/выходов вм86 в максимальном режиме.
- •Внутренняя архитектура мп вм86.
- •Сегментация памяти.
- •2.6 Программная модель мп вм86.
- •2.7 Организация оперативной памяти.
- •2.8 Организация адресного пространства портов ву.
- •2.9 Методы обмена информацией между мп и портами ву.
- •2.10 Параллельный программируемый адаптер к1810вв55 (i8255).
- •Пример использования и программирования адаптера
- •2.12 Программируемый таймер к1810ви54 (i8254).
- •2.13 Пример использования таймера.
- •2.14 Обработка прерываний.
- •2.15 Система прерываний вм86.
- •2.16 Контроллер прерываний к1810вн59 (i8259).
- •Дополнительная информация о настройке вн59.
- •Прямой доступ к памяти.
- •Программирование кпдп вт37
- •2.21 Организация процессорного модуля вм86.
- •2.20. Организация шинного интерфейса в максимальном режиме
- •2.23. Слабо связанные конфигурации.
- •2.24. Арбитр шин к1810вб89 (i8289).
- •2.25 Сильно связанные конфигурации на примере совместной работы мп86 и арифметического сопроцессора вм87.
- •2.26. Формат машинной команды вм86.
1.5 Форматы машинных команд.
Машинной командой называется двоичное слово, содержащее всю информацию, необходимую процессору для выполнения заданной операции. А именно:
тип операции;
адреса операндов;
адрес приемника результата.
Для фиксации этой информации в машинной команде выделяются группы разрядов, называемые полями. Любая машинная команда состоит из поля кода операций (КОП) и ряда адресных полей. Форматом машинной команды называется заранее оговоренная структура ее полей.
В наиболее общем случае машинная команда должна иметь формат, представленный на рис.3.
Рис. 3.
Здесь А1 – поле адреса первого операнда, А2 – поле адреса второго операнда, А3– поле адреса приемника результата, А4 – поле адреса следующей машинной команды. Это, так называемая, четырехадресная машинная команда.
Очевидно, что чем больше в команде полей, тем больше места занимает команда в оперативной памяти (ОП). Это в свою очередь приводит к непроизводительному расходу памяти и снижению общего быстродействия ЭВМ, так как считывание таких команд из ОП требует больших временных затрат.
На практике четырехадресные машинные команды никогда не использовались. Действительно, машинные команды любой программы располагаются в ОП не хаотично, а последовательно, одна за другой. Поэтому в состав процессора вводится специальный регистр, называемый программным счетчиком. Перед началом выполнения программы, в него заносится адрес первой команды программы. После считывания очередной машинной команды из ОП содержимое программного счетчика автоматически увеличивается на число считанных байт. Таким образом в программном счетчике автоматически формируется адрес следующей машинной команды программы. При таком подходе поле А4 становится ненужным и команда становится трехадресной.
Договоримся теперь, что результат операции мы всегда будем помещать на место одного из операндов, например первого. При этом отпадает необходимость в поле А3 и команда становится двухадресной. Хотя при таком подходе команды несколько теряют в гибкости и создаются определенные неудобства при программировании, практика показала, что выйгрыш здесь значительно превышает пройгрыш.
Иногда в состав процессора вводят специальный регистр, называемый аккумулятором, и оговаривают, что один из операндов всегда берется из аккумулятора и в него же загружается результат операции. При такой ситуации команды становятся одноадресными.
Существуют и безадресные команды, например команды, реализующие стековые операции.
В современных процессорах используются, как правило двух-, одно- и безадресные команды. Например команды микропроцессора К1810ВМ86:
add dx, [234h] – двухадресная
Inc byte ptr [40h] – одноадресная
push bx – безадресная.
Способы адресации.
Физическим адресом (Аф) будем называть двоичный номер ячейки памяти, к которой мы обращаемся. Адресным кодом (Ак) будем называть двоичное число, которое записано в адресном поле команды. Как правило в современных ЭВМ Ак не совпадает с Аф. Способ формирования Аф по заданному в команде Ак и называется способом (методом) адресации. Далее рассмотрим наиболее часто используемые на практике способы адресации.
Непосредственная адресация. В адресном поле команды задается не адрес операнда, а непосредственно сам операнд. Например, sub bl, 25.
Прямая адресация. В адресном поле команды задается адрес ячейки памяти. То есть в этом случае Аф = Ак. Например, mov [200h],al. Прямая адресация не дает возможности для организации циклов.
Косвенная адресация. Адресный код задает регистр процессора. Содержимое этого регистра берется в качестве Аф. Например, add ax, [bx]. Косвенная адресация предоставляет программисту простую возможность организации циклов.
Базовая адресация. Адресный код задает регистр процессора, откуда берется, так называемый, «базовый адрес», и некоторую величину, называемую смещением. Процессор вычисляет Аф путем сложения базового адреса со смещением. Например, add di, [si+100]. Базовая адресация удобна при работе с одномерными массивами. Базовый адрес при этом задает начальный адрес массива, а смещение указывает на элемент внутри массива. Кроме того, базовая адресация обеспечивает простую возможность перемещения программы в ОП без модификации этой программы.
Базово-индексная адресация. Адресный код задает два регистра процессора и смещение. Процессор вычисляет Аф, складывая смещение и содержимое обоих регистров. Например, mov dx, [bp+si+2]. Такая адресация удобна при работе с двухмерными массивами.