5.2. Описание обозначения

+rb, +rw, +rd Код регистра (от 0 до 7), который складыва­ется с указанным слева от знака плюс шестнадцетиричным числом (байтом) с лбразованием байта кода операции. Регистрам присво­ены следующие коды :

rb rw rd

AL=0 AX=0 EAX=0

CL=1 CX=1 ECX=1

DL=2 DX=2 EDX=2

BL=3 BX=3 EBX=3

AH=4 SP=4 ESP=4

CH=5 BP=5 EBP=5

DH=6 SI=6 ESI=6

BH=7 DI=7 EDI=7

/цифра Цифра, стоящая справа от косой черты, имеет, вооб­ще говоря, значение от 0 до 7. Она показывает, что в байте MOD R/M указывается только один операнд r/m (регистр/память). Сама цифра помещается в поле reg и образует расширение кода опера­ции.

/r Обозначение показывает, что байт MOD R/M содержит два операнда (reg и r/m).

cb, cw, cd, cp Величина размером 1 байт (cb), 2 байта (cw), 4 байта (cd) или 6 байт (cp) следует за кодом операции и определяет относительный адрес, а также, возможно новое значе­ние программного сегмента.

ib, iw, id Непосредственный операнд размером 1 байт (id), 2 байта (iw) или 4 байта (id) следует за байтами кода опера­ции, MOD R/M или SIB. Код операции указывает, является ли опе­ранд знаковой величиной.

imm8 Непосредственный операнд размером 1 байт. Величина imm8 является знаковой величиной между -128 и +127 включитель­но. В командах, где размер второго операнда составляет слово или двойное слово, величина imm8 расширяется до слова или двойного слова. Старшие байты расширенной величины заполняются старшим битом непосредственного операнда.

imm16 Непосредственный операнд размером 1 слово. Исполь­зуется в командах с атрибутом размера операнда 16 разрядов. Может иметь значение от -32768 до +32767 включительно.

imm32 Непосредственный операнд размером 1 двойное слово. Используется в командах с атрибутом размера операнда 32 разря­да. Может иметь значение от -2147483648 до +2147483647 включи­тельно.

m8 Байт памяти. Адресуется через регистры DS:SI или ES:DI.

m16 Слово памяти.

m32 Двойное слово памяти.

moffs8, moffs16, moffs32 Относительный адрес. Простая пе­ременная типа BYTE, WORD или DWORD, используемая некоторыми вариантами команды MOV. Фактический адрес записывается в виде простого смещения относительно базы сегмента. Число при аббре­виатуре "moffs" указывает разрядность смещения определяемую аттрибутом размера адреса в команде. Байт MOD R/M в команде не используется.

ptr16:16, ptr16:32 Указатель FAR (дальний). Обычно он на­ходится в другом программном сегменте по отношению к команде. Обозначение 16:16 говорит о том, что указатель состоит из двух частей. Величина слева от двоеточия - это смещение в сегменте приемнике. Величина справа от двоеточия - это 16-разрядный се­лектор или величина, предназначенная для регистра программного сегмента. Если атрибут размера операнда команды равен 16, используйте 16:16. Для 32-разрядного атрибута используйте 16:32.

r8 Один из байтовых регистров: AL, CL, DL, BL, AH, CH, DH, BH.

r16 Один из однословных регистров: AX, CX, DX, BX, SP, BP, SI, DI.

r32 Один из двухсловных регистров: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI.

rel8 Смещение для перехода в диапазоне от 128 байтов пе­ред концом команды до 127 байтов после конца команды.

rel16, rel32 Смещение для перехода в том же программном сегменте, что и ассемблируемая команда, rel16 относится к ко­мандам с атрибутом размера операнда 16 разрядов. rel32 от­носится к командам с атрибутом размера операнда 32 разряда.

r/m8, r/m16, r/m32 Соответственно одно-, двух- и четырех­байтовый операнд. Представляет собой содержимое либо памяти, либо регистра.

rrr Когда обозначение rrr появляется в колонке двоичного эквивалента кода операции, оно указывает конкретный адресуемый регистр.

000 = AX/EAX 100 = SP/ESP

001 = CX/ECX 101 = BP/EBP

010 = DX/EDX 110 = SI/ESI

011 = BX/EBX 111 = DI/EDI

Sreg Регистр сегмента. Кодирование сегментных регистров в поле reg: ES=0, CS=1, DS=3, FS=4, GS=5.

