- •Лабораторна робота 1.
- •1. Символи.
- •2 Представлення чисел у пам’яті пеом.
- •2.1 Цілі числа. Цілі числа без знака
- •2.2 Цілі числа зі знаком
- •3 Дійсні числа.
- •3.1 Представлення дійсних чисел у двійковому нормалізованому виді.
- •3.2 Машинні формати дійсних чисел
- •3.2.1. Формат 32 біти - float (або single)
- •3.2.2. Формат 64 біти - double
- •4. Завдання на лабораторну роботу.
- •5. Методичні вказівки з оформлення звіту
- •6. Рішення типового прикладу (без оцінки похибки перетворення)
- •7. Питання для самоперевірки
- •8. Література
- •Лабораторна робота 2.
- •1. 3 Формати файлів, що виконуються, які підтримуються у fasm
- •2. Завдання на лабораторну роботу:
- •3. Методичні вказівки з оформлення звіту
- •4. Питання для самоперевірки.
- •Лабораторна робота 3.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні відомості.
- •3.1 Команди пересилання даних.
- •3.1.3 Операції зі стеком:
- •3.2 Робота із налагоджувачем OllyDbg.
- •3.2.2. Розглянемо основні команди меню OllyDbg.
- •4. Завдання на лабораторну роботу.
- •9. Література
- •Лабораторна робота 4.
- •3.2. Операції із прапорами процесора:
- •3.3 Команди розповсюдження знаку
- •4. Методичні вказівки з оформлення звіту
- •5. Рішення типового прикладу.
- •6. Завдання на лабораторну роботу
- •7. Критерії оцінювання.
- •8. Питання для самоперевірки
- •9. Література
- •Лабораторна робота 5.
- •3.2. Команди зсуву
- •3.3 Команди сканування бітів
- •4. Методичні вказівки з оформлення звіту
- •5. Приклади використання бітових команд
- •6. Завдання на лабораторну роботу
- •7. Критерії оцінювання.
- •8. Питання для самоперевірки
- •9. Література
- •Лабораторна робота 6.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні зведення.
- •3.1. Команди безумовної передачі управління
- •3.1.1. Команда безумовного переходу jmp
- •3.2. Команди умовної передачі управління Jcc
- •3.2.1. Перша група команд умовного переходу.
- •3.2.2 Друга група команд умовного переходу.
- •3.2.3. Третя група команд умовного переходу.
- •3.3. Команди управління циклами looPx
- •3.3.1. Команда loop — перехід по лічильнику
- •3.3.2. Команда loope (loopz) перехід по лічильнику і якщо дорівнює
- •3.3.3. Команда loopne (loopnz) перехід по лічильнику і якщо не дорівнює
- •4. Методичні вказівки з оформлення звіту
- •5. Приклади використання бітових команд
- •6. Завдання на лабораторну роботу.
- •7. Критерії оцінювання.
- •8. Питання для самоперевірки
- •9. Література
- •Лабораторна робота 7.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні відомості.
- •3.1. Реалізація основних операцій по обробці масивів мовою асемблера.
- •4. Методичні вказівки з оформлення звіту
- •5. Критерії оцінювання.
- •6. Завдання на лабораторну роботу.
- •7. Питання для самоперевірки
- •8. Література
- •Лабораторна робота 8.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролю.
- •3. Короткі теоретичні відомості.
- •4. Приклади виконання деяких типових задач обробки рядків
- •4. Завдання на лабораторну роботу.
- •Лабораторна робота 9.
- •1. Підготовка до роботи.
- •2. Питання для самоконтролеві.
- •3. Короткі теоретичні відомості
- •3.1. Принципи організації підпрограм
- •3.2. Параметри процедур і значення, що повертаються
- •3.3. Використання загальних перемінних у процедурах
- •3.4. Особливості fasm по організації підпрограм (Windows - додатка).
- •Лабораторна работа 10-11.
- •3.1.2. Засобу bios
- •3.2. Уведення з клавіатури
3.2. Команди умовної передачі управління Jcc
Базових команд умовного переходу всього 17, але вони можуть мати різну мнемоніку (це команди-синоніми — для зручності читання і розуміння програми), тому виходить 31 команда. Читати ці команди досить просто, якщо знаєш ключ.
Перша буква команди J від уже відомого нам слова (Jump — стрибок). Інші букви (сc) у скороченому виді описують умова переходу. За цією ознакою всі команди умовного переходу можна розбити на три групи.
3.2.1. Перша група команд умовного переходу.
Е — Equal (дорівнює).
N — Not (не, заперечення).
G — Greater (більше) — застосовується для чисел зі знаком.
L — Less (менше) — застосовується для чисел зі знаком.
А — Above (вище, більше) — застосовується для чисел без знака.
В — Below (нижче, менше) — застосовується для чисел без знака.
Різниця в командах переходу для знакових і беззнакових даних порозумівається тим, що вони реагують на різні прапори (для знакових даних суттєвим є прапор SF, а для беззнакових — CF).
Умовний перехід для цієї групи команд звичайно реалізується в два кроки:
порівняння, у результаті чого формуються прапори (регістр eflags).
умовна передача управління (jcc коротка_мітка) на позначену команду в залежності від значення прапорів.
Таким чином, у даному випадку реалізується умовний оператор if.
Ця група операцій найчастіше виконується в парі з командою порівняння cmp:
cmp приймач, джерело
jсс коротка_мітка
Таблиця 1. - Команди умовного переходу групи 1.
Умова порівняння (СМР) |
Мнемокод/ синонім |
Стан прапорів |
Для будь-яких чисел і кодів |
||
Приймач = джерело |
JE |
ZF=1 |
Приймач <>джерело |
JNE |
ZF=0 |
Для чисел зі знаком |
||
Приймач < джерело |
JL/JNGE |
SF<>OF |
Приймач <= джерело |
JLE/JNG |
SF<>OF or ZF=l |
Приймач > джерело |
JG/JNLE |
SF=OF and ZF=0 |
Приймач >= джерело |
JGE/JNL |
SF=OF |
Для чисел без знака |
||
Приймач < джерело |
JB/JNAE |
CF=1 |
Приймач <= джерело |
JBE/JNA |
CF=1 or ZF=1 |
Приймач > джерело |
JA/JNBE |
CF=0 and ZF=0 |
Приймач >= джерело |
JAE/JNB |
CF=0 |
3.2.2 Друга група команд умовного переходу.
Ця група команд реагує на те або інше значення визначеного прапора. Тому в мнемоніці даної групи команд завжди вказується перша буква прапора, що перевіряється. Ці команди не вимагають обов'язкової наявності команд порівняння перед своїм виконанням. Їм досить будь-якої команди, що виробляє потрібний прапор.
Таблиця 2. Команди умовного переходу групи 2
Мнемокод / синоніми |
Стан прапорів |
Мнемокод / синоніми |
Стан прапорів |
JZ/JE |
ZF=1 |
JNZ/JNE |
ZF=0 |
JS |
SF=1 |
JNS |
SF=0 |
JC/JB/JNAE |
CF=1 |
JNC/JAE/JNB |
CF=0 |
JO |
OF=l |
JNO |
OF=0 |
JP |
PF=1 |
JNP |
PF=0 |
Як видно з таблиці, з деякими командами ми вже зустрічалися в групі 1. Синоніми мнемокодів команд просто підкреслюють, на що конкретно звернув увагу програміст.