Команды микропроцессора
Команды микропроцессора в отличие от микрокоманд разрабатываются независимо от аппаратуры микросхемы, поэтому их разрядность обычно совпадает с разрядностью микропроцессора. Команда микропроцессора состоит из инструкции и обозначается код операции КОП (или INS в англоязычной литературе). Команда микропроцессора может состоять только из кода операции, когда не требуется указывать адрес операнда (операнды это данные, над которыми команда производит какое либо действие), или может состоять из кода операции и адресов операндов или данных. Форматы команд очень сильно зависит от структуры процессора. Рассмотрим построение команд для восьмиразрядного процессора, построенного по структуре Фон-Неймана. Примеры построения команд для такого процессора приведены на рисунке 1.
Рисунок 1. Форматы различных команд микропроцессора.
Если для кода операции используется восьмибитное слово (байт), то при помощи этого слова можно закодировать 256 операций. В процессе разработки системы команд для операции может быть назначен любой код. Именно системой команд и определяется конкретное семейство процессоров. Однобайтовые команды позволяют работать с внутренними программно доступными регистрами процессора.
Для выполнения одной и той же операции над разными регистрами процессора назначаются разные коды. Запоминать эти коды очень утомительно для человека. При программировании в машинных кодах легко совершить ошибку и очень трудно найти еЈ, особенно если коды различаются только на один бит. Для сокращения объЈма записи вместо двоичного можно воспользоваться шестнадцатиричным кодом, однако это не увеличивает наглядности программы. Фрагмент исполняемого кода микропроцессора приведЈн на рисунке 2.
Рисунок 2. Фрагмент исполняемого кода микропроцессора.
Ну как? Очень понятно?
Чтобы уменьшить объЈм запоминаемой информации и увеличить наглядность исходного текста программы, каждой операции процессора придумывают мнемоническое обозначение. В качестве мнемонического обозначения операции обычно используют сокращения английских слов, обозначающих эту операцию. Например, для операции копирования используется мнемоническое обозначение MOV; для операции суммирования используется мнемоническое обозначение ADD; для операции вычитания используется мнемоническое обозначение SUB; для операции умножения используется мнемоническое обозначение MUL и т.д.
Для полного обозначения команды используется мнемоническое обозначение операции и используемые ею операнды, которые перечисляются через запятую. При этом в большинстве процессоров операнд приЈмник информации записывается первым, а операнд источник информации вторым. Например:
MOV R0, A ;Скопировать содержимое регистра A в регистр R0
ADD A, R5 ;Просуммировать содержимое регистров R5 и A, результат поместить в регистр A
ПриведЈнные выше команды - это однобайтовые команды, так как в них используются только внутренние регистры процессора. Если в команде используется константа в качестве операнда или указывается адрес операнда в системной памяти, то команда будет занимать в системной памяти два или три байта. Например:
MOV A, 1025 ;Скопировать содержимое 1025 ячейки памяти в регистр A
ADD A, #110 ;Просуммировать содержимое регистра A с числом 110
Несмотря на то, что общий объЈм исходного текста программы увеличивается, скорость написания и особенно отладки программ в таком виде возрастает. Теперь вместо одного текста программы в памяти компьютера или на бумаге придется хранить два текста: один для человека, который в дальнейшем будем называть исходным текстом программы; другой для микропроцессора, который в дальнейшем будем называть загрузочным модулем.
Преобразование программы, записанной в мнемоническом виде, в машинные коды является рутинной работой, которую можно поручить компьютерной программе. Язык программирования в котором для обозначения машинных команд используются мнемонические обозначения называется ассемблером. Точно так же называют и программу или пакет программ, которая осуществляет трансляцию (преобразование) исходного текста программы (исходный модуль) в машинные коды (загрузочный модуль).
[Назад] [Содержание] [Вперёд]