5.3. Список команд

AAA ASCII-коррекция после сложения.

Команда AAA преобразует содержимое регистра AL в неупако­ванное десятичное число и сбрасывает его старшие четыре разря­да. Она должна всегда следовать за сложением двух неупакован­ных десятичных операндов в AL. Если возникает перенос, уста­навливается флаг CF и происходит инкремент в регистре AH.

AAD ASCII-коррекция регистра AX перед делением.

Команда AAD преобразует число в регистрах AH и AL, подго­тавливая деления двух неупакованных десятичных операндов так, чтобы полученное в результате деления частное было бы правиль­ным неупакованным десятичным числом. В регистре AH должна на­ходится старшая цифра, в AL - младшая. Команда AAD корректиру­ет число и помещает результат в AL. Регистр AH содержит 0.

AAM ASCII-коррекция в регистре AX после умножения. Команда AAM корректирует результат умножения двух неупа-

кованных десятичных чисел. Эта команда должна всегда следовать за умножением двух десятичных цифр с целью образования пра­вильного десятичного результата. Старшая цифра помещается в регистр AH, младшая - в AL.

AAS ASCII-коррекция регистра AL после вычитания.

Команда AAS преобразует содержимое регистра AL в неупако­ванную десятичную цифру и заполняет нулями старшие четыре раз­ряда. Эта команда должна всегда следовать за вычитанием одного неупакованного десятичного операнда из другого в AL. Флаг CF устанавливается, а при наличии займа выполняется декремент в регистре AH.

ADC Сложение с переносом целых чисел.

Команда ADC суммирует операнды, прибавляет 1, если уста­новлен флаг CF, и помещает результат по адресу назначения. Ес­ли флаг CF сброшен, команда ADC выполняет ту же операцию, что и ADD. Комбинация команды ADD и нескольких команд ADC позволя­ет складывать числа, содержащие более 32 разрядов.

ADD Сложение целых чисел.

В результате выполнения команды операнд-приемник заменя­ется суммой обоих операндов (источника и приемника). При нали­чии переполнения устанавливается флаг CF.

AND Логическое И.

Команда AND используется для сброса битов, указанных пользователем, например бита четности во входном потоке кодов ASCII от терминала. Будучи использована совместно с командой сравнения, команда AND позволяет убедиться, что указанные биты установлены.

ARPL Коррекция в селекторе уровня привилегий инициато­ра запроса.

Команда ARPL используется системными программами для обеспечения правильности передачи подпрограмме селекторов в качестве параметров. Селекторы не должны требовать больше при­вилегий, чем разрешено инициатору запроса.

В команде ARPL используются два операнда. первый предс­тавляет собой 16-разрядный регистр или слово памяти, содержа­щее значение селектора. В качестве второго операнда обычно выступает регистр, содержащий значение селектора программного сегмента CS инициатора запроса.

BOUND Проверка индекса массива на выход за границы. Команда BOUND проверяет, лежит ли знаковая величина, на-

ходящаяся в заданном регистре, внутри заданных границ. Если значение этой величины меньше нижней границы или больше верх­ней, возникает прерывание 5. Каждое из значений верхней и ниж­ней границ может быть словом или двойным словом.

BSF прямое сканирование битов.

Эта команда сканирует слово или двойное слово в поисках бита, равного 1, и заносит в регистр номер первого установлен­ного бита. Сканируемая строка может находиться как в регистре, так и в памяти. Если все слово равно 0, т.е. в нем нет единич­ных битов, устанавливается флаг ZF. Если единичный бит найден, флаг ZF сбрасывается.

BSR Обратное сканирование битов.

Эта команда действует также как и BSF, но начинает скани­рование со старшего бита. Это новая команда, специфичная для МП 80386.

BT Проверка бита.

Команда BT служит для определения того, установлен или нет определенный бит в битовом массиве. Значение проверяемого бита копируется во флаг CF. Это новая команда, специфичная для МП 80386.

BTC Проверка и инверсия бита.

Команда BTC проверяет указанный бит, копирует его в CF и инвертирует найденный бит. Это новая команда, специфичная для МП 80386.

BTR Проверка и сброс бита.

Команда BTR проверяет указанный бит, копирует его в CF и сбрасывает найденный бит. Это новая команда, специфичная для МП 80386.

BTS Проверка и установка бита.

