Особливості програмування з використанням 32-розрядного Асемблера

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Системне програмування та операційні системи

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт з лабораторної роботи № 1 з дисципліни: “Системне програмування” на тему: “Особливості програмування з використанням 32-розрядного Асемблера” Мета лабораторної роботи Ознайомитись з програмною моделлю 32-розрядних мікропроцесорів Intel та оволодіти навиками створення програм, використовуючи 32-розрядний Асемблер. Теоретичні відомості Основою для розробки низькорівневого системного програмного забезпечення є програмна модель комп’ютера, частиною якої є програмна модель мікропроцесора. До складу програмної моделі мікропроцесорів Intel сімейства x86 входять 32 регістри в тій чи іншій мірі доступні для використання програмістом. Дані регістри можна розділити на дві великі групи: 16 регістрів користувача; 16 системних регістрів. У програмах на мові асемблера регістри використовуються дуже інтенсивно. Більшість регістрів мають певне функціональне призначення. Індивідуальне завдання 1. Створити, використовуючи мову асемблера мікропроцесорів сімейства x86 Intel, *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. A = {a[i]} – наперед заданий масив з N чисел цілих чисел. c, d – цілі константи. K, L – цілі додатні числа. 2. Переконатися у правильності роботи програми використовуючи VKDebug. 3. Скласти звіт про виконану роботу з приведенням тексту програми. 4. Дати відповідь на контрольні запитання. 29. Знайти суму елементів масиву A за умови a[i] >= c/d   Код програми .686 ; 32-бітний режим .model flat, stdcall ; використати плоску модель пам'яті і узгодження імен stdcall option casemap: none ; нерозрізнення великих і малих символів ; оголошення службових процедур, макросів, змінних, констант include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\debug.inc include \masm32\include\user32.inc ; підключення службових бібліотек includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\debug.lib includelib \masm32\lib\user32.lib .data arr dd -1, -4, 2, 1 n dd 4 ; number of elements in the array ConstC dd 6 ConstD dd -2 sum dd 0 ; result .code program: mov eax, ConstC mov edx, 0 idiv ConstD ; eax = c/d PrintDec eax, "c/d" ; print c/d in VKdebug mov ecx, 0 test_arr: mov edx, arr[ecx * 4] PrintDec edx, "arr[i]" ; print arr[i] in VKdebug cmp arr[ecx * 4], eax jl increment ; if (arr[i] < c/d) goto increment (skip addition) add sum, edx PrintDec sum ; print sum in VKdebug increment: inc ecx cmp ecx, n jl test_arr ; if (ecx < n) goto test_arr invoke ExitProcess, NULL ; виклик процедури завершення процесу end program Результат виконання програми –1 + 2 + 1 = 2 / Висновок Я ознайомився з програмною моделлю 32-розрядних мікропроцесорів Intel та оволодів навиками створення програм, використовуючи 32-розрядний Асемблер.
Антиботан аватар за замовчуванням

07.05.2017 14:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!