рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Регистры отладки

Регистры отладки - раздел Компьютеры, Справочник по командам и архитектуре Pentium   Dr0…dr3 – Хранят 32-Битные Линейные Адреса Точек Останова....

 

DR0…DR3 – хранят 32-битные линейные адреса точек останова.

 

DR6 (равносильно DR4) – отражает состояние контрольных точек.

DR7 (равносильно DR5) – управляет установкой контрольных точек.

 

 

Команды пересылки данных

MOV dest,src Пересылка данных в регистр из регистра, памяти или непосредственного операнда. Пересылка данных в память из регистра или непосредственного операнда. Например, MOV AX,10; MOV EBX,ESI; MOV AL, BYTE PTR MEM.
XCHG r/m,r Обмен данными между регистрами или регистром и памятью. Команда «память – память» в микропроцессоре Intel не предусмотрена.
BSWAP reg32 Перестановка байт из порядка «младший – старший» в порядок «старший – младший». Разряды 7-0 обмениваются с разрядами 31-24, а разряды 15-8 с разрядами 23-16. Команда появилась в 486-м микропроцессоре.
MOVSXB r,r/m Пересылка байта с его расширением до слова или двойного слова с дублированием знакового бита: MOVSXB AX,BL; MOVSXB EAX,byte ptr mem. Команда появилась с 386-ого процессора.
MOVSXW r,r/m Пересылка слова с расширением до двойного слова с дублированием знакового бита: MOVSXW EAX,WORD PTR MEM. Команда появилась с 386-ого процессора.
MOVZXB r,r/m Пересылка байта с его расширением до слова или двойного слова с дублированием нулевого бита: MOVSXB AX,BL; MOVSXB EAX,byte ptr mem. Команда появилась с 386-ого процессора.
MOVZXW r,r/m Пересылка слова с расширением до двойного слова с дублированием нулевого бита: MOVZXW EAX,WORD PTR MEM. Команда появилась с 386-ого процессора.
XLAT Загрузить в AL байт из таблицы в сегменте данных, на начало которой указывает EBX (BX), при этом начальное значение AL играет роль смещения.
LEA r,m Загрузка эффективного адреса. Например, LEA EAX,MEM; LEA EAX,[EBX]. Данная команда обладает магическими свойствами, позволяющими эффективно выполнять арифметические действия. Например, команда LEA EAX,[EAX*8] умножает содержимое EAX на 8, LEA EAX,[EAX][EAX*4] на 5. Команда LEA ECX,[EAX][ESI+5] эквивалента 3(!) командам MOV ECX,EAX/ADD ECX,ESI/ADD ECX,5.
LDS r,m Загрузить пару DS:reg из памяти. Причем вначале идет слово (или двойное слово), а в DS - последующее слово.
LES r,m Аналогично предыдущему, но для пары ES:reg.
LFS r,m Аналогично предыдущему, но для пары FS:reg.
LGS r,m Аналогично предыдущему, но для пары GS:reg.
LSS r,m Аналогично предыдущему, но для пары SS:reg.
SETcc r/m Проверяет условие «cc», если выполняется, то первый бит байта устанавливается в 1, в противном случае в 0. Условия аналогичны в условных переходах (je, jc). Например, SETE AL. Команда появилась с 386-ого микропроцессора.
LAHF Загрузить флаги в AH (устарела).
SAHF Сохранить AH в регистре флагов (устарела).

 

Команды ввода-вывода

IN AL(AX,EAX), Port IN AL(AX,EAX), DX Ввод в аккумулятор из порта ввода-вывода. Порт адресуется непосредственно или через регистр DX.
OUT port,AL (AX,EAX) OUT DX,AL (AX,EAX) Вывод в порт ввода-вывода. Порт адресуется непосредственно или через регистр DX.
[REP] INSB [REP] INSW [REP] INSD Выводит данные из порта, адресуемого регистром DX в ячейку памяти ES:[EDI/DI]. После ввода байта, слова или двойного слова производится коррекция EDI/DI на 1, 2,4. При наличии префикса REP-процесс продолжается, пока содержимое CX не станет равным 0.
[REP] OUTSB [REP] OUTSW [REP] OUTSD Выводит данные из ячейки памяти, определяемой регистрами DS:[ESI/SI], в выходной порт, адрес которого находится в регистре DX. После вывода байта, слова, двойного слова производится коррекция указателя ESI/SI на 1, 2, 4.

 

 