Команда BTS проверяет указанный бит, копирует его в CF и устанавливает в найденном бите значение 1. Это новая команда, специфичная для МП 80386.

CALL Вызов процедуры.

Команда CALL передает управление из одной точки программ­ного сегмента в другую. Эти точки могут располагаться в одном и том же программном сегменте (ближний переход) или принадле­жать разным сегментам (дальний переход). Перед собственно пе­редачей управления команда CALL сохраняет в стеке адрес следу­ющей за CALL команды и текущее содержимое регистра EIP.

Команды CALL могут быть относительными, прямыми и косвен­ными. В косвенной команде абсолютный адрес перехода указывает­ся одним из двух способов: (1) МП извлекает адрес приемника из ячейки памяти, определенной в команде; (2) программа переходит в точку адрес которой указан в одном из регистров общего наз­начения.

CBW Преобразование байта в слово.

Эта команда расширяет значение бита знака в старшую часть более длинного регистра так, чтобы арифметические операции над содержимым этого регистра давали правильные результаты.

CWD Преобразование слова в двойное слово.

Действие команды аналогично команде CBW.

CLC Сброс флага переноса.

Команда сбрасывает флаг CF.

CLD Сброс флага направления.

Команда сбрасывает флаг DF. Если флаг DF сброшен, автома­тическая индексация будет выполняться с инкрементом. Автомати­ческая индексация используется командами обработки строк.

CLI Сброс флага прерываний.

Если текущий уровень привилегий по крайней мере столь же высок, как уровень привилегий ввода-вывода, команда сбрасывает флаг прерываний.

CLTS Сброс флага переключения задачи в управляющем ре­гистре 0.

Команда сбрасывает флаг TS в CR0. В МП 80386 флаг TS ус­танавливается каждый раз при переключении задачи. Команда ис­пользуется в системном программировании. Она представляет со­бой привилегированную команду, выполняемую только на нулевом уровне привилегий.

CMC Инвертирование флага переноса.

Команда инвертирует флаг переноса CF.

CMP Сравнение.

Команда выполняет вычитание операнда-источника из операн­да-приемника. В соответствии с результатом вычитания команда устанавливает состояние флагов, но не изменяет сами операнды.

CMPS Сравнение строковых операндов.

Ассемблер всегда транслирует команду CMPS как одну из CMPSB, CMPSW, CMPSD. Эти команды предназначены только для операций над строками. Они сравнивают по одному элементу каж­дой строки, причем элементами могут быть байт, слово или двой­ное слово. Элементы строк адресуются через регистры ESI и EDI. После каждой строковой операции ESI и/или EDI автоматически получают положительное или отрицательное приращение и указыва­ют на следующие элементы строк. Если DF=0, в индексных регист­рах осуществляется инкремент, если DF=1 - декремент. В зависи­мости от результата вычитания строкового элемента по адресу ES:EDI из строкового элемента по адресу DS:ESI устанавливаются флаги результата. Если команда модифицирована с помощью пре­фиксов, МП выполняет сравнение текущего элемента строки с со­держимым регистра EAX или его части (AL или AX).

CMPSB Сравнение строковых байтов.

CMPSW Сравнение строковых слов.

CMPSD Сравнение строковых двойных слов.

CDQ Преобразование двойного слова в четверное.

CWDE Преобразование слова в двойное слово с расширением.

DAA Десятичная коррекция в регистре AL после сложения. Команда корректирует результат сложения двух правильных

упакованных десятичных операндов в регистре AL. Эта команда должна всегда следовать за сложением двух пар упакованных де­сятичных чисел, чтобы получить в результате пару правильных упакованных десятичных цифр.

DAS Десятичная коррекция в регистре AL после вычитания. Команда DAS аналогична команде DAA за исключением, что

коррекция выполняется путем вычитания 6 из полубайтов регистра AL вместо прибавления 6.

DEC Декремент на 1.

Команда вычитает 1 из операнда приемника. Состояние флага CF не изменяется.

DIV Деление целых чисел без знака.

Команда выполняет деление числа без знака в аккумуляторе на операнд-источник. Размер делимого в битах в два раза больше размера делителя. Если делитель равен 0, или если частное не помещается в назначенный регистр, возбуждается прерывание 0.

ENTER Создание кадра стека для параметров процедуры Команда создает кадр стека, который можно использовать

для реализации правил языков высокого уровня с блочной струк­турой. Команда LEAVE в конце процедуры выполняет обратные действия.

