Основы логики и построения базовых логических схем. Архитектура микропроцессора 8086 и основы языка Ассемблер (Контрольные задания по курсу "ЭВМ и микропроцессорные системы"), страница 3

Задание № 2-2: Описать основы языка Ассемблер для ПЭВМ, систему команд, характеристики, назначение и организацию работы согласно своего варианта (№ по списку).

Задание

3

Система команд микропроцессора 8086.

Описание

6 Форматы команд микропроцессора 8086.

Для выполнения определенных действий процессору необходимо задать программу, описывающих порядок этих действий. Независимо от выбранного языка программирования, исходная программа должна быть преобразована (оттранслированная) программой транслятором в последовательность команд (кодов), понятных на машинном уровне.

Структура машинных команд зависит от применяемого процессора. Однако можно выделить ряд основных принципов, присущих их организации. Для организации работы процессор должен иметь следующую информацию:

·  действие или операцию, которые необходимо выполнить;

·  расположение операндов, над которыми необходимо выполнить действия;

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

Зная принципы построения команд для одного процессора, можно разобраться со структурой машинных команд других процессоров.

В МП 8086 используются команды переменной длины от 1 до 6 байт. Длина каждой команды определена разработчиками с учетом вероятности ее появления и, следовательно, сокращения времени выборки программ из памяти. Часто встречающиеся команды имеют короткие форматы (одно-, двух- и трехбайтные). Реже используемые команды — более длинные (четырех-, пяти- и шестибайтные).

В команде можно выделить несколько полей:

·  поле кода операции (КОП), указывающее процессору действия, которые необходимо выполнить в соответствии полученной машинной командой;

·  поле данных или адресов расположения операндов, над которыми необходимо выполнить действия. Обычно здесь могут быть указаны непосредственно операнды, адреса расположения или закон, позволяющий их найти;

·  поле специальных указателей, уточняющих режимы выполнения команд. Например, определение формата типа данных – байт или слово, уточнение местонахождение операндов.

Основные форматы машинных команд МП 8086 приведены на рисунке 6.1. Команды располагаются в памяти побайтно, в ячейках с последовательно возрастающими адресами. Выбираются они из памяти словами (по два байта) и загружаются в регистр очереди команд в. устройстве сопряжения с шиной.

Запомнить двоичные коды машинных команд и записывать их без ошибок очень трудно. В языке Ассемблер машинная команда записывается в виде мнемокодов, что значительно облегчает их запоминание и написание программ. При трансляции программ с языка Ассемблер в машинные коды, каждой команде программы соответствует только одна машинная команда. Если необходимо посмотреть ассемблерную программу в машинных кодах, то можно посмотреть листинг нашей программы, если оттранслировать исходную программу с расширением *.asm с ключом /L.

Первый байт команды всегда содержит код операции. Причем в ряде команд нулевой разряд (поле w) несет информацию о длине операндов (w = 0 — байт, w == 1 — слово), а первый разряд (поле d) определяет нахождение полей источника и/или приемника информации.

Второй байт для большинства команд может быть трех типов:

·  постбайт, определяющий откуда брать операнд (операнды) и/или куда направлять результат операции. В некоторых командах разряды 5—3 постбайта (поле reg) могут использоваться для расширения кода операции;

·  адрес порта ввода-вывода в двухбайтных командах, задающих прямой адрес порта в диапазоне 00h— 0FFh;

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

Последующие байты в длинных командах содержат 8- или 16-разрядное смещения (displacement, dis) и/или непосредственный операнд, также 8- или 16-разрядный. Если в команде присутствуют и смещение, и непосредственный операнд, то сначала следует смещение, а затем операнд. И для 16-разрядного смещения, и для 16-разрядного операнда всегда первым указывается младший байт, а вторым — старший (адрес старшего байта на 1 больше адреса младшего)




Однобайтная команда  КОП – код операции

 

КОП

 

Постбайт, адрес порта ввода/вывода, 8-ми разрядное смещение

 

КОП

 

Непосредственный 8-ми разрядный операнд или 8-ми разрядное смещение

 

КОП

Оп/см

 

Непосредственный 16-ми разрядный операнд, 16-ми разрядное смещение

 

КОП

Оп/см

 мл. байт

Оп/см

ст. байт

 

Непосредственное 16-ми разрядное смещение, 8-ми разрядный операнд

 

КОП

Смещение

 мл. байт

смещение

 ст. байт

Операнд

 

Непосредственное 16-ми разрядное смещение, 16-ми разрядный операнд

 

КОП

Смещение

 мл. байт

смещение

 ст. байт

операнд

мл. байт

операнд

ст. байт

Рисунок 6.1 — Форматы команд микропроцессора 8086.

Восьмиразрядное смещение при формировании адреса расширяется до шестнадцатиразрядного содержимым старшего (знакового) разряда. Например, если задан байт смещения 7Eh, то он расширяется до 007Eh, если задан байт 0А3h, то он расширяется до 0FFA3h. Смещение трактуется МП как целое двоичное число со знаком в дополнительном коде, лежащее в пределах —128 — + 127 (для 8-разрядного смещения) или —32768 — + 32767 (для 16-разрядного смещения).