Инструкции работы со стеком

PUSH r/m Поместить в стек слово или двойное слово. Поскольку при включении в стек слова нарушается выравнивание стека по границам двойных слов, рекомендуется в любом случае помещать в стек двойное слово.
PUSH const Поместить в стек непосредственный 32-битный операнд.
PUSHA Поместить в стек регистры EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Команда появилась с 386-ого процессора.
POP reg/mem Извлечь из стека слово или двойное слово.
POPA Извлечение из стека данных в регистры EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. Команда появилась, начиная с 386-ого процессора.
PUSHF Помещение в стек регистра флагов.
POPF Извлечь данных в регистр флагов.

 

 

Инструкции целочисленной арифметики.

ADD dest,src Сложение двух операндов. Первый операнд может быть регистром или ячейкой памяти, второй – регистром, ячейкой памяти, константой. Невозможно только, когда оба операнда являются ячейками памяти.
XADD dest,src Данная операция производит в начале обмен операндами, а затем выполняет операцию ADD. Начиная 486-ого.
ADC dest,src Сложение с учетом флага переноса – в младший бит добавляется бит (флаг) переноса.
INC r/m Инкремент операнда.
SUB dest,src Вычитание двух операндов. Остальное аналогично сложению (команда ADD).
SBB dest,src Вычитание с учетом бита переноса. Из младшего бита вычитается бит (флаг) переноса.
DEC r/m Декремент операнда.
CMP r/m,r/m Вычитание без изменения операндов (сравнение).
CMPXCHG r,m,a Сравнение с обменом. Воспринимает три операнда (регистр – операнд - источник, ячейка памяти – операнд - получатель, аккумулятор, т.е. AL,AX или EAX) Если значения в операнде-получателе и аккумуляторе равны, операнд-получатель заменяется операндом-источником, исходное значение операнда-получателя загружается в аккумулятор. Начиная с 486-ого.
CMPXCHG8B r,m,a Сравнение и обмен восьми байт. Начиная с Pentium.
NEG r/m Изменение знака операнда.
AAA Коррекция после ASCII-сложения. Коррекция результата двоичного сложения двух неупакованных десятичных чисел. Например, AX содержит число 9H. Пара команд ADD AL,8/AAA приводит к тому, что в AX будет содержаться 0107, т.е. ASCII-число 17.
AAS Коррекция после ASCII-вычитания. Например: MOV AX,205H ;загрузить ASCII 25 SUB AL,8 ;двоичное вычитание AAS ;теперь AX содержит 107H, т.е. 17.
AAM Коррекция после ASCII-умножения. Для этой команды предполагается, что в регистре AX находится результат двоичного умножения двух десятичных цифр (диапазон от 0 до 81). После выполнения команды образуется двухбайтное произведение в регистре AX в ASII-формате.
AAD Коррекция перед ASCII-делением. Предполагается, что младшая цифра находится в AL, а старшая – в AH.
DAA Коррекция после BCD-сложения.[1]
DAS Коррекция после BCD-вычитания.
MUL r/m Умножение AL(AX,EAX) на целое беззнаковое число. Результат, соответственно, будет содержаться в AX, DX:AX, EDX:EAX.
IMUL r/m Знаковое умножение (аналогично MUL). Все операнды считаются знаковыми. Команда IMUL имеет также двухоперандный и трехоперандный вид. Двухоперандный вид IMUL r,src r<-r*src. Трехоперандный вид IMUL dst,src,imm dst<-src*imm.
DIV r/m (src) Беззнаковое деление. Аналогично беззнаковому умножению. Осуществляет деление аккумулятора и его расширения (AH:AL, DX:AX, EDX:EAX) на делитель src. Частное помещается в аккумуляторе, а остаток – в расширении аккумулятора.
IDIV r/m Знаковое деление. Аналогично беззнаковому.
CBW Расширение байта (AL) в слово с копированием знакового бита.
CWD Расширение слова (AX) в двойное слово (DX:AX) с копированием знакового бита.
CWDE Расширение слова (AX) в двойное слово (EAX) с копированием знакового бита.
CDQ Преобразование двойного слова (EAX) в учетверенное слово (EDX:EAX).

 

 

