summaryrefslogtreecommitdiff
path: root/labs/lab3/lab3.tex
diff options
context:
space:
mode:
Diffstat (limited to 'labs/lab3/lab3.tex')
-rw-r--r--labs/lab3/lab3.tex242
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}