Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Работа с битами. Команды сдвига. Логические команды. Адресное пространство. Способы адресации. Организация сравнения. Циклы

Содержание

Команды работы с битамиsalsarshrshlrclrcrrolrorshrdshldbsfbsrbtbtcbtrbts Команды работы с битами/28
Системное программированиеЛекция 3Работа с битами. Команды сдвига.Логические команды. Адресное пространство. Способы адресации.Организация Команды работы с битамиsalsarshrshlrclrcrrolrorshrdshldbsfbsrbtbtcbtrbts			Команды работы с битами/28 Команды сдвига,Команды работы с битами/28 Использование  команд сдвига«Логический» сдвигshl …; cf ← op ← 0 shr andorxornottest	ЛогическиекомандыПоразрядные  логические команды/28 Поразрядные  логические командыЛогическиекомандыnotr8,16,32m8,16,32,/28 a = a xor bb = a xor ba = a xor Примеры использования командКоманды работы с битамиПересылка данныхЛогическиекоманды/28 Примеры использования командБыстрое умножениеВычисление абсолютного значения числа (если a Модель адресного пространстваСпособы задания операндов:неявно на микропрограммном уровне непосредственный операнд в Базово-индексная со смещениемБазово-индекснаяБазовая со смещениемБазоваяСо смещениемОтносительнаяАбсолютнаяПрямаяСпособы адресацииИндекснаяКосвенная/28 Прямая адресацияАбсолютная mov ebx,valОтносительная 	jmp metDSvaljmp metCSmet-$IPmet:/28 Косвенная адресация– адресация с помощью заключенных в квадратные скобки регистров, содержащих адрес Косвенная базовая адресация– регистровая адресация 	эффективный адрес операнда может находиться в любом Косвенная базовая адресация  со смещением– регистровая адресация со смещением	 является дополнением Индексная адресация  	похожа на косвенную базовую адресацию со смещением. Для формирования Базово -индексная адресация и базово-индексная со смещениемЭффективный адрес формируется как сумма трех Инструкция XCHGПересылка данных,/28 Инструкции  загрузки адресаПересылка данных,,/28 Команды передачи управленияПередачауправления/28 Условные переходыПередачауправленияJ?? ; много вариантовПо результатам сравненияEqual, Not EqualGreater, Less, Greater or Команда сравненияCMP op1,op2 	«безрезультатное» сравнениеmov eаx, …mov ebx,…L2: ; ……….jmp L2mov eсx,ebxcmp Команда сравненияCMP op1,op2 	«безрезультатное» сравнениеПример:a=…;b=…;if (a  b) c=a;else c=b;>mov eаx, …mov Команда сравненияCMP op1,op2 	«безрезультатное» сравнениеПример:a=…;b=…;if (a  b) c=a;else c=b; ЦиклыLOOP* ; LOOP: if (! ECX)goto .счётчик цикла в ECX,LOOPE/LOOPZ: Поиск отличногоif(! Функции: логика работыCALL Calc 		Логика:	PUSH EIP			EIP = EIP+ смещение к процедуре CalcCalc Код командыСтруктура машинной команды процессора mov EBX,ECX; 89CBmov BX,CX6689CBmov ECX,6[EBX+EDI*4] 8B4CBB06Примеры кода команды/28 Количество тактов выполнения командыLatency — число тактов, необходимое инструкции для того, чтобы
Слайды презентации

Слайд 2 Команды работы с битами

sal
sar
shr
shl






rcl
rcr
rol
ror






shrd
shld








bsf
bsr
bt
btc
btr
bts
Команды работы с битами
/28

Команды работы с битамиsalsarshrshlrclrcrrolrorshrdshldbsfbsrbtbtcbtrbts			Команды работы с битами/28

Слайд 3 Команды сдвига


,




Команды работы с битами
/28

Команды сдвига,Команды работы с битами/28

Слайд 4 Использование команд сдвига
«Логический» сдвиг
shl …; cf ← op

Использование команд сдвига«Логический» сдвигshl …; cf ← op ← 0 shr

← 0
shr …; 0 → op → cf
«переворот»

байт
умножение/деление

Арифметические
sal …; тоже что shl
sar …;
знак → мантисса → cf

Циклические
rol …
ror …
дублирование в cf
rcl …
rcr …
замыкание через cf

Команды работы с битами

В приёмник
shld …;
shrd …;
источник → приёмник
последний бит → cf

/28


Слайд 5 and
or
xor






not








test






Логические
команды
Поразрядные логические команды
/28

andorxornottest	ЛогическиекомандыПоразрядные логические команды/28

Слайд 6 Поразрядные логические команды
Логические
команды




not
r8,16,32
m8,16,32


,
/28

Поразрядные логические командыЛогическиекомандыnotr8,16,32m8,16,32,/28

Слайд 7 a = a xor b
b = a xor

a = a xor bb = a xor ba = a

b
a = a xor b
tmp = a
a

= b
b = tmp

a = a + b
b = a – b
a = a – b

Использование логических команд

Сброс значения регистра
xor EAX, EAX
Перестановка 2х чисел a и b





/28


Слайд 8 Примеры использования команд
Команды работы с битами
Пересылка данных





Логические
команды
/28

Примеры использования командКоманды работы с битамиПересылка данныхЛогическиекоманды/28

Слайд 9 Примеры использования команд
Быстрое умножение
Вычисление абсолютного значения числа (если a

Примеры использования командБыстрое умножениеВычисление абсолютного значения числа (если a

а=-a)
Определения минимума из двух чисел (если b

из двух чисел по условию (если a<>0 то а=б, иначе а=с)

Команды работы с битами

Пересылка данных

Логические
команды

/28


Слайд 10 Модель адресного пространства
Способы задания операндов:
неявно на микропрограммном

Модель адресного пространстваСпособы задания операндов:неявно на микропрограммном уровне непосредственный операнд

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

ввода/вывода

/28


Слайд 11 Базово-индексная со смещением
Базово-индексная
Базовая со смещением
Базовая
Со смещением
Относительная
Абсолютная
Прямая
Способы адресации
Индексная
Косвенная
/28

Базово-индексная со смещениемБазово-индекснаяБазовая со смещениемБазоваяСо смещениемОтносительнаяАбсолютнаяПрямаяСпособы адресацииИндекснаяКосвенная/28

Слайд 12 Прямая адресация

Абсолютная mov ebx,val
Относительная jmp met





DS

val




jmp met
CS

met-$
IP
met:
/28

Прямая адресацияАбсолютная mov ebx,valОтносительная 	jmp metDSvaljmp metCSmet-$IPmet:/28

Слайд 13 Косвенная адресация
– адресация с помощью заключенных в квадратные

Косвенная адресация– адресация с помощью заключенных в квадратные скобки регистров, содержащих

скобки регистров, содержащих адрес памяти
Директива переопределения типа  ptr 
– применяется

для переопределения или уточнения типа метки или переменной, определяемых выражением.
Тип может принимать одно из следующих значений: 
byte, word, dword, qword, tbyte, near, far.
mov ebx, dword ptr mem[ecx*4+eax]

/28


Слайд 14 Косвенная базовая адресация
– регистровая адресация
эффективный адрес операнда

Косвенная базовая адресация– регистровая адресация 	эффективный адрес операнда может находиться в

может находиться в любом из регистров общего назначения, кроме

esp и ebp
Пример,
mov ax,[ecx]
команда помещает в регистр ax содержимое слова по адресу из сегмента данных со смещением, хранящимся в регистре ecx.
Так как содержимое регистра легко изменить в ходе работы программы, данный способ адресации позволяет динамически назначить адрес операнда для некоторой машинной команды.
Используется для организации циклических вычислений и для работы с различными структурами данных типа таблиц или массивов. 

/28


Слайд 15 Косвенная базовая адресация со смещением
– регистровая адресация со

Косвенная базовая адресация со смещением– регистровая адресация со смещением	 является дополнением

смещением
является дополнением предыдущего и предназначен для доступа к

данным с известным смещением относительно некоторого базового адреса
Пример
mov ax,[edx+3h]
команда помещает в регистр ax слова из области памяти по адресу: содержимое edx + 3h
mov ax,mas[dx]
команда пересылает в регистр ax слово по адресу: содержимое dx плюс значение идентификатора mas, равное смещению этого идентификатора относительно начала сегмента.
Используется для доступа к элементам структур данных, когда смещение элементов известно заранее, на стадии разработки программы, а базовый (начальный) адрес структуры должен вычисляться динамически, на стадии выполнения программы.

/28


Слайд 16 Индексная адресация
похожа на косвенную базовую адресацию со

Индексная адресация 	похожа на косвенную базовую адресацию со смещением. Для формирования

смещением. Для формирования эффективного адреса используется один из регистров

общего назначения. Но индексная адресация связана с возможностью так называемого масштабирования содержимого индексного регистра.
Пример
mov ax,mas[si*2]
команда помещает в регистр ax слово по адресу: значение идентификатора mas плюс значение индексного регистра si масштабируемое в 2 раза.
Используется для организации циклических вычислений и для работы с массивами при условии , что размер элементов массива составляет 1, 2, 4 или 8 байт

/28


Слайд 17 Базово -индексная адресация и базово-индексная со смещением
Эффективный адрес

Базово -индексная адресация и базово-индексная со смещениемЭффективный адрес формируется как сумма

формируется как сумма трех составляющих:
cодержимого базового регистра
cодержимого индексного

регистра с масштабированием
значение поля смещения в команде
Пример
mov eax,[esi][edx]
mov eax,[esi+5][edx]
add ax,array[esi*4][ebx]
Масштабирование допускается использовать для любых регистров общего назначения.

/28


Слайд 18 Инструкция XCHG
Пересылка данных



,
/28

Инструкция XCHGПересылка данных,/28

Слайд 19 Инструкции загрузки адреса
Пересылка данных


,

,
/28

Инструкции загрузки адресаПересылка данных,,/28

Слайд 20 Команды передачи управления
Передача
управления
/28

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

Слайд 21 Условные переходы
Передача
управления
J?? ; много вариантов
По результатам сравнения
Equal,

Условные переходыПередачауправленияJ?? ; много вариантовПо результатам сравненияEqual, Not EqualGreater, Less, Greater

Not Equal
Greater, Less, Greater or Equal, Less or Equal

(со знаком)
Above, Below, Above or Equal, Below or Equal (без знака)
Примеры: JL - если SF != OF, JB - если CF=1
По состоянию одного флага
[Not] flag {Z|S|C|O|P}F set to 1»
JZ, JNZ,…,JP,JNP
По состоянию счётчика
JECXZ – обход цикла для реализации «предусловия»

/28


Слайд 22 Команда сравнения
CMP op1,op2
«безрезультатное» сравнение


mov eаx, …
mov ebx,…
L2:

Команда сравненияCMP op1,op2 	«безрезультатное» сравнениеmov eаx, …mov ebx,…L2: ; ……….jmp L2mov

; ……….
jmp L2
mov eсx,ebx
cmp eax,ebx
L1: mov eсx,eax
Пример:
a=…;
b=…;
if (a

b) c=a;
else c=b;

/28


Слайд 23 Команда сравнения
CMP op1,op2
«безрезультатное» сравнение

Пример:
a=…;
b=…;
if (a b)

Команда сравненияCMP op1,op2 	«безрезультатное» сравнениеПример:a=…;b=…;if (a b) c=a;else c=b;>mov eаx, …mov

c=a;
else c=b;
>

mov eаx, …
mov ebx,…
L2: ; ……….
jmp L2
mov eсx,ebx
cmp

eax,ebx

L1: mov eсx,eax

jg L1

/28


Слайд 24 Команда сравнения
CMP op1,op2
«безрезультатное» сравнение

Пример:
a=…;
b=…;
if (a b)

Команда сравненияCMP op1,op2 	«безрезультатное» сравнениеПример:a=…;b=…;if (a b) c=a;else c=b;

c=a;
else c=b;

eax,ebx

L1: mov eсx,eax

jle L1

/28


Слайд 25 Циклы
LOOP* ;
LOOP: if (! ECX)goto .
счётчик цикла

ЦиклыLOOP* ; LOOP: if (! ECX)goto .счётчик цикла в ECX,LOOPE/LOOPZ: Поиск

в ECX,
LOOPE/LOOPZ: Поиск отличного
if(! ECX || ZF)goto
LOOPNE/LOOPNZ: Поиск

требуемого
if(! ECX || !ZF)goto <метка>

LL: ……

loop LL

mov ecx,…

EL: ……

jecxz EL

ecx!=0

Передача
управления

/28


Слайд 26 Функции: логика работы
CALL Calc
Логика: PUSH EIP
EIP = EIP+

Функции: логика работыCALL Calc 		Логика:	PUSH EIP			EIP = EIP+ смещение к процедуре

смещение к процедуре Calc

Calc PROC

Тело_процедуры

RET
Calc ENDP
Логика: POP EIP









PUSH

EBP

POP EBP







Передача
управления

/28


Слайд 27 Код команды

Структура машинной команды процессора
mov EBX,ECX;
89CB
mov

Код командыСтруктура машинной команды процессора mov EBX,ECX; 89CBmov BX,CX6689CBmov ECX,6[EBX+EDI*4] 8B4CBB06Примеры кода команды/28

BX,CX
6689CB
mov ECX,6[EBX+EDI*4]
8B4CBB06
Примеры кода команды
/28


  • Имя файла: rabota-s-bitami-komandy-sdviga-logicheskie-komandy-adresnoe-prostranstvo-sposoby-adresatsii-organizatsiya-sravneniya-tsikly.pptx
  • Количество просмотров: 107
  • Количество скачиваний: 1