Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METOD_UKAZ_KURS.DOC
Скачиваний:
7
Добавлен:
04.04.2013
Размер:
2.07 Mб
Скачать

2.7. Примеры команд 32-разрядного процессора

При выполнении курсового проекта следует помнить, что:

1) для всех бинарных команд размерности первого и второго операндов должны совпадать;

2) попытка выполнения любой команды с операндом памяти, хотя бы один байт которого не умещается в данном сегменте, вызовет исключение #GP;

3) при невозможности обращения к требуемой странице памяти процессор вырабатывает исключение #PF(PageFault– отказ страницы).

ADC приемник, источник

ADC(AdditionwithCarry) – сложение с учетом значения флага переносаCF.

Действие:приемник = приемник + источник + CF.

Команда влияет на флаги OF,SF,ZF,AF,PF,CF, значения которых определяются результатом сложения.

Первый операнд команды – имя регистра или адрес ячейки памяти; второй операнд – имя регистра, адрес ячейки памяти или непосредственный операнд размером в байт, слово или двойное слово.

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

Алгоритм выполнения команды.

  1. Выборка* операнда приемники копирование его в регистр-накопитель.

  2. Выборка операнда источники сложение его с содержимым регистра-накопителя.

  3. Прибавление к содержимому накопителя значения флага переноса CF.

  4. Копирование содержимого накопителя в операнд приемник.

DIV делитель

DIV(DIVideunsigned) – беззнаковое деление операндовделимоеиделитель.

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

Размер операнда

Делимое

Делитель

Частное

Остаток

Слово/байт

AX

r8/m8

AL

AH

Дв.слово/слово

DX:AX

r16/m16

AX

DX

Здесь r– регистр,m– ячейка памяти.

После выполнения команды флаги OF,SF,ZF,AF,PF,CFимеют неопределенные значения.

Использование в качестве делителя непосредственных операндов не допускается.

Алгоритм выполнения команды.

  1. Выборка операнда делимоеи копирование его в регистр-накопитель.

  2. Выборка операнда делительи непосредственное деление на него содержимого накопителя, причем частное и остаток записываются в регистры, указанные в таблице. Например, при делении слова (в регистреAX) на байт (в регистре или ячейке памяти) частное (8 бит) будет записано в регистрAL, а остаток (8 бит) – в регистрAH.

MOV приемник, источник

MOV(MOVeoperand) – копирование содержимого операндаисточникв операндприемник.

Первый операнд – имя регистра или адрес ячейки памяти размером в байт, слово или двойного слово. Второй операнд – регистр, ячейка памяти или непосредственный операнд.

Команда не изменяет значения флагов.

Алгоритм выполнения команды.

Выборка операнда из источникаи копирование его вприемник, начиная с младших битов.

OR приемник, маска

OR (logical inclusive OR) – логическое включающее ИЛИ.

Действие:команда выполняет операцию логического ИЛИ над соответствующими парами бит операнда приемник и маска:

приемник = приемник OR маска

Первый операнд – имя регистра или адрес ячейки памяти размером в байт, слово или двойное слово. Второй операнд – регистр, ячейка памяти или непосредственный операнд.

Команда сбрасывает 0 флаги CFиOF; значение флагов SF, ZF, PF зависят от результата выполнения команды; флагAFостается неопределенным.

Алгоритм выполнения команды.

  1. Выборка операнда из приемникаи копирование его в накопитель.

  2. Побитовая дизъюнкция содержимого накопителя и маски.

  3. Копирование содержимого накопителя в приемник.

MOVSX приемник, источник

MOVSX(MOVewithSigneXtension) – пересылка со знаковым расширением.

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

Приемник– имя регистра или адрес ячейки памяти размером в байт, слово или двойное слово.

Источник– регистр, ячейка памяти или непосредственный операнд. Команда не изменяет значений флагов.

Алгоритм выполнения команды.

  1. Выборка операнда из источникаи копирование его вприемник, начиная с младших разрядов.

  2. Запись значения знакового бита источникав старшие разрядыприемника.

SUB операнд_1, операнд_2

SUB(SUBtract) – вычитание.

Действие:команда выполняет целочисленное вычитание:операнд_1 = операнд_2 – операнд_1. КомандаSUBне различает знаков операндов. Вместо этого она соответствующим образом устанавливает флаги.

Значение флагов OF, SF, ZF, AF, PF, CF зависят от результата выполнения команды.

Операнд_1– регистр или ячейка памяти размером байт, слово или двойное слово.

Операнд_2– регистр, ячейка памяти или непосредственный операнд того же размера, что иоперанд_1.

Алгоритм выполнения команды.

  1. Выборка значения второго операнда и запись его в накопитель.

  2. Выборка значения первого операнда и вычитание его из содержимого накопителя.

  3. Копирование содержимого накопителя в опернад_1.

Примечание.Изменение флагов производится либо в процессефактическоговыполнения команды (сложение, вычитание, деление, дизъюнкция), либо по его окончании.

* Выборка операнда из памяти осуществляется с использованием заданного режима адресации и страничной трансляции.

Соседние файлы в предмете Организация ЭВМ