Логические операции.

AND dest,src Логическая операция «AND». Обнуление бит dest, которые равны нулю у src.
TEST dest,src Аналогична «AND», но не меняет dest. Используется для проверки ненулевых бит.
OR dest,src Логическая «ИЛИ». В dest устанавливаются биты, отличные от нуля в src.
XOR dest,src Исключающее «ИЛИ».
NOT dest Переключение всех бит (инверсия).

 

 

Сдвиговые операции. Начиная с 386-ого микропроцессора, непосредственный операнд src может быть не только 1, но произвольным числом. В ранних версиях для количества сдвигов использовался регистр CL.

RCL/RCR dest,src Циклический сдвиг влево/вправо через бит переноса CF. Src может быть либо CL, либо непосредственный операнд.
ROL/ROR dest,src Аналогично командам RCL/RCR, но по другому, работает с флагом CF. Флаг не участвует в цикле, но в него попадает бит, перешедший с начала на конец или наоборот.
SAL/SAR dest,src Сдвиг влево/право. Называется еще арифметическим сдвигом. При сдвиге вправо дублируется старший бит. При сдвиге влево младший бит заполняется нулем. Ушедший бит помещается в CF.
SHL/SHR dest,src Логический сдвиг влево/вправо. Сдвиг вправо отличается от SAR тем, что и старший бит заполняется нулем.
SHLD/SHRD dest,src,count Трехоперандные команды сдвига влево/вправо. Первым операндом, как обычно, может быть либо регистр, либо ячейка памяти, вторым операндом должен быть регистр общего назначения, третьим – регистр CL или непосредственный операнд. Суть операции заключается в том, что dest и src в начале объединяются, а потом производится сдвиг на количество бит count. Результат снова помещается в dest.

 

 

Строковые операции

REP Префикс, означающий повтор строковой операции до обнуления ECX. Префикс имеет также разновидности REPZ (REPE) – выполнять, пока не нуль (ZF=1), REPNZ (REPNE) – выполнять, пока нуль.
MOVS dest,src Команда передает байт, слово или двойное слово из цепочки, адресуемой DS:[ESI], в цепочку dest, адресуемую ES[EDI]. При этом EDI и ESI автоматически корректируются согласно значению флага DF. Допускается явная спецификация MOVSB (byte), MOVSW (word), MOVSD (word). Dest и src можно явно не указывать.
LODS src Команда загрузки цепочки в аккумулятор. Имеет разновидности LODSB, LODSW, LODSD. При выполнении команды байт, слово, двойное слово загружается соответственно в AL,AX,EAX. При этом ESI автоматически изменяется на 1 в зависимости от значения флага DF. Префикс REP не используется.
STOS dest Команда, обратная LODS, т.е. передает байт, слово или двойное слово из аккумулятора в цепочку и автоматически корректирует EDI.
SCAS dest Команда сканирования цепочки. Команда вычитает элемент цепочки dst из содержимого аккумулятора (ALAXEAX) и модифицирует флаги. Префикс REPNE позволяет найти в цепочке нужный элемент.
CMPS dest,src Команда сравнения цепочек. Данная команда производит вычитание байта, слова или двойного слова цепочки dst из соответствующего элемента цепочки src. В зависимости от результата вычитания модифицируются флаги. Регистры EDI и ESI автоматически продвигаются на следующий элемент. При использовании префикса REPE команда означает – сравнивать, пока не будет, достигнут конец цепочки или пока элементы не будут равны. При использовании префикса REPNE команда означает – сравнивать, пока не достигнут конец цепочки или пока элементы будут равны.

 

 

Команды управления флагами

CLC Сброс флага переноса.
CMC Инверсия флага переноса.
STC Установка флага переноса.
CLD Сброс флага направления.
STD Установка флага направления.
CLI Запрет маскируемых аппаратных прерываний.
STI Разрешение маскируемых аппаратных прерываний.
CTS Сброс флага переключения задач.

 

Команды передачи управления

