Некоммерческая акционерная корпорация «АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ И ТЕЛЕКОММУНИКАЦИЯ ИМЕНИ ГУМАРБЕКА ДАУКЕЕВА» «Институт информационных технологий» Кафедра «Информационных систем и кибербезопасности» ОТЧЕТ Лабораторная работа №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