Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторної роботи №5
З дисципліни: «Засоби системного програмування»
На тему: «Дослідження роботи команд переходів. Програмування задач з використанням алгоритмів розгалуження»
Варіант 18
Мета: освоїти використання команд порівняння, умовного та безумовного переходів. Набути вміння використовувати арифметичні команди над знаковими даними та команди логічних операцій.
ЗАВДАННЯ:
Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу.
Вхідні дані слід вважати цілими числами зі знаком, розміром один байт.
Результат обчислення виразу повинен записуватися у пам’ять.
Уникнути випадку некоректних обчислень при діленні на нуль та при переповненні розрядної сітки (вивести відповідне текстове повідомлення).
За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень) та проаналізувати отримані результати для різних вхідних даних.
Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
Дати відповідь на контрольні запитання.
ВАРІАНТ ЗАВДАННЯ:
18
Лістинг програми:
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
msg db 'Division by zero$' ; д_лення на 0
msg1 db 'Overflow bit grid$' ; переповнення с_тки
A db -1
B db 1
X db 0h
.CODE
go:
mov ax,@data ; коп_ювання адреса сегмента даних (@data) в регистр ax
mov ds,ax ; заносить в рег_стр сегмента даних адресу початку даних
xor ax,ax ; онулення скидання рег_стра _ прапорця
mov al,A
mov bl,B
cmp al,bl ; пор_внюємо 2 пол_в
jz rivno ; якщо 0
jl menshe ; якщо менше
jg bilshe ; якщо б_льше
bilshe:
mov al,B
mov bl,5
sub al,bl ; в_дн_мання
jo prt_msg1 ; якщо переповнення
mov bl,A
add bl,0 ;додавання
jz prt_msg ;якщо 0
idiv bl ;д_лення
mov X, al ;збер результат
jmp exit
rivno:
mov X,-55
jmp exit
menshe:
mov bl,5
mov al,A
imul bl ; множення 5 на A
jo prt_msg1 ; якщо переповнення
mov bl,B
add bl,0
jz prt_msg ;якщо 0
idiv bl ;ділення
sub al,4
jo prt_msg1 ;якщо переповнення
mov X, al
jmp exit
prt_msg:
mov ah,09
mov dx, offset msg
int 21h
mov ah,10h
int 16h
jmp exit
prt_msg1:
mov ah,09
mov dx, offset msg1
int 21h
mov ah,10h
int 16h
jmp exit
imul bl
exit:
mov ah, 4ch
int 21h
end go
Результат роботи програми:
При діленні на нуль або в результаті переповнення розрядної сітки програми видасть повідомлення.
Наприклад візьмемо:
A= 0
B= -4
Врезультаті програма видасть повідомлення :
Висновок:
На цій лабораторній роботі я навчився використовувати команди умовних переходів і використовувати арифметичні команди над знаковими даними та команди логічних операцій.