Команда имеет два параметра. Первый определяет число бай­тов динамической памяти, выделяемых в стеке для вызванной программы. Второй параметр соответствует лексическому уровню вложенности программы (от 0 до 31). Этот уровень определяет, сколько наборов указателей кадра стека копируются центральным процессором в новый кадр стека из текущего кадра.

ESC Расширение процессора

Арифметический сопроцессор предоставляет расширение

системы команд МП 80386. Сопроцессор поддерживает высокоточные

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

Команды сопроцессора включаются в общий поток команд, составляющих программу для МП 80386. Система выполняет команды сопроцессора в том порядке, в котором они появляются в потоке.

HLT Останов

Команда прекращает выполнение любых команд и переводит МП в состояние останова. Немаскируемые прерывания, операция за­пуска и разрешенные прерывания возобновляют работу процессора. Команда HLT обычно является последней командой в последова­тельности команд останова системы, например для сохранения состояния процесса после обнаружения сбоя питания.

IDIV Знаковое деление

Команда выполняет знаковое деление. Делимому, частному и остатку неявно назначаются определенные регистры, в то время как местонахождение делителя указывается явным образом. По форме делителя определяется, какие регистры должны использо­ваться. Если делитель равен нулю или частное слишком велико для регистра-приемника, возбуждается прерывание 0.

IMUL Знаковое целочисленное умножение

Команда выполняет операцию знакового целочисленного умно­жения. Команда имеет три варианта.

1. Однооперандная форма. Операнд может быть байтом, сло­вом или двойным словом в памяти или регистре общего назначе­ния. Команда использует содержимое регистров EAX и EDX в ка­честве операндов.

2. Двухоперандная форма. Один из операндов-источников мо­жет находиться в любом регистре общего назначения, в то время как другой может быть в регистре общего назначения или в памя­ти. Произведение размещается на месте операнда в регистре об­щего назначения.

3. Трехоперандная форма. Два операнда представляют собой источники и один приемник. Один из операндов-источников явля­ется непосредственным значением, записанным в команде. Второй может находиться в памяти или в любом регистре общего назначе­ния. Произведение может быть записано в любой регистр общего назначения. Непосредственный операнд считается знаковым. Если он является байтом, процессор перед выполнением умножения ав­томатически расширяет его знак до размера второго операнда.

IN Ввод из порта

Команда вводит байт или слово из порта и записывает его в регистре (AL, AH, EAX). Порт указывается вторым операндом. Для доступа к порту его номер следует поместить в регистр DX и использовать команду IN с обозначением DX в качестве второго параметра.

INC Инкремент на 1.

Команда прибавляет 1 к операнду-приемнику, но в отличие от ADD не влияет на флаг CF.

INT Вызов процедуры обработки прерывания

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

Команда INTn активизирует программу обработки прерывания, соответствующую номеру, указанному в команде. Команда может определять прерывание любого типа. Заметьте, что прерывания


Информация о работе «80386 процессор»
Раздел: Компьютерные науки
Количество знаков с пробелами: 44298
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
38039
3
0

... высокой производительности. Реализация потенциала архитектуры требует новейшей микроэлектронной технологии, точного разделения функций и внимания к внешним операциям кристалла, в особенности к взаимодействию процессора с памятью. Включение этих свойств обеспечивает 80386 самую высокую произвидительность по сравнению с любым другим существующим микропроцессором. Микропроцессор 80386 реализован ...

Скачать
82626
0
0

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

Скачать
132006
3
0

... преодолеть присущие архитектуре х86 ограничения (различная длина инструкций). В случае использования ин­струкций различной длины, чипы 4-го поколения могут одновременно об­рабатывать 1 команду, процессоры 5-го поколения (Pentium) - 2 коман­ды. И только микропроцессор AMD5k86 способен обрабатывать до 4 ин­струкций за такт. Использование раздельного КЭШа инструкций и данных (объем КЭШа инструкций ...

Скачать
51860
5
5

... Особенность однокристального микропроцессора – наличие внутренней шины, по которой происходит обмен информацией между устройствами микропроцессора. По функциональным возможностям микропроцессор соответствует процессору ЭВМ, выполненному на 20-40 ИС малой и средней степени интеграции, но обладает большим быстродействием, существенно меньшими размерами, массой, потребляемой мощностью и стоимостью. ...

0 комментариев


Наверх