Міністерство освіти та науки України
Національний університет «Львівська політехніка»
ЗВІТ
З лабораторної роботи №6
З дисципліни: «Засоби системного програмування»
На тему: «Дослідження роботи команд переходів. Програмування задач з використанням алгоритмів розгалуження»
ЗАВДАННЯ:
Створити *.exe програму, яка реалізовує обчислення, заданого варіантом виразу.
Вхідні дані слід вважати цілими числами зі знаком, розміром один байт.
Результат обчислення виразу повинен записуватися у пам’ять.
Уникнути випадку некоректних обчислень при діленні на нуль та при переповненні розрядної сітки (вивести відповідне текстове повідомлення).
За допомогою Debug, відслідкувати правильність виконання програми (продемонструвати результати проміжних та кінцевих обчислень) та проаналізувати отримані результати для різних вхідних даних.
Скласти звіт про виконану роботу з приведенням тексту програми та коментарів до неї.
Дати відповідь на контрольні запитання.
ВАРІАНТИ ЗАВДАННЯ:
А, В - знакові операнди, розміром один байт.
№
вираз
7
Лістинг програми:
DOSSEG
.MODEL SMALL
.STACK 100h
.DATA
msg db 'divition by zero$'
msg1 db 'overflow bit grid$'
A db 127
B db 126
X db 0h
.CODE
go:
mov ax,@data
mov ds,ax
xor ax,ax
mov al,A
mov bl,B
test al,80h
jz next
test bl,80h
jnz next
jmp menshe
next:
test al,80h
jnz next1
test bl,80h
jz next1
jmp bilshe
next1:
cmp al,bl
jc sec_cmp
jz rivno
jb menshe
jmp bilshe
sec_cmp:
jno menshe
bilshe:
mov al,B
cbw
mov bl,4
imul bl
jo prt_msg1
sub al,1
jo prt_msg1
cbw
mov bl,A
add bl,1
jz prt_msg
idiv bl
mov X, al
jmp exit
rivno:
mov X,255
jmp exit
menshe:
mov al,A
sub al,5
jo prt_msg1
cbw
mov bl,B
add bl,0
jz prt_msg
idiv bl
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
Висновок і результати роботи програми:
Висновок: я навчився команди умовних переходів і програмувати задачі з використанням розгалужень.
.