
Лаб2012 / ЛР3 Зовн_шн_ операц_ї
.docСП ЛР3 Зовнішні процедури, НТУ ХПИ, КИТ-11а, Иванов И.И.
Лабораторна робота №3 “Зовнішні процедури”
Мета заняття:
– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;
– придбати практичні навички складання, налагодження і виконання програм, написаних мовою асемблеру з використанням зовнішніх процедур для МП платформи х86.
Постановка задачі
Згідно з номером студента в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з виразів:
1. 2(a – bс) + e/d; 9. 8c – 6ad – b/9e; 17. 2(c/e + a)b – d/17a;
2. 2(ce + a)b – 2d/a; 10. (a – ed)b – 10d/b; 18. (a – bc)/b + 18d;
3. (a – cb)/b + 3d; 11. (a – b)ab – 11d/e; 19. 8c – ab – b/19e;
4. 8d – ab – 4d/a; 12. (b – 2d)/(12a – с); 20. (a – cd)b – 20a/b;
5. a + 5ac – 5b/c; 13. ae + b – 13b/c; 21. (a – b)ab – 21d/e;
6. 2(a – b/с) + 6e/d; 14. 8ad – b – d/14a; 22. (a – 2d)/(a – 22с);
7. 2(c/e + a)b – 7d/a; 15. a – 5ac – b/15c; 23. ab + c – b/23c;
8. (a – c/b)/b + 8d; 16. 2(a – b/с) + e/16d; 24. 8a – b – d/24a.
Вимоги до програм:
1. Передбачити ситуацію, при якій числа будуть змінюватися від мінімального до максимального значень (урахувати можливі переповнення розрядної сітки та позики);
2. Для перших десяти за списком студентів змінні повинні мати розмір байта, для других десяти за списком студентів – розмір слова, а для третіх десяти за списком студентів – розмір подвійного слова;
3. Навести програму з використанням зовнішніх процедур.
Зміст звіту
1. Постановка задачі для отриманого варіанта завдаання.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програм: головної та зовнішньої процедури з детальним коментарем та описом роботи.
4. Рrint screen екрана 32-розрядного налагоджувача з виконанням програми та результатами виконання виразу.
5. Короткий опис виконання програми.
6. Висновки за результатами роботи.
1. Індивідуальне завдання
Написати програму обчислення арифметичного виразу (a – cb)/b + 3d з розміром змінних у байт.
2. Текст програми
Main.asm
title lab_4, KIT-28A, Borovik A.R. (a – cb)/b + 3d
.386
.model flat
extern _count:proc ;назва зовнішньої процедури
public _a,_b,_c,_d,_res ;змінні, використані у зовнішній процедурі
.data
_a db 200
_b db 2
_c db 20
_d db 43
_res dd 4 dup(0)
.code
_st:
call _count ;виклик зовнішньої процедури
ret
end _st
Count.asm
title lab_4, KIT-28A, Borovik A.R. (a – cb)/b + 3d
.386
.model flat
public _count
extern _a:byte, _b:byte, _c:byte, _d:byte, _res:dword
.code
_count proc
xor eax,eax ;підготовка до арифметичних операцій
mov al, _c
mul _b ; ах=_с*_b
movzx bx,_a
not ax ;інвертування значення ах
inc ax ;збільшення значення ах на 1
add ax,bx ;ах=a-c*b
idiv _b ;ділення з урахуванням знаку
xor ah,ah ;відкидання залишку
push ax ;збереження результату ділення
xor eax,eax
xor edx,edx
mov al,3
mul _d ;обчислення 3*d
pop bx ;відновлення результату ділення
add ax,bx ;додавання частин виразу
jc m1 ;при переповненні перейти на мітку m1
jmp m2
m1: inc dx ;збільшення регістру на 1
m2:
mov word ptr _res,ax ;збереження молодшої частини результату
mov word ptr _res+2,dx ;збереження старшої частини результату
ret
_count endp ;кінець процедури
end
3. Скріншот налагоджувача
4. Опис виконання програми
Програма обчислює значення виразу, заданого в індивідуальному завданні, використовуючи зовнішню процедуру _count, що виконує усі розрахунки. Кінцевий результат зберігається у змінній _res, для зберігання проміжкових даних використовується стек.
5. Висновки: …
Література: Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку “Компютерна інженерія” вищих навчальних закладів. Видання друге: виправлено та доповнено – Х.: “Слово”, 2011. – 944 с.