JMP target Имеет пять форм, различающихся расстоянием назначения от текущего адреса, и способом задания целевого адреса. При работе в Windows используется в основном внутрисегментный переход (NEAR) в пределах 32-битного сегмента. Адрес перехода может задаваться непосредственно (в программе это метка) или косвенно, т.е. содержаться в ячейке памяти или регистре (JMP [EAX]). Другой тип перехода – короткий переход (SHORT), занимает всего 2 байта. Диапазон смещения, в пределах которого происходит переход: –128 … 127. Использование такого перехода весьма ограниченно. Межсегментный переход может иметь следующий вид: JMP FWORD PTR L, L – указатель на структуру, содержащую 48 битный адрес, в начале которого 32-й адрес смещения, затем 16-й селектор (сегмента, шлюза вызова, сегмента состояния задачи). Возможен также и такой вид межсегментного перехода: JMP FWORD ES:[EDI].
Условные переходы JA/JNBE – перейти, если выше. JAE/JNB – перейти, если выше или равно. JB/JNAE – перейти, если ниже. JBE/JNA – перейти, если ниже. JC - перейти, если перенос. JE/JZ - перейти, если нуль. JG/JNLE – перейти, если больше. JGE/JNL – перейти, если больше или равно. JL/JNGE – перейти если меньше. JLE/JNG – перейти, если меньше или равно. JNC - перейти, если нет переноса. JNE/JNZ – перейти, если меньше или равно. JNO - перейти, если нет переполнения. JNP/JPO – перейти, если нет паритета. JNS - перейти, если нет знака. JO - перейти, если есть переполнения. JP/JPE - перейти, если есть паритет. JS - перейти, если есть знак. JCXZ - переход, если CX=0. JECXZ - переход, если ECX=0. В плоской модели команды условного перехода осуществляют переход в пределах 32-битного регистра.
Команды управления циклом. Все команды этой группы уменьшают содержимое регистра ECX. LOOP - переход, если содержимое ECX не равно нулю. LOOPE(LOOPZ) – переход, если содержимое ECX не равно нулю и флаг ZF=1. LOOPNE(LOOPNZ) – переход, если содержимое ECX не равно нулю и флаг ZF=0.
CALL target Передает управление процедуре (метке) с сохранением в стеке адреса, следующей за CALL-командой. В плоской модели адрес возврата представляет собой 32-битное смещение. Межсегментный вызов предполагает сохранение в стеке селектора и смещения, т.е. 48-битной величины (16 бит – селектор и 32 бита – смещение).
RET [N] Возврат из процедуры. Необязательный параметр N предполагает, что команда также автоматически чистит стек (освобождает N байт). Команда имеет разновидности, которые выбираются ассемблером автоматически, в зависимости от того, является процедура ближней или дальней. Можно, однако, и явно указать тип возврата (RETN или RETF). В случае плоской модели по умолчанию берется RETN с четырехбайтным адресом возврата.

 

 

Команды поддержки языков высокого уровня

ENTER par1,par2 Подготовка стека при входе в процедуру (см. главу 1.2.).
LEAVE Приведение стека в исходное состояние.
BOUND REG16,MEM16 или BOUND REG32,MEM32 Предполагается, что регистр содержит текущий индекс массива, а второй операнда определяет в памяти два слова или два двойных слова. Первое считается минимальным значением индекса, а второе – максимальным. Если текущий индекс оказывается вне границ, то генерируется команда INT 5. Используется для контроля нахождения индекса в заданных рамках, что является важным средством отладки.

 

 

Команды прерываний

INT n Двухбайтная команда. В начале в стек помещается содержимое регистра флагов, затем полный адрес возврата[DS1] . Кроме того, сбрасывается флаг TF. После этого осуществляется косвенный переход через n-й элемент дескрипторной таблицы прерываний. Однобайтная команда INT 3 называется прерыванием контрольного останова и используется в программах-отладчиках.
INTO Равносильна команде INT 4, если флажок переполнения OF=1, если OF=0 – команда не производит никакого действия.
IRET Команда возврата из прерываний. Извлекает из стека сохраненные в нем адрес возврата и регистр флажков. Бит уровня привилегий будет модифицироваться только в том случае, если текущий уровень привилегий равен 0.

 

 

 

Команды синхронизации процессора

