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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ  Лабораторна робота № 1 з дисципліни: " Системне програмування " Мета: Ознайомитись з програмною моделлю 32 розрядних процесорів Intel та оволодіти навиками створення програм, використовуючи 32 розрядний асемблер. Програмна модель комп'ютера, частиною якої є програмна модель мікропроцесора, яка містить 32 регістри в тій чи іншій мірі доступних для використання програмістом. Робота з масивами Регістри загального призначення використовуються для адресації масивів. При цьому застосовується адресація по базі з масштабуванням: початкова адреса + база* масштабуючий коефіцієнт бази. Допустимі значення масштабуючого коефіцієнту бази (кількість байт, які займає 1 елемент масиву) рівні 1, 2, 4, 8. Таким чином, щоб записати 3-й елемент масиву оголошеного мовою С як short arr[15] в edx треба написати код: mov eax, arr mov ebx, 2 mov edx,[eax+ebx*2] ЗАВДАННЯ 6 Знайти скільки додатних елементів масиву A={a[i]} задовольняють умову: с <= a[i] <= d   Код програми: .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 ; підключення службових бібліотек includelib \masm32\lib\kernel32.lib includelib \masm32\lib\masm32.lib includelib \masm32\lib\debug.lib ; оголошення масиву даних .data Arr dd 15,15,20,-5,5,15,-96,9,3,60;опис масиву даних Q dw -10;опис нижньої межі Q D dw 20;опис верхньої межі D S dd 0h;кількість додатніх елементів .code start: ;виводимо елементи масиву на екран у зворотньому порядку mov ecx,10 prnt: mov eax,[Arr+ecx*4-4] PrintDec eax,"Arr value=" ; виклик макросу відлагодження dec ecx cmp ecx,0 jnz prnt ;робимо варіант по списку mov ecx,10 q1: mov eax,[Arr+ecx*4-4] cmp eax,0 ; порівнюємо число з нулем jge next jl mitkaExit next: cmp ax,Q ; порівнюємо число з нижньою межею jl mitkaExit jge mitkaD mitkaD: cmp ax, D jg mitkaExit ; порівнюємо число з верхньою межею jle Sumator Sumator: inc S ; додаємо до S одиницю, якщо всі умови справдились jmp mitkaExit mitkaExit: dec ecx cmp ecx,0 ;перевіряємо чи кінець масиву jnz q1 mov eax,S PrintDec eax,"K-st elementiv." ; виклик макросу відлагодження invoke ExitProcess, NULL ; виклик процедури завершення процесу end start  Висновок: На цій лабораторній роботі я створив програму відповідно мого варіанту і навчився використовувати 32х розрядний асемблер.
Антиботан аватар за замовчуванням

18.11.2012 20:11-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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