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

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

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

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

Рік:
2016
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування

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

Міністерство освіти і науки Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт з лабораторної роботи № 1 з дисципліни: “ Cистемне програмування ” на тему: “ Особливості програмування з використанням 32розрядного Асемблера ” Мета: Ознайомитись з програмною моделлю 32-розрядних мікропроцесорів Intel та оволодіти навиками створення програм, використовуючи 32-розрядний Асемблер. ТЕОРЕТИЧНІ ВІДОМОСТІ Основою для розробки низькорівневого системного програмного забезпечення є програмна модель комп’ютера, частиною якої є програмна модель мікропроцесора. До складу програмної моделі мікропроцесорів Intel сімейства x86 входять 32 регістри в тій чи іншій мірі доступні для використання програмістом. Дані регістри можна розділити на дві великі групи: 16 регістрів користувача; 16 системних регістрів. У програмах на мові асемблера регістри використовуються дуже інтенсивно. Більшість регістрів мають певне функціональне призначення. Регістри користувача Як випливає з назви, призначеними для користувача регістри називаються тому, що програміст може використовувати їх при написанні своїх програм. До цих регістрів відносяться (рис.1.1): вісім 32-бітових регістрів, які можуть використовуватися програмістами для зберігання даних і адрес (їх ще називають регістрами загального призначення (РЗП)): eax/ax/ah/al; ebx/bx/bh/bl; edx/dx/dh/dl; ecx/cx/ch/cl; ebp/bp; esi/si; edi/di; esp/sp. шість сегментних регістрів: cs, ds, ss, es, fs, gs; регістри управління та стану: регістр прапорів eflags/flags; регістр покажчика команди eip/ip. Регістри стану і управління У мікропроцесор включені декілька регістрів (див. рис. 1.1), які постійно містять інформацію про стан як самого мікропроцесора, так і програми, команди якої в даний момент завантажені в конвеєр. До цих регістрів відносяться: регістр прапорів eflags/flags; регістр покажчика команди eip/ip. Використовуючи ці регістри, можна одержувати інформацію про результати виконання команд і впливати на стан самого мікропроцесора. Розглянемо докладніше призначення і вміст цих регістрів. eflags/flags (flag register) — регістр прапорів. Розрядність eflags/flags — 32/16 бітів. Окремі біти даного регістра мають певне функціональне призначення і називаються прапорцями. Молодша частина цього регістра повністю аналогічна регістру flags для i8086. На рис. 1.2 показано вміст регістра eflags. Виходячи з особливостей використання, прапори регістра eflags/flags можна розділити на три групи: 8 прапорців стану. Ці прапорці можуть змінюватися після виконання машинних команд. Прапорці стану регістра eflags відображають особливості результату виконання арифметичних або логічних операцій. Це дає можливість аналізувати стан обчислювального процесу і реагувати на нього за допомогою команд умовних переходів і викликів підпрограм. 1 прапорець управління. Позначається df (Directory Flag). Він знаходиться в 10-му біті регістру eflags і використовується для операцій рядками даних. Значення прапорця df визначає напрям поелементної обробки в цих операціях: від початку рядка до кінця або навпаки, від кінця рядка до його початку (df = 1). Для роботи з прапорцем df існують спеціальні команди: cld (зняти прапорець df) і std (встановити прапорець df). Застосування цих команд дозволяє привести прапорець df у відповідність з алгоритмом і забезпечити автоматичне збільшення або зменшення лічильників при виконанні операцій з рядками; 5 системних прапорців, для керування вводом/виводом, маскованими перериваннями, відлагодженням, перемиканням між завданнями і віртуальним режимом 8086. Прикладним програмам не рекомендується модифікувати без необхідності ці прапорці, оскільки в більшості випадків це приведе до переривання роботи програми. Індивідуальне завдання Варіант 6  Створити, використовуючи мову асемблера мікропроцесорів сімейства x86 Intel, *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. A = {a[i]} – наперед заданий масив з N чисел цілих чисел. c, d – цілі константи. K, L – цілі додатні числа. 6. Знайти число додатних елементів A за умови с <= a[i] <= d   Код програми .586 .model flat, stdcall option casemap: none include \masm32\include\user32.inc includelib \masm32\lib\user32.lib include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\masm32.inc include \masm32\include\debug.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\debug.lib .data arr dd -1,0,1,2,3,4,5,6,7,8 b dd 2 d dd 3 count dd 0 .code start: mov ecx,10 mov edx,0 mitka: mov eax,[arr+ecx*4-4] cmp ecx,0 je mitka1 dec ecx cmp eax,0 jl mitka cmp b,eax jg mitka cmp eax,d jg mitka inc count mitka1: cmp ecx,0 jg mitka PrintDec count, "Counter value" invoke ExitProcess, NULL end start Результат виконання програми / Висновок На даній лабораторній роботі я ознайомився з програмною моделлю 32-розрядних мікропроцесорів Intel та оволодів навиками створення програм, використовуючи 32-розрядний Асемблер.
Антиботан аватар за замовчуванням

04.10.2016 22:07

Коментарі

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

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

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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