Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Дослідження роботи команд переходів. Програмування задач з використанням алгоритмів розгалуження

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

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

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

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

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 5 з дисципліни: “ Засоби системного програмування ” на тему: ” Дослідження роботи команд переходів. Програмування задач з використанням алгоритмів розгалуження ” Львів – 2018 Мета: освоїти використання команд порівняння, умовного та безумовного переходів. Набути вміння використовувати арифметичні команди над знаковими даними та команди логічних операцій. Порядок виконання роботи 1. Завдання Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу. Вхідні дані слід вважати цілими числами зі знаком, розміром один байт. Результат обчислення виразу повинен записуватися у пам’ять. Уникнути випадку некоректних обчислень при діленні на нуль та при переповненні розрядної сітки (вивести відповідне текстове повідомлення). За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень) та проаналізувати отримані результати для різних вхідних даних. Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї. Дати відповідь на контрольні запитання. ВАРІАНТИ ЗАВДАННЯ: А, В - знакові операнди, розміром один байт.    2. Написав і скомпілював код програми .MODEL SMALL .STACK 100h .DATA A db 80 B db 75 X dw ? K db 3 Hello db 13,10,' X=-5+b/a if a>b',13,10,' X=45 if a==b',13,10,' X=(3*a-6)/b if a<b',13,10,'$' A_B db 13,10, ' a==b ====> X=45',13,10,'$' Error_A db 13,10,' a>b and a==0 ----> divide by zero',13,10,'$' Error_B db 13,10,' a<b and b==0 ----> divide by zero',13,10,'$' ;X=-5+b/a if a>b ;X=45, a=b ;X=(3*a-6)/b, a<b .CODE .386 Start: mov ax,@data mov ds,ax mov ah,09 mov dx,offset hello int 21h mov al,A ;занести значення з комірки пам’яті, визначеної міткою А, у регістр al cmp al,B ;порівняти значення регістру al та комірки пам’яті В jne A_n_b ;за умови, що вони нерівні, перейти на мітку A_n_b mov X,45 ;інакше – занести значення константи 110 у пам’ять, визначену як X mov ah,09 ;вивести повідомлення, про рівність вхідних даних і значення результату mov dx,offset A_B int 21h jmp exit ;перейти на мітку exit ;X=(3*a-6)/b, a<b A_n_b: jg A_g_B ;якщо вміст al > В, то перейти на мітку A_g_B cmp B,0 ;інакше – порівняти значення A з нулем je exit_B ;якщо вони рівні, тобто можливе ділення на нуль, перейти на мітку exit_A mov ah,80h ;занести у регістр ah константу 80h and ah,al ;виділити в регістрі ah знаковий розряд значення, занесеного у регістр al sar ah,8 ;розповсюдити знаковий розряд в регістрі ah imul K ;ax=a*3 sub ax,6 ;відняли 6 від числа А?? mov dx,8000h ;занести у регістр dh константу 8000h and dx,ax ;виділити в регістрі dx знаковий розряд значення, занесеного у регістр ax sar dx,15 ;розповсюдити знаковий розряд в регістрі dx mov bl,B ;занести у регістр bl значення з комірки пам’яті, визначеної міткою B mov bh,80h ;занести у регістр bh константу 80h and bh,bl ;виділити в регістрі bh знаковий розряд значення, занесеного у регістр bl sar bh,8 ;розповсюдити знаковий розряд в регістрі bh idiv bx ;поділити знакове число, що знаходиться у регістровій парі dx:ax на знакове число у регістрі bx mov X,ax ;перенести отриманий результат у комірку Х jmp exit ;перейти на мітку exit exit_B: mov ah,09 ;вивести повідомлення про ділення на нуль, при В==0 mov dx,offset Error_B int 21h jmp exit ;перейти на мітку exit ;X=-5+b/a if a>b A_g_B: cmp A,0 ;;порівняти значення A з нулем je exit_A ;вони рівні, тобто можливе ...
Антиботан аватар за замовчуванням

14.10.2018 20:10

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини