Міністерство освіти і науки України
Національний технічний університет України
«Київський політехнічний інститут ім. І. Сікорського»
Кафедра автоматизації проектування енергетичних процесів і систем
Лабораторна робота № 6
з дисципліни «Операційні системи»
«Арифметичні команди»
Робота студентки 1 курсу, ТР-15
Тхоржевської Анни Сергіївни
Перевірила д.т.н., проф. Левченко Л.О.
КИЇВ 2022
Мета роботи: програмування блоку обчислення арифметичних виразів на прикладі реалізації математичних формул з використанням арифметичних команд асемблера за індивідуальними завданнями.
Завдання:
Підготуйте теоретичну частину щодо використання команд, призначених для цілочисельних арифметичних виразів.
Підготуйте і налагодьте програму для обчислення простих формул за зразком. Продемонструйте роботу програми під керуванням налагоджувача, прокоментуйте вміст обчислюваних змінних.
Теоретична частина
Варіант 14
Завдання за варіантом:
Результати виконання роботи
Код (відповідно до варіанту завдання):
; Лабораторна робота 6
; Виконала Тхоржевська А. С. гр. ТР-15
; Арифметичні команди
;Обчислення формули z = (4*c - d/2 + 23)/(a*a - 1)
.MODEL small
.Stack 100h
Datas segment
a dw 2
c dw 2
d dw 2
z dw ?
h dw ?
dob dw ?
mess db 'Error! Division by zero.$'
Datas ends
Codes segment
Assume cs:Codes, ds:Datas
First: mov ax, Datas
mov ds, ax
;a*a
mov ax, a
cwd
imul a
;перевіряємо а == 1
cmp ax, 1
je @err
;(a*a)-1
mov h, 1
sbb ax, h
mov dob, ax
;4*c
mov h, 4
mov ax, c
imul h
mov z, ax
;d/2
mov h, 2
mov ax, d
cwd
idiv h
;(4*c)-(d/2)
sbb z, ax
;(4*c-d/2)+23
mov ax, z
mov h, 23
adc ax, h
;(4*c-d/2+23) / (dob)
cwd
idiv dob
mov z, ax
xor ax, ax
mov ax, z
push ax
cmp ax, 0
jns @plus
mov dl, '-'
mov ah, 02h
int 21h
pop ax
neg ax
@plus: xor cx, cx
mov bx, 10
@dvsn: xor dx, dx
div bx
push dx
inc cx
test ax, ax
jnz short @dvsn
mov ah, 02h
@out: pop dx
add dl, 30h ; +30
int 21h
loop @out
jmp @end
@err: mov dx, offset mess
mov ah, 09h
int 21h
@end: mov ax, 4c00h
int 21h
Codes ends
end First
EXE-файл:
Запуск TD:
Отриманий результат:
Висновок: Під час виконання лабораторної роботи №6 ми ознайомились з командами переходу та арифметичними командами (MUL, IMUL, DIV, IDIV, ADD, ADC, INC, SUB, SBB, DEC, NEG, CBW, CWD). Було виконано завдання згідно з варіантом, оформлено звіт на надіслано викладачу на перевірку.