СИСТЕМА КОМАНД микропроцессоров х86 Программные модели микропроцессоров х86 микропроцессоров х86 Архитектура Компьютеров2011.

Презентация:



Advertisements
Похожие презентации
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 1 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Advertisements

Лекция 6. Способы адресации в микропроцессорных системах.
С ИСТЕМА КОМАНД ЕОМ. С ТРУКТУРА ТА ФОРМАТИ КОМАНД.
Intel архитектура IA16 Основа большинства современных компьютеров.
Архитектура ЭВМ Практика 3. Линейные программы на языке ассемблера.
Числа со знаком и дополнительный код Синтаксис FASM Для записи отрицательного числа в программе на ассемблере используется символ -, например: x db -5.
Микропроцессоры Лекция 6. СТРУКТУРА ЭЛЕМЕНТАРНОГО МИКРОПРОЦЕССОРА (ЭМП) Основным устройством всех цифровых систем (ЦС) является центральный процессор.
Микропроцессоры и микропроцессорные системы. 1. Пересылка данных MOV приемник, источник- Пересылка данных Базовая команда пересылки данных. Копирует содержимое.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 3 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Арифметическиеи логические команды языка Ассемблер. Битовые команды.
Микропроцессорные системы ЭФУ АРХИТЕКТУРА 8-РАЗРЯДНОГО МИКРОПРОЦЕССОРА.
Архитектура ЭВМ Практика 2. Основы ассемблера..
Обзор архитектуры IA32/EM64T Юрий Долгов, Дмитрий Шкурко.
Программирование на языке низкого уровня Ассемблер.
Ф ОРМАТ КОМАНДЫ ПРОЦЕССОРА I NTEL С АРХИТЕКТУРОЙ IA-32.
Учебный курс Принципы построения и функционирования ЭВМ Лекция 10 Типы адресации. Стеки. Процессоры. ОЗУ. профессор ГУ-ВШЭ, доктор технических наук Геннадий.
Структурная схема 8-разрядного микропроцессора регистр флагов F ДШК РК АЛУ ВРВА А М SP IP СИД БА БД устройство управления РОН A15-A0.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 4 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Представление чисел в компьютере автор: Хайманова Т.Я. май 2008 г.
Тема 2. Способы адресации и система команд МП. Непосредственная адресация Суть способа. Требуемые данные (#data ̶ непосредственный операнд, константа)
Транксрипт:

СИСТЕМА КОМАНД микропроцессоров х86 Программные модели микропроцессоров х86 микропроцессоров х86 Архитектура Компьютеров2011

ОСНОВНЫЕ ТЕМЫ ЛЕКЦИИ Программная модель МП I8086/88 Программная модель МП I80286 Программная модель МП 386+ Форматы данных МП 386+ Команды процессоров 386+ Архитектура Компьютеров2011

Очередь Команд (ОК) представляет собой набор байтовых регистров и выполняет роль регистра команд. Коды команд, выбираемые из памяти через Буфер Данных, записываются в Очередь Команд, длиной 6 байт, что соответствует максимально длинному формату команды. Наличие Очереди Команд позволяет совместить во времени выполнение команды в АЛУ и выборку следующей команды из памяти. МИКРОПРОЦЕССОР i8086 / 8088 (1978 / 1979 г.)

Структура МПС Дисплей Клавиатура ША ШУ ШД Таймер Линия связи АЛУ РОН 1 РОН 2 * * РОН n УУ БД БА МП ПЗУОЗУ Порт 1 Порт 2Порт m НМД ГТИ

СТРУКТУРА ПАМЯТИ МП I8086 / 88 Память для процессоров I8086/8088 представляется в виде линейной последовательности из 2 20 байт (1 МБайт). Каждому БАЙТУ назначен уникальный адрес (беззнаковое число) в диапазоне от 0 до Любые два смежных (или соседних) байта в памяти образуют СЛОВО. У каждого из двух байт в СЛОВЕ есть свой адрес, и младший из них принимается за адрес СЛОВА. ДВОЙНОЕ СЛОВО (4 байта) обычно используется для хранения логического адреса БАЙТ 0FFFFFh h h h СЛОВО h h Двойное СЛОВО 00054h L H L H 00055h 00056h 00057h

СЕГМЕНТАЦИЯ ПАМЯТИ И ВЫЧИСЛЕНИЕ АДРЕСОВ Для выборки ячейки памяти в адресном пространстве 1 Мбайт необходимо формировать 20-ти битовые адреса. Однако МП оперирует с 16-ти битовыми числами и поэтому может обратиться к блоку памяти, размером не более 64 КБайт. Такой «блок» называется СЕГМЕНТОМ ПАМЯТИ. Сегменты могут располагаться в любом месте памяти. Для указания начального адреса любого сегмента используются 16-ти битовые СЕГМЕНТНЫЕ РЕГИСТРЫ. Поэтому полный 20-ти разрядный адрес начала сегмента всегда имеет еще и четыре младших нулевых бита. Из этого следует, что сегменты начинаются по адресам, кратным 16.

В любой момент времени программа может обращаться к четырем сегментам, которые называются : текущий Сегмент Кода (команды)(CS) ; текущий Сегмент Данных(DS) ; текущий Сегмент Стека(SS) ; текущий Дополнительный Сегмент(ES). СЕГМЕНТЫ в памяти могут быть соседними (смежными), не перекрывающимися, частично или полностью перекрывающимися. ФИЗИЧЕСКИЙ АДРЕС ячейки памяти представ- ляет 20-ти битовое число, которое однозначно определяет положение каждого байта в пространстве памяти 1 МБайт.

ЛОГИЧЕСКИЙ АДРЕС ячейки памяти состоит из двух 16-ти битовых беззнаковых чисел: НАЧАЛЬНОГО АДРЕСА СЕГМЕНТА и ВНУТРИСЕГМЕНТНОГО СМЕЩЕНИЯ, которое определяет расстояние от начала сегмента до этой ячейки. Для вычисления ФИЗИЧЕСКОГО АДРЕСА началь- ный адрес сегмента умножается на 16 (сдвигается влево на 4 бита) и суммируется со смещением. Перенос из старшего бита, который может возник- нуть при суммировании, игнорируется. Это приводит к так называемой кольцевой организации памяти, при которой за ячейкой с максимальным адресом FFFFFh следует ячейка с нулевым адресом. Аналогичную кольцевую организацию имеет и каждый сегмент.

ПРОГРАММНАЯ МОДЕЛЬ МП I8086/88

Процессор i80286 Процессор i80286, выпущенный в 1982 году, представляет второе поколение 16-ти разрядных процессоров. Процессор имеет расширенную систему команд, которая включает все команды i8086/88 и несколько новых команд общего назначения, а также команды управления защитой. I80286 имеет специальные средства для работы в многопользовательских и многозадачных системах. Самым существенным отличием от I8086/88 является механизм управления виртуальной адресацией памяти, который обеспечивает 4-х уровневую систему защиты.

Процессор i80286 Процессор i80286 может работать в двух режимах: REAL ADDRESS MODE – режим реальной адресации (или просто реальный режим – REAL MODE) полностью совместимый с i8086. В этом режиме возможна адресация до 1 МБайта физической памяти. PROTECTED VIRTUAL ADDRESS MODE - защищенный режим виртуальной адресации (или просто – защищенный режим – PROTECTED MODE). В этом режиме процессор позволяет адресовать до 16 МБайт физической памяти, через которые могут отображаться до 1 ГБайта виртуальной памяти каждой задачи.

МИКРОПРОЦЕССОР I80386 (1985 г.) Основные цели разработки I пропорциональное улучшение всех технических характеристик при сохранении программной совместимости в объектных кодах с МП I8086/186/286. Основные преимущества: > полная 32-х разрядная архитектура; > возможность параллельной работы нескольких программ, работающих под управлением любой комбинации операционных систем PC-DOS, MS- DOS, UNIX, XENIX и др;

Основные технические характеристики i386 Разрядность обрабатываемых данных – 1; 8; 16; 32 бит. Максимальный объем прямо адресуемой памяти – 4 Гбайт (2 32 ). Максимальный объем виртуальной памяти – 64 Тбайт (2 46 ). Производительность – 3 4 млн. команд/с (средняя) при 16 МГц. Тактовая частота – 16 МГц; 25 МГц; 33 МГц

Основные технические характеристики i386 Максимальный размер сегмента – 4 Гбайт. Размер страницы – 4 Кбайт. Количество уровней привилегированности – 4. Количество выводов корпуса – 132. Степень интеграции – 275 тыс. транзисторов. Технология – CHMOS III (1,5мкм).

МП 386+ могут функционировать в трех режимах: REAL ADDRESS MODE – режим реальной адресации (РРА) – характеризуется тем, что МП работает как очень быстрый 8086 с 32-битовым расширением; в этом режи-ме возможна адресация 1 Мбайта физической памяти; PROTECTED ADDRESS MODE – режим защищенной виртуальной адресации (РВА) – реализует все достоинства МП. На одном процессоре в таком режиме могут одновременно исполняться несколько задач. При этом использование физического адресного пространства памяти управляется механизмами сегментации и транс- ляции страниц. VIRTUAL 8086 MODE – режим виртуального процессора 8086 (сокращенно – V86). Прикладная программа, которая выполняется в этом режиме, полагает, что она работает на процессоре Однако, некоторые команды, в основном связанные с управлением вводом-выводом, программе выполнять запрещается.

ПРОГРАММНАЯ МОДЕЛЬ 32-х РАЗРЯДНЫХ ПРОЦЕССОРОВ (386+) МП 386+ имеет 31 регистр (у PENTIUM+ – 32 регистра), разбитые на следующие группы: регистры общего назначения; сегментные регистры; указатель команд и регистр флагов (признаков); управляющие регистры; регистры системных адресов; отладочные регистры; тестовые регистры. Набор РЕГИСТРОВ ОБЩЕГО НАЗНАЧЕНИЯ включает соответствующие регистры процессоров I8086 и I Все эти регистры, кроме сегментных, имеют разрядность 32 бита и к прежнему обозначению их имен добавилась приставка E (Extended – расширенный).

ПРОГРАММНАЯ МОДЕЛЬ 32-х РАЗРЯДНЫХ ПРОЦЕССОРОВ (386+) 15 УКАЗАТЕЛЬ КОМАНД И РЕГИСТР ФЛАГОВ AX BX CX DX AHAL BH CH DH BL CL DL SI DI BP SP EAX EBX ECX EDX ESI EDI EBP ESP РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ CS SS DS ES FS GS СЕГМЕНТНЫЕ РЕГИСТРЫ Указатель команд – IP Флаги – FLAGS Команды Стек Данные EIP EFLAGS

ТИПЫ ДАННЫХ 32-х БИТОВЫХ ПРОЦЕССОРОВ Байт Слово 310 Двойное слово Байт Слово … … ЦЕЛОЕ БЕЗ ЗНАКА ЦЕЛОЕ СО ЗНАКОМ Двойное слово S S S

Новые команды процессоров 386+ поддерживают БИТОВЫЕ ДАННЫЕ: · БИТ – одиночный двоичный разряд. · БИТОВОЕ ПОЛЕ – группа до 32-х битов. · ЦЕПОЧКА БИТОВ (СТРОКА) – набор последовательных битов в ячейках памяти, длиной до 4 Гбит (31)031(15) ЦЦ …99 УПАКОВАННОЕ BCD-число (две цифры) Ц0…9 НЕУПАКОВАННОЕ BCD-число (одна цифра) 31(15)0 Близкий УКАЗАТЕЛИ Далекий 4

СИСТЕМА КОМАНД ПРОЦЕССОРОВ 386+ Система команд включает 9 групп команд: 1. передачи данных; 2. арифметические и логические; 3. сдвига; 4. обработки строк; 5. манипуляции битами; 6. передачи управления; 7. поддержки языков высокого уровня; 8. поддержки операционной системы; 9. управления процессором.

СИСТЕМА КОМАНД ПРОЦЕССОРОВ 386+ Команды могут содержать от 0 до 3 операндов, размещенных в регистрах, памяти или непосредственно в команде. Большинство безоперандных команд – однобай- товые. Однооперандные команды обычно – двухбай- товые. Средняя длина команды – 3,2 байта. Это позволяет хранить в среднем 5 команд в 16-ти байтовой ОЧЕРЕДИ КОМАНД БЛОКА ОПЕРЕ- ЖАЮЩЕЙ ВЫБОРКИ.

При использовании двух операндов возможны следующие типы взаимодействия: регистр регистр; память регистр; регистр память; непосредственный операнд регистр; непосредственный операнд память; память память.

РЕЖИМЫ (МЕТОДЫ) АДРЕСАЦИИ ПРОЦЕССОРОВ х86 Процессоры 386+ обеспечивает 13 режимов адресации, которые рассчитаны на эффективное выполнение программ, написанных на языках высокого уровня (ЯВУ) типа: С++, Фортран и др. НЕЯВНАЯ АДРЕСАЦИЯ. Операнд адресуется неявно, если в команде нет специальных полей для его определения, т.е. операнд задается полем команды. AAA; Коррекция регистра AL после сложения. CMC; Инверсия флага переноса. STD; Установить в 1 флаг направления.

РЕЖИМЫ (МЕТОДЫ) АДРЕСАЦИИ ПРОЦЕССОРОВ х86 РЕЖИМ РЕГИСТРОВОЙ АДРЕСАЦИИ – пред- назначен для адресации одного из регистров регистрового блока: INCESI; Инкремент регистра ESI SUBECX, ECX; Сбросить регистр ECX MOVEAX, CR0; Передать в EAX содержимое CR0.

РЕЖИМЫ (МЕТОДЫ) АДРЕСАЦИИ ПРОЦЕССОРОВ х86 РЕЖИМ НЕПОСРЕДСТВЕННОЙ АДРЕСАЦИИ – предназначен для адресации непосредственного операнда в команде с разрядностью 8, 16 или 32 бита : MOVEAX, 0F0F0F0F0h ; Загрузить константу в EAX ANDAL, 0Fh; Выделить младшую тетраду регистра AL BTEDI, 3; Передать во флаг CF третий бит регистра EDI

РЕЖИМЫ (МЕТОДЫ) АДРЕСАЦИИ ПАМЯТИ Имеется 10 режимов АДРЕСАЦИИ ПАМЯТИ. Исполнительный адрес включает в себя два компонента адреса ячейки памяти – СЕГМЕНТ и эффективный адрес (внутрисегментное смещение). ЭФФЕКТИВНЫЙ АДРЕС (ЕА) вычисляется суммированием следующих элементов : СМЕЩЕНИЕ (отклонение) – целая 8-ми или 32-х битовая величина со знаком, непосредственно задаваемая в команде (16-ти битовые отклонения могут использоваться при помощи префикса);

БАЗА – содержимое любых РОНов. Базовые регистры обычно используются компиляторами в качестве точки отсчета локальной области памяти; ИНДЕКС – содержимое любых РОНов, исключая ESP. Индексные регистры используются для доступа к элементам строк или массивов. МНОЖИТЕЛЬ - f - указывает шаг (1, 2, 4 или 8) для индексного регистра. Шаг индексации позволяет успешно адресовать массивы или структуры, содержащие многобайтовые операнды. EA = БАЗА + ИНДЕКС * (ШАГ НДЕКСАЦИИ) + ОТКЛОНЕНИЕ

КОМАНДЫ ПЕРЕДАЧИ ДАННЫХ Команда MOV передает байт, слово или двойное слово из источника в приемник. В поле операндов приемник находится на первом месте, источник – на втором. Команда XCHG осуществляет обмен байт, слов или двойных слов. Различий между приемником и источником нет. Команда XLAT заменяет значение в регистре AL на байт из таблицы, адресуемой регистром (Е)BX, причем индексом таблицы служит содержимое регистра AL. Эта команда удобна для преобразования из одного кода в другой.

КОМАНДЫ РАБОТЫ СО СТЕКОМ PUSH r/mПомещение (двойного) слова из регистра или памяти в стек PUSH immedПомещение непосредственного операнда в стек (286+) PUSHA (D)Помещение в стек регистров AX,CX,DX,BX,SP,BP,SI,DI (286+) или их 32-х битовых расширений (386+) Команда PUSH передает слово (или двойное слово) из источника в стек. Стек – это область памяти, в которой размещается текущий сегмент стека.

Регистр (Е)SP содержит смещение последнего включенного в стек слова; оно (смещение) называется ВЕРШИНОЙ СТЕКА. По мере включения в стек новых слов они располагаются по меньшим адресам памяти; говорят, что СТЕК РАСТЕТ В НАПРАВЛЕНИИ УМЕНЬШЕНИЯ АДРЕСОВ. Команда PUSH начинается с уменьшения (декремента) содержимого регистра (Е)SP на 2 (или 4), т.е. адресует следующее свободное слово (или двойное слово) в стеке; после чего передается (двойное) слово из источника. Команда POP передает слово (или двойное слово) из стека в приемник и завершается увеличением (инкрементом) содержимого (Е)SP на 2 (или на 4).

КОМАНДЫ РАБОТЫ СО СТЕКОМ POP r/mИзвлечение (двойного) слова данных из стека в регистр или память POPA (D)Извлечение данных из стека в регистры DI,SI,BP,SP,BX,DX,CX,AX (286+) или их 32-х битовых расши- рений (386+)

Команды целочисленной арифметики ADD r/m, r/m/i Сложение двух операндов: r/m (r/m + r/m/i) ADC r/m, r/m/i Сложение двух операндов с учетом переноса от предыдущей операции: r/m (r/m + r/m/i + CF) INC r/mУвеличение на 1: r/m (r/m + 1) SUB r/m, r/m/i Вычитание: r/m (r/m - r/m/i) SBB r/m, r/m/i Вычитание с заемом: r/m (r/m – r/m/i – CF) DEC r/mУменьшение на 1: r/m (r/m – 1)

Команды целочисленной арифметики MUL r/m Умножение AL/AX/EAX на беззнаковое целое значение из r/m IMUL r/m Умножение AL/AX/EAX на целое знаковое значение из r/m IMUL reg16/32, r/m Знаковое умножение reg16/32 на r/m (помещение результата без расширения разрядности в reg16/32) (16 бит – 286+; 32 бита – 386+) IMUL reg16/32, r/m, immed Знаковое умножение r/m на 16/32-х битовый непосредственный операнд и помещение результата без расширения разрядности в reg16/32 (16 бит – 286+; 32 бита – 386+) DIV r/m Деление расширенного аккумулятора на беззнаковое число из r/m IDIV r/m Знаковое деление расширенного аккумулятора на знаковое целое из r/m

В одноадресных командах MUL и IMUL один из сомножителей по умолчанию размещается в аккумуляторе, а второй сомножитель указан в команде. Результат умножения в два раза длиннее операндов. Разрядность операндов 1-й Множитель Результат Hi Результат Low 8ALAHAL 16AXDXAX 32EAXEDXEAX

В командах деления DIV и IDIV разрядность делимого должна вдвое превышать разрядность делителя, указанного в команде. Знак остатка при выполнении команды IDIV устанавливается равным знаку делимого. Разрядность делителя Делимое Hi Делимое Low ЧастноеОстаток 8AHAL AH 16DXAX DX 32EDXEAX EDX

Команда NEG r/m изменяет знак операнда в дополнительном коде. Команда CMP r/m, r/m/i (сравнение) аналогична команде вычитания, но результат нигде не запоминается. Эта команда выставляет флаги, по которым можно определить отношение между двумя операндами: равенство, больше или меньше. После команды СМР обычно используется команда условного перехода.

КОМАНДЫ с BCD-числами Система команд процессоров х86 позволяет выпол- нять арифметические действия над числами, представленными в ДВОИЧНО-ДЕСЯТИЧНОМ УПАКОВАННОМ ФОРМАТЕ (BCD код) или в коде ASCII, используемом при обмене информацией и при вводе с клавиатуры. Команда DAA – ДЕСЯТИЧНОЙ КОРРЕКЦИИ АК- КУМУЛЯТОРА ПОСЛЕ СЛОЖЕНИЯ BCD-чисел выполняет действия над содержимым AL следующим образом: если содержимое младшей тетрады AL больше 9 или установлен флаг AF = 1, то к содержимому AL добавляется 6 ; если после этого содержимое старшей тетрады AL стало больше 9 или установлен флаг CF, то число 6 добавляется к старшей тетраде AL.

Аналогичным образом выполняются действия над содержимым AL командой DAS – ДЕСЯТИЧНАЯ КОРРЕКЦИЯ ПОСЛЕ ВЫЧИТАНИЯ BCD-чисел: если младшая тетрада больше 9 или установлен флаг AF = 1, то из AL вычитается число 6; если после этого старшая тетрада больше 9 или установлен флаг CF = 1, то число 6 вычитается из старшей тетрады AL.

Перед выполнением арифметических команд над числами в коде ASCII необходимо очистить старшие тетрады этих чисел. Такие числа называются: распакованными (неупакованными). Команда ААА выполняет коррекцию числа в регистре AL, полученного в результате сложения двух распакованных десятичных операндов. Если содержимое младшей тетрады AL больше 9 или установлен флаг AF = 1, то к содержимому AL добавляется 6; после этого к AH прибавляется 1, очищается старшая тетрада AL, и устанавливаются флаги CF и AF.

Команда AAS выполняет коррекцию числа в регистре AL, полученного в результате вычитания двух распакованных десятичных операндов. Если содержимое младшей тетрады AL больше 9 или установлен флаг AF = 1, то из AL вычитается число 6; после этого из AH вычитается 1, очищается старшая тетрада AL, и устанавливаются флаги CF и AF. Команда AAM выполняет коррекцию числа в регистре AL, полученного после умножения двух распако- ванных десятичных операндов. Содержимое AL делится на 10; частное пересылается в АН, а остаток – в AL.

Команда AAD производит коррекцию делимого ДО ВЫПОЛНЕНИЯ команды деления. Для этого содержимое регистра AH умножается на 10 и результат прибавляется к содержимому в AL, старший байт аккумулятора АН очищается. Полученный операнд используется для обычного деления на распакованный делитель.

Команды логических операций AND r/m, r/m/iПобитовое «логическое И» TEST r/m, r/m/iПроверка бит (логическое И без записи результата – установка флагов) OR r/m, r/m/iПобитовое «логическое ИЛИ» XOR r/m, r/m/iПобитовое логическое «ИСКЛЮ- ЧАЮЩЕЕ ИЛИ» NOT r/mПобитовая инверсия

КОМАНДЫ СДВИГОВ Команды сдвигов и циклических сдвигов выполняют сдвиг 8/16/32-х битового операнда на 1 бит или на произвольное число бит (но не больше длины операнда). Для сдвигов более, чем на один бит, число сдвигов может быть записано предварительно в регистр CL или задано непосредственным операндом в команде (286+). Во всех командах сдвигов последний выдвига- емый бит помещается во флаг CF.

КОМАНДЫ ОБРАБОТКИ ЦЕПОЧЕК Под ЦЕПОЧКОЙ (строкой) понимается последова- тельность байт, слов или двойных слов в памяти. ЦЕПОЧЕЧНОЙ (строковой) ОПЕРАЦИЕЙ назы- вается операция, которая выполняется над каждым элементом цепочки. Например, цепочечная передача производит пересыл- ку целой цепочки из одной области памяти в другую. Перед выполнением цепочечных команд необходимо: - загрузить начальный (конечный) адрес цепочки- источника в регистры DS:(E)SI (допускается замена сегмента);

- загрузить начальный (конечный) адрес цепочки- приемника в регистры ES:(E)DI; - сбросить флаг DF=0 (командой CLD), если цепочки обрабатываются по возрастанию адресов, или установить флаг DF=1 (командой STD), если цепочки обрабатываются по убыванию адресов; - при использовании префикса повторения REP в регистр (E)СХ загрузить количество повторений цепочечной операции; - при работе с портами в регистр DX загрузить адрес порта.

КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ КОМАНДА БЕЗУСЛОВНОГО ПЕРЕХОДА с общей мнемоникой JMP имеет 5 форм, разли- чающихся расстоянием до адреса назначения от текущей команды и способом задания назначения (целевого адреса – target). - в коротком (SHORT) внутрисегментном переходе двухбайтовая команда JMP rel8 содержит во втором байте смещение в дополнительном коде; - команда прямого внутрисегментного перехода (NEAR) аналогична предыдущей, но полное смещение в дополнительном коде содержит 16 (или 32 бита), которое прибавляется к текущему значению (E)IP.

- в команде косвенного внутрисегментного пере- хода JMP r/m адрес целевого назначения (target) за- гружается в (E)IP из регистра или ячейки памяти. - команда прямого межсегментного перехода JMP prt содержит непосредственный операнд, содержа- щий: 16-ти битовый селектор, который загружается в регистр CS, и 16-ти (или 32-х) битовое смещение, загружаемое в (E)IP. - команда косвенного межсегментного перехода адресует в памяти полный 32-х (или 48-ми) битовый указатель – селектор : смещение. Селектор загружается в регистр CS, а смещение – в регистр (E)IP.

Команда CALL имеет такие же формы (относительную, прямую и косвенную), как и команда JMP; отсутствует только короткая (SHORT) форма. По воздействию на регистры CS и (E)IP команда CALL также соответствует команде JMP, но предварительно включает в текущий сегмент стека адрес возврата с соответствующей коррекцией указателя стека (E)SP. Команда RET – возврат из подпрограммы – восстанавливает из стека адрес возврата с соответ- ствующей коррекцией указателя стека (E)SP

КОМАНДЫ УСЛОВНЫХ ПЕРЕХОДОВ Команды условных переходов осуществляют передачу управления в зависимости от результатов предыдущих операций. Все команды условных переходов производят передачу управления только в пределах текущего сегмента кода (т.е. содержимое сегментного регистра CS не изменяется), если заданное в команде условие удовлетворяется. Переход реализуется прибавлением находящегося в команде смещения (в дополнительном коде) к содержимому регистра (E)IP.

JMP targetБезусловный переход к целевому адресу target J(E)CXZ target Условный переход, если (E)CX = 0 LOOP targetДекремент (E)CX и переход, если (E)CX 0 Jccc targetКоманды условного перехода CALL targetВызов процедуры (подпрограммы) RET (n)Возврат из процедуры. Необязатель- ный параметр n задает коррекцию значения указателя стека

В мнемокодах команд условных переходов при сравнении чисел со знаком используются буквы: – G (greater) – больше, – L (less) – меньше. Для чисел без знака:– A (above) – над, выше, – B (below) – под, ниже. Условие равенства: – E (equal) – равно; Невыполнение некоторого условия: – N (not) – не. Для некоторых команд условных переходов зарезервированы два или три альтернативных мнемокода, подчеркивающих содержательный смысл проверяемого условия.

Мнемоника поля ссс Состояние флагов Условие перехода OOF=1Переполнение NOOF=0Не переполнение B/NAE/CCF=1Ниже / не выше или равно AE/NB/NCCF=0Не ниже / выше или равно E/ZZF=1Равно / нуль NE/NZZF=0Не равно / не нуль BE/NACF=1 & ZF=1Ниже или равно / не выше NBE/ACF=0 & ZF=0Не ниже или равно / выше

Мнемоника поля ссс Состояние флагов Условие перехода SSF=1 Есть знак (отрицательный) NSSF=0 Нет знака (положительный) P/PEPF=1 Есть паритет / четный паритет NP/POPF=0 Нет паритета / нечетный паритет L/NGEZFOF Меньше / не больше или равно NL/GESF=OF Не меньше / больше или равно LE/NG(SFOF) & ZF=1 Меньше или равно / не больше NLE/GSF=(OF & ZF) Не меньше или равно / больше SSF=1 Есть знак (отрицательный)

Вопросы для экспресс-контроля Назначение и размер очереди команд в процессорах х86 Основные отличия процессоров i8086, i80286, i80386 Назовите форматы данных процессоров i8086, i80286, i Назовите основные группы команд процессоров i8086, i80286, i Назовите основные методы адресации В чем отличие команд JMP и CALL

Лекция окончена СПАСИБО ЗА ВНИМАНИЕ