Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб2012 / ЛР3 Зовн_шн_ операц_ї

.doc
Скачиваний:
22
Добавлен:
02.02.2015
Размер:
75.26 Кб
Скачать

СП ЛР3 Зовнішні процедури, НТУ ХПИ, КИТ-11а, Иванов И.И.

Лабораторна робота №3 “Зовнішні процедури”
Мета заняття:

– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;

– придбати практичні навички складання, налагодження і виконання програм, написаних мовою асемблеру з використанням зовнішніх процедур для МП платформи х86.

Постановка задачі

Згідно з номером студента в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з виразів:

1. 2(a) + e/d; 9. 8c – 6adb/9e; 17. 2(c/e + a)bd/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. 8cabb/19e;

4. 8dab – 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(ab/с) + 6e/d; 14. 8adbd/14a; 22. (a – 2d)/(a – 22с);

7. 2(c/e + a)b – 7d/a; 15. a – 5acb/15c; 23. ab + cb/23c;

8. (a – c/b)/b + 8d; 16. 2(ab/с) + e/16d; 24. 8abd/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 с.

3