Лабораторна робота № 1

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

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

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

Рік:
2012
Тип роботи:
Лабораторна робота
Предмет:
Програмування
Група:
КІ

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ, МОЛОДІ ТА СПОРТУ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Лабораторна робота № 1 . ОСОБЛИВОСТІ ПРОГРАМУВАННЯ З ВИКОРИСТАННЯМ 32 РОЗРЯДНОГО АСЕМБЛЕРА Мета роботи: Ознайомитись з програмною моделлю 32 розрядних процесорів Intel та оволодіти навиками створення програм, використовуючи 32 розрядний асемблер. ТЕОРЕТИЧНІ ВІДОМОСТІ Програмна модель комп'ютера, частиною якої є програмна модель мікропроцесора, яка містить 32 регістри в тій чи іншій мірі доступних для використання програмістом. Дані регістри можна розділити на дві великі групи: 16 регістрів користувача; 16 системних регістрів. У програмах на мові асемблера регістри використовуються дуже інтенсивно. Більшість регістрів мають певне функціональне призначення. Регістри користувача Як випливає з назви, призначеними для користувача регістри називаються тому, що програміст може використовувати їх при написанні своїх програм. До цих регістрів відносяться (рис.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) Ні, це не різні регістри — це частини одного великого 32-розрядного регістра. Їх можна використовувати в програмі як окремі об'єкти. Так зроблено для забезпечення працездатності програм, написаних для молодших 16-розрядних моделей мікропроцесорів фірми Intel, починаючи з i8086. Мікропроцесори i486 і Pentium мають в основному 32-розрядні регістри. Їх кількість, за винятком сегментних регістрів, таке ж, як і у i8086, але розмірність більше, що і відбито в їх позначеннях — вони мають приставку e (Extended). Регістри загального призначення Всі регістри цієї групи дозволяють звертатися до своїх “молодших” частин (див. рис. 1). Відмітимо, що використовувати для самостійної адресації можна тільки молодші 16 і 8-бітові частини цих регістрів. Старші 16 біт цих регістрів як самостійні об'єкти недоступні. До РЗП відносяться: eax/ax/ah/al (Accumulator register) — акумулятор. Застосовується для зберігання проміжних даних. У деяких командах використання цього регістра обов'язкове; ebx/bx/bh/bl (Base register) — базовий регістр. ЗАВДАННЯ Створити 0*.exe програму, яка реалізовує обчислення, заданого варіантом виразу. A={a[i]} – попередньозаданий масив з N чисел. c, d - константи. Переконатися у правильності роботи програми використовуючи VKDebug. Скласти звіт про виконану роботу з приведенням тексту програми. 14. Знайти скільки нульових елементів в масиві A={a[i]} Код програми .586 ; використати плоску модель пам'яті і узгодження імен stdcall .model flat, 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 5,4,0,0,0,0,2,0,5,6,0,6,0,4,8,12,4,0,9,0 Zeros dd 0 L dd 20 .code start: mov ecx, 0 Start_1: mov eax, [Arr + ecx*4] PrintDec eax .if eax == 0 add Zeros, 1 mov eax, Zeros .endif inc ecx cmp ecx, L jnz Start_1 PrintDec Zeros, "Result: " invoke ExitProcess, NULL ; виклик процедури завершення процесу end start Результат виконання програми / Висновок: я ознайомився з програмною моделлю 32 розрядних процесорів Intel та оволодів навиками створення програм, використовуючи 32 розрядний асемблер.
Антиботан аватар за замовчуванням

25.11.2012 18:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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