Система команд микропроцессора
Общие сведения Для определенной серии МП" комплекта используется индивидуальный язык составления программ. Для МП КР580 применяется язык ассемблера. В командах на языке ассемблера код операции имеет сокращенную форму записи английских слов — мнемоническое обозначение. Мнемоника (от греч. mnemonic -искусство запоминания) позволяет легче запомнить команды по их функциональному назначению. Перед исполнением исходная программа переводится с помощью программы трансляции, называемой ассемблер, на язык кодовых комбинаций — машинный язык, в таком виде размещается в памяти МП и далее используется при выполнении команды. Например, команда очистки аккумулятора на языке ассемблера имеет вид CLA А (от англ. clear —- очищать); она же на машинном языке будет иметь вид 0100 1111. Сравнив две эти команды, видим очевидные преимущества написания программы на языке ассемблера, обеспечивающем в первую очередь простоту записи и возможность считывания команд. Система команд микропроцессора — это полный перечень элементарных действий, которые способен производить МП. Управляемый этими командами МП, выполняет простые действия, такие как элементарные арифметические и логические операции, пересылку данных, сравнение двух величин и др. Система команд для МП КР580ВМ80 представлена 244 кодами операций. Команда характеризуется форматом, т.е. числом отведенных для нее разрядов, которые разделены побайтно на определенные функциональные поля. Для команд используются одно-, двух- и трехбайтовые форматы (рис. 1.5.3). Многобайтовые команды должны храниться в соседних ячейках памяти. Первый байт команды содержит код операции, записанный в мнемоническом виде. Он определяет формат команды и те действия, которые должны быть выполнены МП над данными в процессе ее выполнения, и способ адресации, а также может содержать информацию о нахождении данных. Кроме мнемонической записи кода операции остальная информация этого поля для упрощения записывается в шестнадцатеричном виде, который затем легко может быть заменен (транслирован) на двоичный код путем перезаписи каждого символа его четырехразрядным эквивалентом.
Рисунок 1.5.3 - Формат команд
Во втором и третьем байтах могут находиться данные, над которыми производятся операции, или адреса, указывающие местонахождение данных. Данные, над которыми производятся действия, называются операндами. Для упрощения записи содержимое второго и третьего байтов также записывается в шестнадцатеричном виде. Программа на языке ассемблер — это последовательность строк, в каждой из которых записывается команда, представляющая собой предложение, состоящее из четырех полей: поля метки, поля кода операции, поля операнда и поля комментария. Например, LOOP :_MOV_D, A_; D←(A) (содержимое РгАзаносится в РгD). Поле метки представляет собой условное имя или набор символов, начинающихся с определенной буквы. После имени метки обязательно ставится двоеточие. Метка присваивается команде в тех случаях, когда при выполнении программы необходимо к ней вернуться (возврат по метке). Имя метки возврата записывается в командах условного и безусловного переходов. Поле кода операции используется для мнемонического обозначения кода операции команды. В поле операнда, как правило, дается информация о данных, над которыми производятся операции. Данные, над которыми должны быть произведены операции, могут быть заданы непосредственно в поле команды (непосредственные операнды). В этих полях могут быть заданы адреса источника данных (SSS) — регистры или память, где хранятся требуемые данные, или адреса регистров. Кроме того, в этом поле может быть размещена информация о приемнике результата выполнения операции (DDD). В командах условных и безусловных переходов в этом поле хранится имя метки возврата. Поле комментария начинается символом «;». Это поле имеет вспомогательные функции и используется только программистом при составлении программы. Команда состоит из двух частей: кода операции и адреса. Код операции сообщает микропроцессору, что надо делать; адрес указывает местоположение данных, участвующих в операции. В зависимости от формата команды адрес указывается различным количеством полей. Классификация полей по формату команды и виду адресации показана на рис. 1.5.3. Заштрихованные на рисунке разряды первого байта команд относятся к коду операции. Все слова, образующие программу, должны следовать одно за другим и располагаться в соседних ячейках памяти (рис. 1.5.4). При регистровой адресации один байт информации может храниться в одном из регистров, коды адресов которых представлены в табл. 21.2. Двухбайтовая информация хранится в регистровых парах, коды адресов которых представлены в табл. 21.3, причем старший байт информации (с 8-го по 15-й разряд) размещается в первом регистре пары, а младший байт (с 0 по 7-й) — во втором регистре пары.
Рисунок 1.5.4 - Расположение в соседних ячейках памяти слов программы
Под регистром М понимается ячейка оперативной памяти, адрес которой находится в паре регистров HL или байте команды. Классификация команд. Различают следующие группы команд: пересылки данных, арифметических и логических операций, перехода, управления и вызова подпрограмм. Команды пересылки данных организуют перемещение данных между следующими устройствами: регистр — регистр; регистр — память; данные, содержащиеся в команде, — регистр; данные, содержащиеся в команде, — память. Команды пересылки данных могут быть однобайтовыми, двухбайтовыми и трехбайтовыми: С помощью однобайтовых команд производится обмен данными между внутренними регистрами микропроцессора, а также между внутренними регистрами и ячейками памяти. Команды пересылки данных из регистра в регистр MOV r1, r2. Содержимое регистра r2 (источник операнда — S) пересылается в регистр rl (приемник операнда — D). В качестве регистров S и D может быть использован любой из регистров А, В, С, D, H, L. Содержимое регистра SSS при этом не меняется. В регистре DDD просто появляется копия содержимого регистра SSS. Команды пересылки данных из регистра в память MOV M, г. Содержимое регистра r (источник операнда — S) пересылается в ячейку памяти (приемник операнда — М) по адресу, указанному в регистровой паре HL. В этой команде происходит замена кода символа D на код символа М. После выполнения команды, в ячейке памяти появится копия содержимого регистра-источника. Содержимое самого регистра не изменится. Команды пересылки данных из памяти в регистр MOV r, M. Содержимое ячейки памяти (источник операнда — М) пересылается в регистр г (приемник операнда — D). Пересылка данных осуществляется из ячейки памяти по адресу, указанному в регистровой паре HL, в регистр-приемник, в качестве которого может выступать любой из регистров В, С, D, H, L или аккумулятор А. При пересылке данных между аккумулятором и ячейкой памяти в качестве адреса ячейки памяти может быть использовано также содержимое регистровых пар ВС или DE. Тогда для записи в память данных или чтения данных из памяти могут быть использованы команды типа STAX или LDAX. Команды косвенной загрузки аккумулятора LDAX rр. Содержимое ячейки памяти, адрес которой указан в паре регистров rр, пересылается в регистр А. Команды косвенной записи содержимого аккумулятора в память STAX rр. Содержимое аккумулятора пересылается в ячейку памяти, адрес которой определен в паре регистров rр. К двухбайтовым командам относятся два формата команд, с помощью которых можно переслать содержимое второго байта в регистр или ячейку памяти. Команды загрузки регистра вторым байтом команды MVI, r байт {непосредственная пересылка второго байта команды в регистр). Содержимое второго байта команды пересылается в регистр г. Команда загрузки ячейки памяти вторым байтом команды MVI M, байт (непосредственная пересылка второго байта в память). Содержимое второго байта команды пересылается в ячейку памяти, адрес которой указан в регистрах Н и L. Трехбайтовые команды служат для непосредственной записи в соответствующие регистровые пары данных из второго и третьего байтов. Команда непосредственной загрузки пары регистров LXI rр, 2. Третий байт команды посылается в старший регистр (rh) пары регистров, второй — в младший регистр (rl) пары регистров. Помимо ранее рассмотренных команд, используемых для пересылки данных между аккумулятором и ячейкой памяти для записи в память данных или чтения данных из памяти, могут быть использованы команды типа STA или LDA. Команда прямой записи содержимого аккумулятора в память STA [адр.]. Содержимое аккумулятора пересылается в ячейку памяти, адрес которой указан во втором и третьем байтах команды. Команды арифметических операций предназначены для выполнения арифметических операций над данными, хранимыми в регистрах и ячейках памяти. Перед началом выполнения любой команды один из операндов должен быть размещен в аккумуляторе, а другой (если команда однобайтовая) — в одном из восьмиразрядных внутренних регистров МП или ячейке памяти с адресом, содержащимся в регистровой паре HL. В двухбайтовой команде значение второго операнда задается непосредственно во втором байте команды. Полученный результат операции фиксируется в аккумуляторе, анализируется, и результат анализа заносится в регистр признаков (флаговый регистр), что может повлиять на порядок выполнения вычислительного процесса. Рассмотрим некоторые команды. Команды сложения содержимого аккумулятора с содержимым регистра ADD r. Команды выполняют сложение содержимого регистра-источника S с содержимым аккумулятора А. Результат сложения помещается в аккумулятор. Чтобы получить конкретную команду, необходимо в формате команды вместо символов S проставить код регистра-источника. Команды вычитания содержимого регистра SUB г. Команды выполняют вычитание содержимого регистра-источника S из содержимого аккумулятора. Результат помещается в аккумулятор. Команда непосредственного вычитания SUB байт. Содержимое второго байта команды вычитается из содержимого аккумулятора. Результат помещается в аккумулятор. Команды выполнения логических операций предназначены для выполнения логических операций над данными, содержащимися в регистрах, ячейках памяти, а также над флагами условий. К этим операциям относятся: логическое сложение (ИЛИ), логическое умножение (И), суммирование по модулю два, сравнение, сдвиг, дополнение до 1 и до 2. Как и команды предыдущей группы, все логические команды оказывают влияние на флаги. Операция И над содержимым регистра и аккумулятора ANA r. Команда выполняет параллельно поразрядное логическое. И над содержимым регистра-источника и аккумулятора. Результат операции заносится в аккумулятор. Операция И над содержимым второго байта команды ANI байт. Команда является двухбайтовой и также выполняет поразрядную операцию логического. И, но над содержимым второго байта команды и аккумулятора. Результат помещается в аккумулятор. Операция ИЛИ над содержимым аккумулятора и одного из регистров ORA r. Команда аналогична команде ANA r, но в отличие от нее выполняет логическое сложение содержимого регистра и аккумулятора. Результат помещается в аккумулятор. Команды перехода позволяют изменить последовательность выполнения команд программы за счет выполнения безусловных и условных переходов. При выполнении команд безусловного перехо да текущая последовательность команд нарушается и происходит переход к выполнению другой последовательности команд, указанной в команде. Для организации этого перехода необходимо изменить адрес обращения за очередной командой в счетчике команд. При этом флаги влияния на организацию перехода не оказывают. При выполнении команд условного перехода дальнейший выбор одной из последовательностей команд зависит от значения одного из четырех флагов: нуля, знака, четности, переноса, т.е. сначала проверяется состояние одного из четырех флагов МП на выполнение указанного в команде условия, а затем происходит выполнение команды. Например, если результат арифметической операции равен нулю, то необходимо осуществить переход к выполнению другой последовательности команд, начальный адрес которой указан в команде, если не равен — продолжить выполнение текущей программы. Условия перехода приведены в таблице Команды управления предназначены для управления работой МП, устройствами ввода-вывода, стеком. Команды этой группы не оказывают влияния на флаги. Рассмотрим некоторые из них. Команда ввода данных IN порт предназначена для ввода данных от входного порта по ШД в аккумулятор. Команда читается следующим образом: «Считывание данных из порта ввода ( FA) в аккумулятор». Команда вывода данных OUT порт предназначена для вывода данных из аккумулятора в выходной порт. Команды PUSH используются для временного сохранения содержимого внутренних регистров МП в стеке при переходе к выполнению подпрограммы. По команде POP происходит извлечение из стека временно хранящихся данных после выполнения подпрограммы. С помощью команд XTHL и SPHL происходит обмен данными между указателем стека SP и парой регистров Н и L в том или ином направлении, соответственно. По команде HLT (останов) останавливается выполнение текущей программы до тех пор, пока не появится запрос на прерывание от устройств ввода-вывода. По команде DI (запрещение прерываний) МП игнорирует запросы на прерывание до тех пор, пока не получит команду EI (разрешение прерываний). По команде NOP (нет операции) не производится никаких вычислений, изменяется лишь содержимое счетчика команд PC. Команда используется для организации временных задержек и часто применяется для организации обращения к медленно действующим устройствам. Тема 1.6.
Популярное: Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (265)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |