Лабораторна робота №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:02

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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