Uploaded by babakhan.adilzhan

Asembly Math func

advertisement
Некоммерческая акционерная корпорация
«АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ
И ТЕЛЕКОММУНИКАЦИЯ ИМЕНИ ГУМАРБЕКА ДАУКЕЕВА»
«Институт информационных технологий»
Кафедра «Информационных систем и кибербезопасности»
ОТЧЕТ
Лабораторная работа №4
По дисциплине: Системное Программирование (СИБ)
По теме: «Операторы условных переходов»
Специальность: 6B06301 – «Системы информационной безопасности»
Выполнено: ст. СИБу-21-2 Бабахан. А. Т.
Проверено: ст. преп. Голубева Т. В.
__________________ «_____» ______ 2022 год
Алматы 2022
Задание
Нам надо написать код на языке ассемблер, откомпилировать программу
и продемонстрировать выполнение заданных действий, откомпилировать
через Turbo Debugger пошагово выполнить программу, чтобы
продемонстрировать выполнение заданных действий.
2
Содержание
Задание ..................................................................................................................... 2
Содержание .............................................................................................................. 3
1 Обзор программы ................................................................................................. 4
1.1 Код программы ................................................................................................ 4
1.2 Запуск программы ........................................................................................... 6
Заключение .............................................................................................................. 9
Список литературы ............................................................................................... 10
3
1 Обзор программы
1.1 Код программы
В этой лабораторной работе составили программу по этим условиям.
Рисунок 1 – Условия программы
Наша программа:
assume cs:mycode, ds:mydate, ss:mystack,
mycode segment para
start: push ds
xor ax, ax
push ax
mov ax, seg mydate
mov ds, ax
mov ax, x
mul y
; xy < 0
cmp ax, 0
jl increment
; 0 < xy < 5
cmp ax, 5
jle decrement
jg showy
jmp theend
increment:
xor ax,ax
mov ax, x
add ax, y
jmp theend
decrement:
xor ax,ax
mov ax, x
4
sub ax, y
jmp theend
showy:
mov ax, y
theend:
retf
mycode ends
mydate segment para
x dw 7
y dw 1
mydate ends
mystack segment para stack 'stack'
dw 100 dup (?)
mystack ends
end start
5
1.2 Запуск программы
Умножил x на y по формуле (рисунок 1).
Рисунок 2 – Умножение x
Команда CMP используется для сравнения двух операндов. Говоря
проще, эта команда сравнивает два числа, то есть проверяет, равны эти два
числа или НЕ равны (рисунок 3).
Рисунок 3 – Первое условие
6
После того как я перешел к первому условию оно нам не подходит, так
как xy < 0, где xy у нас 7. Перехожу ко второму условию (рисунок 4).
Рисунок 4 – Второе условие
Второе условие нам тоже не подошло так как 0 <= xy <= 5, где xy = 7. А
вот третье условие где xy > 5 нам подходит, значение xy у нас 7, у нас
появилась стрелка перехода (рисунок 5).
Рисунок 5 – Третье условие
7
Рисунок 6 – Итог третьего условия
Третье условие сработало и y которая была 1 присвоилась в ax.
8
Заключение
В лабораторной работе мы познакомились с операторами условного и
безусловного перехода на языке ассемблера, в нашей программе было 3
условия как заданно в лабораторной работе и для нас сработало только третье
условие.
Мы не использовали все операторы условного и безусловного перехода,
которые были в лекции 8, но в нашей работе многие не использовали.
9
Список литературы
1. Выполнение программ на языке Ассемблера http://stilusdoctus.narod.ru/tasm/tasm_2.html (12.10.2022)
2.
DOSBOX
Как
запустить
DOS-игры
сегодня?
https://www.youtube.com/watch?v=wcIQLcbEuuU (12.10.2022)
10
Download