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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ ЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / Лабораторна робота №5 з курсу ”Засоби системного програмування” Дослідження роботи команд переходів. Програмування задач з використанням алгоритмів розгалуження. Львів – 2012 Дослідження роботи команд переходів. Програмування задач з використанням алгоритмів розгалуження. Мета: освоїти використання команд порівняння, умовного та безумовного переходів. Набути вміння використовувати арифметичні команди над знаковими даними та команди логічних операцій. Завдання: 12    Лістинг програми DOSSEG .MODEL SMALL .STACK 100h .DATA A db 4 B db 5 X dw 0 Hello db 13,10,' X=(2+b)/a if a>b',13,10,' X=-2 if a==b',13,10,' X=(a-5)/2*b if a<b',13,10,'$' A_B db 13,10, ' a==b ====> X=-2',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,'$' .CODE mov ax,@data ;Перевизначення сегментного регістру ds mov ds,ax mov ah,09 ;Вивід текстового повідомлення про умову задачі mov dx,offset hello int 21h mov al,B ;занести значення з комірки пам’яті, визначеної міткою B, у регістр al cmp al,A ;порівняти значення регістру al та комірки пам’яті A jne A_g_B ;за умови, що вони нерівні, перейти на мітку A_g_B mov X,-2 ;інакше – занести значення константи -2 у пам’ять, визначену як X mov ah,09 ;вивести повідомлення, про рівність вхідних даних і значення результату mov dx,offset A_B int 21h jmp exit ;перейти на мітку exit A_g_b: jg A_n_B ;якщо вміст al > A, то перейти на мітку A_n_B cmp A,0 ;інакше – порівняти значення A з нулем je exit_A ;якщо вони рівні, тобто можливе ділення на нуль, перейти на мітку exit_A mov ah,80h ;занести у регістр ah константу 80h and ah,al ;виділити в регістрі ah знаковий розряд значення, занесеного у регістр al sar ah,8 ;розповсюдити знаковий розряд в регістрі ah mov dl,ah ;перенести знаковий розряд в регістр dl mov dh,dl ;перенести знаковий розряд в регістр dh mov bl,B ;занести у регістр bl значення з комірки пам’яті, визначеної міткою В mov bh,80h ;занести у регістр bh константу 80h and bh,bl ;виділити в регістрі bh знаковий розряд значення, занесеного у регістр bl sar bh,8 ;розповсюдити знаковий розряд в регістрі bh add ax,2 idiv bx ;поділити знакове число, що знаходиться у регістровій парі dx:ax на знакове число ;у регістрі bx mov X,ax ;перенести отриманий результат у комірку Х jmp exit ;перейти на мітку exit exit_A: mov ah,09 ;вивести повідомлення про ділення на нуль, при A==0 mov dx,offset Error_A int 21h jmp exit ;перейти на мітку exit A_n_B: cmp B,0 ;порівняти значення В з нулем je exit_B ;якщо вони рівні, тобто можливе ділення на нуль, перейти на мітку exit_B mov al,A ;занесети значення з комірки пам’яті, визначеної міткою A, у регістр al mov ah,80h ;занести у регістр ah константу 80h and ah,al ;виділити в регістрі ah знаковий розряд значення, занесеного у регістр al sar ah,8 ;розповсюдити знаковий розряд в регістрі ah sub ax,5 ;ax=a-5 ;відняти число 5 від значення у регістрі ах mov dx,8000h ;занести у регістр dh константу 8000h and dx,ax ;виділити в регістрі dx знаковий розряд значення, занесеного у регістр ax sar dx,15 ;розповсюдити знаковий розряд в регістрі dx mov bl,A ;занести у регістр bl значення з комірки пам’яті, визначеної міткою А mov bh,80h ;занести у регістр bh константу 80h and bh,bl ;виділити в регістрі bh знаковий розряд значення, занесеного у регістр bl sar bh,8 idiv bx ;поділити знакове число, що знаходиться у регістровій парі dx:ax на знакове число mov bx,2 ;у регістрі bx imul bx mov X,ax ;перенести отриманий результат у комірку Х jmp exit ;перейти на мітку exit exit_B: mov ah,09 ;вивести повідомлення про ділення на нуль, при А==0 mov dx,offset Error_B int 21h exit: mov ah,4Ch ;завершення програми int 21h end Дамп пам’яті відображено на рис.1, Рис.1. Вмістиме дампу пам’яті / Скріншот роботи програми: / Висновок: В даній лабораторній роботі я освоїв використання команд порівняння, умовного та безумовного переходів. Набув вміння використовувати арифметичні команди над знаковими даними та команди логічних операцій.
Антиботан аватар за замовчуванням

27.10.2012 20:10-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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