Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Система команд i8086
Кратко остановимся на особенностях системы команд i8086, не вдаваясь в излишние подробности. i8086 отличается разнообразием форматов команд и способов адресации. Длина команды может составлять от 1 до 6 байтов, причем в первых двух байтах (иногда — в первом) определяется код операций, количество и длина операндов и способ их адресации. В остальных байтах команды могут размещаться непосредственный операнд, прямой адрес или смещение. Большинство команд i8086 являются двухадресными, причем один адрес определяет регистр процессора, а другой — ячейку памяти или регистр. Операнд в памяти может адресоваться прямо или косвенно посредством содержимого базовых (ВР, ВХ) или индексных (SI, DI) регистров, а также их суммы. Предусмотрены многочисленные варианты относительной адресации, при которых логический адрес образуется как сумма двух или трех слагаемых — одного или двух регистров процессора и 8- или 16-разрядного смещения, размещаемого в команде. Режимы адресации спроектированы с учетом эффективной реализации языков высокого уровня. Например, к простой переменной можно обратиться в режиме прямой адресации, а к элементу массива — в режиме косвенной адресации посредством ВХ, SI. Режим адресации через ВР предназначен для доступа к данным из сегмента стека, что удобно при реализации рекурсивных процедур и компиляторов языков высокого уровня. Система команд насчитывает 113 базовых команд, объединенных в следующие группы: □ команды передачи данных: · между регистрами и памятью (включая стек), обмен содержимым источника и приемника; · ввод, вывод, табличное преобразование; · загрузка исполнительного адреса в РОН, загрузка 4-байтового адресного объекта в регистры-указатели (начальный адрес сегмента и смещение в сегменте); · передача содержимого регистра F флагов в память, в стек и из стека; □ арифметические команды: · сложение, вычитание, умножение и деление двоичных чисел со знаком и без знака (произведение и делимое представляются числами двойной длины); · десятичная коррекция сложения и вычитания упакованных двоично-десятичных чисел; · десятичная коррекция сложения, вычитания, умножения и деления рас □ логические команды и сдвиги: · инверсия, конъюнкция, дизъюнкция, неравнозначность; · TEST— поразрядная конъюнкция операндов с установкой флагов, но без занесения результатов; · сдвиги на 1 или заданное число разрядов (константа сдвига располагается в CL); □ команды передачи управления: переходы, вызовы, возвраты имеют две разновидности — внутрисегментные («близкие») и межсегментные («дальние»). При близких передачах загружается только IP, при дальних — IP и CS. Передачи управления могут быть прямыми (целевой адрес — в команде) или косвенными (целевой адрес вычисляется с использованием стандартных режимов адресации). В 16 командах условных переходов проверяются отношения знаковых и беззнаковых чисел. Имеются 4 команды управления циклами, которые рассчитаны на размещение числа повторений цикла в регистре СХ; □ команды обработки цепочек данных манипулируют последовательностями байтов или слов в памяти. Время обработки цепочек этими командами гораздо меньше, чем соответствующей программной реализацией.
|