\documentclass[bachelor, och, labwork]{SCWorks} % параметр - тип обучения - одно из значений: % spec - специальность % bachelor - бакалавриат (по умолчанию) % master - магистратура % параметр - форма обучения - одно из значений: % och - очное (по умолчанию) % zaoch - заочное % параметр - тип работы - одно из значений: % referat - реферат % coursework - курсовая работа (по умолчанию) % diploma - дипломная работа % pract - отчет по практике % параметр - включение шрифта % times - включение шрифта Times New Roman (если установлен) % по умолчанию выключен \usepackage{subfigure} \usepackage{tikz,pgfplots} \pgfplotsset{compat=1.5} \usepackage{float} %\usepackage{titlesec} \setcounter{secnumdepth}{4} %\titleformat{\paragraph} %{\normalfont\normalsize}{\theparagraph}{1em}{} %\titlespacing*{\paragraph} %{35.5pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex} \titleformat{\paragraph}[block] {\hspace{1.25cm}\normalfont} {\theparagraph}{1ex}{} \titlespacing{\paragraph} {0cm}{2ex plus 1ex minus .2ex}{.4ex plus.2ex} % --------------------------------------------------------------------------% \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage{graphicx} \graphicspath{ {./images/} } \usepackage{tempora} \usepackage[sort,compress]{cite} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsthm} \usepackage{fancyvrb} \usepackage{listings} \usepackage{listingsutf8} \usepackage{longtable} \usepackage{tabularx} \usepackage{multirow} \usepackage{array} \usepackage[english,russian]{babel} % \usepackage[colorlinks=true]{hyperref} \usepackage{url} \usepackage{enumitem} \newcommand{\eqdef}{\stackrel {\rm def}{=}} \newcommand{\dsint}{\displaystyle\int} \renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}} \newtheorem{lem}{Лемма} \begin{document} % Кафедра (в родительном падеже) \chair{} % Тема работы \title{Простейшие программы на Ассемблере} % Курс \course{2} % Группа \group{231} % Факультет (в родительном падеже) (по умолчанию "факультета КНиИТ") \department{факультета КНиИТ} % Специальность/направление код - наименование %\napravlenie{09.03.04 "--- Программная инженерия} %\napravlenie{010500 "--- Математическое обеспечение и администрирование информационных систем} %\napravlenie{230100 "--- Информатика и вычислительная техника} %\napravlenie{231000 "--- Программная инженерия} \napravlenie{10.05.01 "--- Компьютерная безопасность} % Для студентки. Для работы студента следующая команда не нужна. % \studenttitle{Студентки} % Фамилия, имя, отчество в родительном падеже \author{Гущина Андрея Юрьевича} % Заведующий кафедрой % \chtitle{} % степень, звание % \chname{} %Научный руководитель (для реферата преподаватель проверяющий работу) \satitle{ассистент} %должность, степень, звание \saname{А.~А.~Трунов} % Руководитель практики от организации (только для практики, % для остальных типов работ не используется) % \patitle{к.ф.-м.н.} % \paname{С.~В.~Миронов} % Семестр (только для практики, для остальных % типов работ не используется) %\term{8} % Наименование практики (только для практики, для остальных % типов работ не используется) %\practtype{преддипломная} % Продолжительность практики (количество недель) (только для практики, % для остальных типов работ не используется) %\duration{4} % Даты начала и окончания практики (только для практики, для остальных % типов работ не используется) %\practStart{30.04.2019} %\practFinish{27.05.2019} % Год выполнения отчета \date{2020} \maketitle % Включение нумерации рисунков, формул и таблиц по разделам % (по умолчанию - нумерация сквозная) % (допускается оба вида нумерации) % \secNumbering % \tableofcontents % \section{Лабораторная работа \#1} \section{Задание} \textit{Выполните арифметические действия над шестнадцатеричными числами} \begin{itemize} \item D2CF + A8= \item 2135 + AF12= \item BCAD - 3124= \item 4561 - 345A= \item FA * 35= \item FF * FF= \item 2346/AC= \quad\quad остаток= \item EDFA/AD= \quad\quad остаток= \end{itemize} \textit{Поместите в отчет результаты вычислений.} При выполнении сложения результат помещается в регистр AX. \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_1.png} \caption{D2CF + A8 = D377} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_2.png} \caption{2135 + AF12 = D047} \end{figure} При выполнении вычитания результат помещается в регистр AX. \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_3.png} \caption{BCAD - 3124 = 8B89} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_4.png} \caption{4561 - 345A = 1107} \end{figure} При выполнении умножения результат помещается в регистр AX. \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_5.png} \caption{FA * 35 = 33C2} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_6.png} \caption{FF * FF = FE01} \end{figure} При выполнении деления частное помещается в регистр AX, а остаток в регистр DX. \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_7.png} \caption{2346 / AC = 0034, остаток = 0056} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{1_8.png} \caption{EDFA / AD = 0160, остаток = 001A} \end{figure} \section{Задание} \textit{Используя прерывание 21, выведите на экран символы F, 3, d, 9, >,(.} Для подготовки к выполнения задания введём в сегмент кода инструкцию INT 21, а в регистр AX поместим значение 200h. \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{prep_int21.png} \caption{Подготовка регистров и сегмента кода к выполнению задания} \end{figure} ASCII-кодами символов являются: <> -- 46, <<3>> -- 33, <> -- 64, <<9>> -- 39, <<$>$>> -- 3e, <<(>> -- 28. \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{print_F.png} \caption{Вывод <>} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{print_3.png} \caption{Вывод <<3>>} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{print_d.png} \caption{Вывод <>} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{print_9.png} \caption{Вывод <<9>>} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{print_gt.png} \caption{Вывод <<$>$>>} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{print_brace.png} \caption{Вывод <<(>>} \end{figure} \section{Задание} \textit{Введите в память начиная со смещения 100 программу из 2 строк, которая выведет на экран символ A и завершит выполнение инструкцией INT20. Перед выполнением программы (команда отладчика G 104) проверьте правильность введенных кодов, выполнив деассемблирование. Поместите результат деассемблирования в отчет.} \begin{figure}[H] \centering \includegraphics[width=0.5\textwidth]{2_program.png} \caption{Ввод программы} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{2_disassemble.png} \caption{Результат деассемблирования} \end{figure} \section{Задание} \textit{Введите начиная с адреса 100 программу вывода на экран символа D: INT 21, INT 20. Не забудьте установить значения регистров AH, DL. Поместите результат деассемблирования и значения регистров перед исполнением в отчет.} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{4_program.png} \caption{Ввод программы} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.6\textwidth]{4_dis.png} \caption{Результат деассемблирования} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{4_reg.png} \caption{Содержимое регистров} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{4_print.png} \caption{Вывод программы} \end{figure} \section{Задание} \textit{Составьте и введите в память начиная со смещения 100 программу, которая загрузит в регистры соответствующие коды и выведет на экран символ @, после чего завершит выполнение и передаст управление отладчику. Выполните программу. Поместите результат деассемблирования в отчет.} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{5_program.png} \caption{Текст и запуск программы} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{5_dis.png} \caption{Деассемблирование программы} \end{figure} \section{Задание} \textit{Запишите на диск в файл <> программу вывода на экран символа @. При выполнении из командной строки DOS программа должна выводить на экран символ @.} Можно заметить, что программа занимает 8 байт памяти, поэтому в регистр CX вносим значение 8. Создать и записать файл можно с помощью команд N <название файла> и W. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{6_program.png} \caption{Запись и запуск программы} \end{figure} \section{Задание} \textit{Введите строку символов <> в память, начиная со смещения 200, введите в память, начиная со смещения 100, программу, которая загрузит в регистры коды прерывания 21 09, адрес строки в памяти (200).} \textit{При помощи команды деассемблирования проверьте введенные коды программы. Для проверки правильности введенных кодов символов строки используйте команду отладчика D<адрес>. Эта команда выводит на экран данные в формате <адрес-сегмент><адрес-смещение><строка кодов><строка символов>. Определите длину программы (начиная со смещения 100) вместе со строкой символов (до первого символа после \$).} \textit{Запишите программу в файл <>. Проверьте ее работу, запустив из командной строки.} В сегмент кода внесём текст программы, где в регистры вносятся адрес строки символов в памяти, а также необходимые прерывания для выведения строки. Корректность введённо строки можно проверить с помощью команды D. \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{7_string.png} \caption{Ввод строки} \end{figure} \begin{figure}[H] \centering \includegraphics[width=0.8\textwidth]{7_program.png} \caption{Ввод и запуск программы} \end{figure} \end{document}