diff options
Diffstat (limited to 'labs/lab3/lab3.tex')
| -rw-r--r-- | labs/lab3/lab3.tex | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/labs/lab3/lab3.tex b/labs/lab3/lab3.tex deleted file mode 100644 index 92babc4..0000000 --- a/labs/lab3/lab3.tex +++ /dev/null @@ -1,242 +0,0 @@ -\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{array} -\usepackage[english,russian]{babel} - -\usepackage[colorlinks=true]{hyperref} -\usepackage{url} - - -\newcommand{\eqdef}{\stackrel {\rm def}{=}} - -\renewcommand\theFancyVerbLine{\small\arabic{FancyVerbLine}} - -\newtheorem{lem}{Лемма} - -\begin{document} - -% Кафедра (в родительном падеже) -\chair{} - -% Тема работы -\title{Отчет по дисциплине ``Аппаратные средства вычислительной техники'' по лабораторной работе \#3} - -% Курс -\course{1} - -% Группа -\group{131} - -% Факультет (в родительном падеже) (по умолчанию "факультета КНиИТ") -\department{факультета КНиИТ} - -% Специальность/направление код - наименование -%\napravlenie{09.03.04 "--- Программная инженерия} -%\napravlenie{010500 "--- Математическое обеспечение и администрирование информационных систем} -%\napravlenie{230100 "--- Информатика и вычислительная техника} -%\napravlenie{231000 "--- Программная инженерия} -\napravlenie{090301 "--- Компьютерная безопасность} - -% Для студентки. Для работы студента следующая команда не нужна. -% \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 - -\section{Задание 1} - -\textit{ - Напишите программу в формате exe, выводящую в шестнадцатеричном виде дамп - самой (коды) себя напрямую в видеобуфер (адрес B8000h) в текстовом режиме. - Программа должна восстанавливать экран после закрытия. -} - -Для выполнения задания я разделил программу на три процедуры: - -\begin{itemize} - \item \textbf{printWord} -- для вывода символа дампа программы - \item \textbf{clearScreen} -- для очистки экрана и сохранения его массив - \item \textbf{restoreScreen} -- для восстановления экрана после окончания программы -\end{itemize} - -В основной части программы установил счётчики и вычислил размер дампа программы. - -\begin{figure}[H] - \centering - \includegraphics[width=0.8\textwidth]{start_label.png} - \caption{Основная часть программы} - \label{} -\end{figure} - -В процедуре clearScreen я записываю текущее состояние видеопамяти в буфер screenArr. -Сразу после этого записываю в видеопамять нули, чтобы очистить экран. - -\begin{figure}[H] - \centering - \includegraphics[width=0.7\textwidth]{clear_screen.png} - \caption{clearScreen} - \label{} -\end{figure} - -Дамп программы находится в регистре cs (Code segment). Последовательно читаем то -количество байт, которое мы вычислили в начале программы и выводим их по одному -с помощью процедуры printWord. - -В ней мы переводим байты в соответствующие символы по таблице ASCII. -Цифры в таблице начинаются со значения 30h, а буквы со значения 41h. - -\begin{figure}[H] - \centering - \includegraphics[width=0.6\textwidth]{print_word.png} - \caption{printWord} - \label{} -\end{figure} - -После вывода дампа приостановим программу с помощью функции 07h прерывания 21h -(Ожидания нажатия на любую кнопку). - -После этого вызовем функцию restoreScreen, чтобы восстановить экран в прежнее состояние. -Для этого надо записать в видеопамять значения из буфера screenArr, в который мы записывали -видеопамять в процедуре clearScreen. - -\begin{figure}[H] - \centering - \includegraphics[width=0.6\textwidth]{restore_screen.png} - \caption{restoreScreen} - \label{} -\end{figure} - -Пора запустить программу! - -Проассемблируем и слинкуем программу, чтобы создать .exe файл. - -\begin{figure}[H] - \centering - \includegraphics[width=0.7\textwidth]{compile.png} - \caption{Компилируем...} - \label{} -\end{figure} - -Запустил программу с помощью команды VDUMP.EXE и получил дамп этой же программы. - -\begin{figure}[H] - \centering - \includegraphics[width=0.7\textwidth]{run.png} - \caption{Читаем дамп} - \label{} -\end{figure} - -Получил строку из символов, которая начинается с 51B902... -Интересно получилось. - -После того, как я нажал на кнопку Enter программа закрылась, а экран -вернулся в то состояние, в котором было до запуска. И тут даже появилась -введенная команда запуска этой программы! - -\begin{figure}[H] - \centering - \includegraphics[width=0.7\textwidth]{exited.png} - \caption{Вернулись домой!} - \label{} -\end{figure} - -Попробовал получить дамп программы, которая работает у меня в голове и получилось вот это: - -\begin{figure}[H] - \centering - \includegraphics[width=0.7\textwidth]{mydump.jpg} - \caption{} - \label{} -\end{figure} - -\end{document} |