- •Методические указания
- •1. Цель и практическое содержание методических указаний
- •2.2. Регистры и стек 32-разрядных процессоров Регистры
- •Регистры общего назначения
- •2.3. Организация памяти
- •Типы адресов
- •Режимы адресации
- •2.4. Прерывания и исключения
- •2.5. Основные понятия Защищенного режима работы процессора
- •2.6. Механизмы страничной переадресации
- •Базовый механизм страничной переадресации.
- •Режим pse
- •Режим pae.
- •2.7. Примеры команд 32-разрядного процессора
- •3. Задание на выполнение работы
- •Варианты задания
- •4. Содержание отчета по курсовой работе
- •5. Оформление пояснительной записки
2.7. Примеры команд 32-разрядного процессора
При выполнении курсового проекта следует помнить, что:
1) для всех бинарных команд размерности первого и второго операндов должны совпадать;
2) попытка выполнения любой команды с операндом памяти, хотя бы один байт которого не умещается в данном сегменте, вызовет исключение #GP;
3) при невозможности обращения к требуемой странице памяти процессор вырабатывает исключение #PF(PageFault– отказ страницы).
ADC приемник, источник
ADC(AdditionwithCarry) – сложение с учетом значения флага переносаCF.
Действие:приемник = приемник + источник + CF.
Команда влияет на флаги OF,SF,ZF,AF,PF,CF, значения которых определяются результатом сложения.
Первый операнд команды – имя регистра или адрес ячейки памяти; второй операнд – имя регистра, адрес ячейки памяти или непосредственный операнд размером в байт, слово или двойное слово.
Регистры и ячейки памяти, указываемые в качестве операндов, также имеют размер байт, слово или двойное слово. Размерности первого и второго операнда должны совпадать.
Алгоритм выполнения команды.
Выборка* операнда приемники копирование его в регистр-накопитель.
Выборка операнда источники сложение его с содержимым регистра-накопителя.
Прибавление к содержимому накопителя значения флага переноса CF.
Копирование содержимого накопителя в операнд приемник.
DIV делитель
DIV(DIVideunsigned) – беззнаковое деление операндовделимоеиделитель.
Действие:делимое задается неявно, и его размер зависит от размера делителя. Местоположение делимого, делителя, частного и остатка, в зависимости от из размера, показаны в следующей таблице.
Размер операнда |
Делимое |
Делитель |
Частное |
Остаток |
Слово/байт |
AX |
r8/m8 |
AL |
AH |
Дв.слово/слово |
DX:AX |
r16/m16 |
AX |
DX |
Здесь r– регистр,m– ячейка памяти.
После выполнения команды флаги OF,SF,ZF,AF,PF,CFимеют неопределенные значения.
Использование в качестве делителя непосредственных операндов не допускается.
Алгоритм выполнения команды.
Выборка операнда делимоеи копирование его в регистр-накопитель.
Выборка операнда делительи непосредственное деление на него содержимого накопителя, причем частное и остаток записываются в регистры, указанные в таблице. Например, при делении слова (в регистреAX) на байт (в регистре или ячейке памяти) частное (8 бит) будет записано в регистрAL, а остаток (8 бит) – в регистрAH.
MOV приемник, источник
MOV(MOVeoperand) – копирование содержимого операндаисточникв операндприемник.
Первый операнд – имя регистра или адрес ячейки памяти размером в байт, слово или двойного слово. Второй операнд – регистр, ячейка памяти или непосредственный операнд.
Команда не изменяет значения флагов.
Алгоритм выполнения команды.
Выборка операнда из источникаи копирование его вприемник, начиная с младших битов.
OR приемник, маска
OR (logical inclusive OR) – логическое включающее ИЛИ.
Действие:команда выполняет операцию логического ИЛИ над соответствующими парами бит операнда приемник и маска:
приемник = приемник OR маска
Первый операнд – имя регистра или адрес ячейки памяти размером в байт, слово или двойное слово. Второй операнд – регистр, ячейка памяти или непосредственный операнд.
Команда сбрасывает 0 флаги CFиOF; значение флагов SF, ZF, PF зависят от результата выполнения команды; флагAFостается неопределенным.
Алгоритм выполнения команды.
Выборка операнда из приемникаи копирование его в накопитель.
Побитовая дизъюнкция содержимого накопителя и маски.
Копирование содержимого накопителя в приемник.
MOVSX приемник, источник
MOVSX(MOVewithSigneXtension) – пересылка со знаковым расширением.
Действие:команда преобразует операнд со знаком в эквивалентный ему операнд со знаком большей размерности. Для этого содержимое операндаисточник, начиная с младших разрядов, записывается в операндприемник. Старшие биты операндаприемникзаполняются значением знакового разряда операндаисточник.
Приемник– имя регистра или адрес ячейки памяти размером в байт, слово или двойное слово.
Источник– регистр, ячейка памяти или непосредственный операнд. Команда не изменяет значений флагов.
Алгоритм выполнения команды.
Выборка операнда из источникаи копирование его вприемник, начиная с младших разрядов.
Запись значения знакового бита источникав старшие разрядыприемника.
SUB операнд_1, операнд_2
SUB(SUBtract) – вычитание.
Действие:команда выполняет целочисленное вычитание:операнд_1 = операнд_2 – операнд_1. КомандаSUBне различает знаков операндов. Вместо этого она соответствующим образом устанавливает флаги.
Значение флагов OF, SF, ZF, AF, PF, CF зависят от результата выполнения команды.
Операнд_1– регистр или ячейка памяти размером байт, слово или двойное слово.
Операнд_2– регистр, ячейка памяти или непосредственный операнд того же размера, что иоперанд_1.
Алгоритм выполнения команды.
Выборка значения второго операнда и запись его в накопитель.
Выборка значения первого операнда и вычитание его из содержимого накопителя.
Копирование содержимого накопителя в опернад_1.
Примечание.Изменение флагов производится либо в процессефактическоговыполнения команды (сложение, вычитание, деление, дизъюнкция), либо по его окончании.
* Выборка операнда из памяти осуществляется с использованием заданного режима адресации и страничной трансляции.