Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

1.4 Классификация системы команд МП 8086




1. 4 Классификация системы команд МП 8086

Система команд МП 8086 определяет команды, которые может выполнять процессор. По функциональному назначению все команды МП 8086 можно разбить на следующие группы:

1. Команды пересылки данных. Позволяют записывать в регистры и ячейки памяти значения, взятые из других регистров или ячеек памяти.

2. Арифметические команды. Включают в себя команды сложения, вычитания, умножения, деления, изменения знака, команды двоично-десятичной арифметики.

3. Логические команды. Относятся команды побитовых логических операций, таких как И, ИЛИ, НЕ, исключающее ИЛИ, команды логических и арифметических сдвигов.

4. Строковые или цепочечные команды. По выполняемым функциям аналогичны командам пересылки данных, но позволяют выполнять пересылки данных для длинных последовательностей байт или слов, а также выполнять пересылки вида «память-память».

5. Команды для работы со стеком. Включают в себя команды добавления элемента в стек, команды выталкивания элемента из стека и некоторые другие команды.

6. Команды ввода-вывода. Позволяют записывать значения в аппаратные порты ввода-вывода, а также считывать значения из этих портов.

7. Команды передачи управления. Включают в себя команды условных и безусловных переходов, команды вызова процедур и команды для работы с прерываниями. Эта группа команд позволяет передавать управление процессора не на следующую команду, а на какой-либо другой участок программы или операционной системы. При этом команды условных и безусловных переходов позволяют выполнять эти действия в зависимости от определенного условия. Если условие истинно, то управление передается на указанный участок программы, если ложно, то на следующую команду программы.

8. Команды управления состоянием МП. Позволяют изменять значения управляющих битов регистра флагов.

Все команды МП 8086 являются одноадресными. Это означает, что в команде в качестве операнда указывается адрес максимум одной ячейки памяти. Например, с использованием команд пересылки данных нельзя за одну команду выполнить запись из одной ячейки памяти в другую – нужно использовать промежуточный регистр. Операцию пересылки данных из одной ячейки памяти в другую за одну команду можно выполнить при использовании цепочечных команд, но в этих командах адреса указываются не в самой команде, а в индексных регистрах SI и DI.

Машинные команды МП 8086 занимают от 1 до 6 байт в зависимости от количества и размера операндов.

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

Мнем_обозначение [операнд1[, операнд2]]

 

При этом команды МП 8086 могут иметь один операнд, два операнда или вообще не иметь операндов. Операнды команды определяют ее входные данные или место, где должен размещаться результат выполнения команды и перечисляются через запятую. В конце строки никаких символов завершения строки не ставится. Пример записи команды на языке ассемблера:

MOV AX, [BX + 2].

 

1. 5 Физические и логические сегменты

Физическим сегментом называется сегмент в адресном пространстве процессора, определяемый значением какого-либо сегментного регистра. Логический или программный сегмент является аналогом физического сегмента, но в языке ассемблера логический сегмент представляет собой синтаксическую конструкцию, позволяющую объединить команды или данные в один физический сегмент. При выполнении программы каждому программному сегменту ставится в соответствие определенный физический сегмент. Те команды и данные, которые при написании программы размещались в программном сегменте, будут размещены в памяти в физическом сегменте. Синтаксис программного сегмента для транслятора Turbo Assembler следующий:

< имя_сегмента> SEGMENT < параметры>

< предложение>

. . .

< предложение>

< имя_сегмента> ENDS

 

Каждому программному сегменту при его объявлении в программе дается имя, которое может быть любым сочетанием букв латинского алфавита и цифр, но должно начинаться с буквы латинского алфавита и не должно совпадать с директивами, зарезервированными и ключевыми словами языка ассемблера, а также не должно содержать пробелов и других разделителей. Это правило является общим при определении имен различных элементов программы на ассемблере. Имя сегмента повторяется дважды: перед директивой SEGMENT, которая определяет начало программного сегмента и перед директивой ENDS, которая определяет конец программного сегмента. Внутри программного сегмента записываются предложения, представляющие собой мнемонические обозначения команд процессора или директивы языка ассемблера. Количество предложений в программном сегменте может быть любым, но в сумме они не должны в откомпилированном виде превышать 64 Кб, так как размер физического сегмента равен 64 Кб. Параметры программного сегмента определяют, в основном, правила объединения нескольких сегментов большой программы. Для небольших программ параметры сегмента могут вообще не указываться. Пример программного сегмента:

MySegment SEGMENT

MOV AX, BX

MOV BX, [SI + 2]

MOV [SI + 2], AX

MySegment ENDS

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...