HLT Останавливает процессор. Из такого останова процессор может быть выведен внешним прерыванием.
LOCK Представляет собой префикс блокировки шины. Он заставляет процессор сформировать сигнал LOCK# на время выполнения находящейся за префиксом команды. Этот сигнал блокирует запросы шины другими процессорами в мультипроцессорной системе.
NOP Холостая команда. Не производит никаких действий.
WAIT(FWAIT) Синхронизация с сопроцессором. Большинство команд сопроцессора автоматически вырабатывают эту команду.

 

Команды обработки цепочки бит. Эти команды появились в 386-м процессоре

BSF(BSR) dest,src Dest - 16-битный или 32-битный регистр. Src – регистр или ячейка памяти. При выполнении команды BSF операнд src просматривается с младших, а в команде BSR - со старших бит. Номер первого встречного бита, находящегося в состоянии 1, помещается в регистр dest, флажок ZF сбрасывается в 0. Если src содержит 0, то ZF=1, а содержимое dest не определено.
BT dest,src Тестирование бита с номером из src в dest и перенос его во флаг CF.
BTC dest,src Проверка и инвертирование бита из src в dest.
BTR dest,src Проверка и сброс бита из src в dest.
BTS dest,src Проверка и установка бита из src в dest.

 

Команды управления защитой

LGDT src Загрузка GDTR из памяти. Src указывает на 6-байтную величину.
SGDT dest Сохранить GDTR в памяти.
LIDT src Загрузить IDTR из памяти.
SIDT dest Сохранить IDTR в памяти.
LLDT src Загрузить LDTR из памяти (16 бит).
SLDT dest Сохранить LDTR в регистре или памяти (16 бит).
LMSW src Загрузка MSW.
SMSW dest Сохранить MSW в регистре или памяти (16 бит).
LTR src Загрузка регистра задачи из регистра или памяти (16 бит).
STR dest Сохранение регистра задачи в регистре или памяти (16 бит).
LAR dest,src Загрузка старшего байта dest байтом прав доступа дескриптора src.
LSL dest,src Загрузка dest лимитом сегмента, дескриптор которого задан src.
ARPL r/m,r Выравнивание RPL в селекторе до наибольшего числа из текущего уровня и заданного операндом.
VERR seg Верификация чтения: установка ZF=1, если задаче позволено чтение в сегменте SEG.
VERW seg Верификация чтения: установка ZF=1, если задаче позволена запись в сегменте SEG.

 

– Конец работы –

Эта тема принадлежит разделу:

Справочник по командам и архитектуре Pentium

На сайте allrefs.net читайте: "Справочник по командам и архитектуре Pentium"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Регистры отладки

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Список регистров микропроцессора Pentium
  Регистры общего назначения EAX = (16+AX=(AH+AL)) EBX = (16+BX=(BH+BL)) ECX = (16+CX=(CH+CL)) EDX = (16+DX=(DH+DL)) ESI = (16+SI)

Регистр CR4
  0-й бит, разрешение использования виртуального флага прерываний в режиме V8086 (VME). 1-й бит, разрешение использования виртуального флага прерываний в защищенном режиме (P

Команды обмена с управляющими регистрами
MOV CRn,src Загрузка управляющего регистра CRn. MOV dest,CRn Чтение управляющего регистра CRn. MOV DRn,src

Команды управления кэшированием
Внутренний кэш появился в процессоре, начиная с 486-ого. Процессоры 486 и Pentium имеют внутренний кэш первого уровня, Pentium Pro и Pentium II имеют уже и вторичный кэш. IN

Команды передачи данных
FLD src Загрузить вещественное число в ST(0) (вершину стека) из области памяти. Область памяти может быть 32-, 64-, 80-битная. FILD src

Команды сравнения данных
FCOM Сравнение вещественных чисел ST(0) и ST(1). Флаги устанавливаются, как при операции ST(0)-ST(1). FCOM src Сравнение ST(0) с опе

Арифметические команды
FADD src FADD ST(i),ST Сложение вещественных чисел. ST(0) <- ST(0)+src, src – 32- или 64-битное число ST(i)<- ST(i)+ST(0) FADDP ST(i)

Трансцендентные функции
FCOS Вычисление косинуса. ST(0)<-COS(ST(0)). Содержимое в ST(0) интерпретируется как угол в радианах. FPTAN Частичный тангенс. Со

Команды управления сопроцессором
FINIT Инициализация сопроцессора. FSTSW AX Запись слова состояния в AX. FSTSW dest Запись слова

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги