- •Лабораторна робота 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. Уведення з клавіатури
4. Методичні вказівки з оформлення звіту
Звіт до лабораторної роботи повинен містити:
тему лабораторної роботи;
формулювання мети і задач, що вирішуються в ході виконання роботи;
звіт про особливості виконання арифметичних команд;
докладний звіт про виконання завдань згідно наявного прикладу: алгоритм, тест програми й уміст регістрів мікропроцесора, що змінилися при виконанні чергової команди.
висновки.
5. Рішення типового прикладу.
5.1 Вычислить z:=5*w/4; где переменные w, z: word.
; z=5*w/4
mov сx, 5 ; множник 5 ==> cx
mov ax,[w] ; множене w ==> ax
mul cx ; <dx: ax> = <ax>*<cx>
mov cx,4
div cx ; 5*w/4
mov [z], ax
Проаналізувати результат, при наявності помилок – виправити.
5.2 Обчислити z=w/10 для всіляких сполучень 8- і 16-розрядних типів цілих даних. Змінні ww, zw, wi, zi – word, ws, zs, wb, zb – byte.
;=============word===============
mov ax,[ww] ; множник w ==> ax
mov cx,10
div cx ; <ax>=<dx: ax>/<cx>=w/10
mov [zw], ax
mov ax,[wi] ; множене w ==> ax
idiv cx ; <ax>=<dx: ax>/<cx>=w/10
mov [zi], ax
;============= byte ===============
mov al,[wb] ; множене w ==> al
mov cl,10
div cl ; <al>=<ax>/<cl>= w/10
mov [zb], al
mov al,[ws] ; множене w ==> al
idiv cl ; <al>=<ax>/<cl>= w/10
mov [zs], al
Проаналізувати результат, при наявності помилок – виправити.
5.3 Знайти значення виразу (25/c-d+2)/(d+a*a-1)
алгоритм |
|
format pe |
уміст регістрів |
|
start: |
|
|
al <- [a] |
|
mov al, [a] |
al: 01 |
ah: al <- al *al |
|
imul al |
al: 01 |
ax <- ax-1 |
|
dec ax |
ax: 0000 |
steck <- ax |
|
push ax |
steck: 0000 |
al <- [d] |
|
mov al, [d] |
al: 01 |
al => ax |
|
cbw |
ax: 0001 |
si <- ax |
|
mov si, ax |
si: 0001 |
bx <- stec |
|
pop bx |
bx: 0000 |
bx <- bx + ax |
|
add bx, ax |
bx: 0001 ZF:0, PF: 0 |
[znam] <- bx |
|
mov [znam], bx |
M: 0100 |
ax <- 25 |
|
mov ax, 25 |
ax: 0019 |
al <- ah: al / [c] |
|
idiv [c] |
al: 05, AF: 1 |
al => ax |
|
cbw |
ax: 0005 |
ax <- ax - si |
|
sub ax, si |
ax: 0004 AF: 0 |
ax <- ax +2 |
|
add ax, 2 |
ax: 0006, PF: 1 |
ax =>dx: ax |
|
cwd |
ax: 0006, dx: 0000 |
word [chisl] <- ax |
|
mov word [chisl], ax| |
M:0600 |
word [chisl+2]<-dx |
|
mov word [chisl+2], dx |
M:0000 |
ax <- dx: ax / bx |
|
idiv bx |
ax: 0006, PF:0; AF:1 |
[rez] <- ax |
|
mov [rez], ax |
M: 0600 |
|
|
ret |
|
|
|
; секция данных |
|
|
|
chisl dd? |
|
|
|
znam dw? |
|
|
|
rez dw? |
|
|
|
a db 1 |
|
|
|
c db 5 |
|
|
|
d db 1 |
|
Схема укрупненого алгоритму виконання наведеного прикладу.