diff options
Diffstat (limited to 'asvt/labs/lab4/lab4.tex')
| -rw-r--r-- | asvt/labs/lab4/lab4.tex | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/asvt/labs/lab4/lab4.tex b/asvt/labs/lab4/lab4.tex new file mode 100644 index 0000000..b55956d --- /dev/null +++ b/asvt/labs/lab4/lab4.tex @@ -0,0 +1,210 @@ +\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 + +\tableofcontents + +\section{Задание 1} + +\textit{Скомпилируйте программу лаб. работы 11 (установка системных часов) в +формате .exe, загрузите ее в отладчик (с произвольными параметрами командной +строки) и проанализируйте PSP этой программы. Выведите дамп блока памяти +окружения процесса.} + +\subsection{Проверяем программу} + +Возьмём программу из прошлой лабораторной и проверим её работоспособность. + +\begin{figure}[H] + \centering + \includegraphics[width=0.7\textwidth]{run.png} + \caption{Смотрим часы} + \label{} +\end{figure} + +Всё ещё работает. Сделано на века! + +\subsection{Program Segment Prefix} +PSP или Program Segment Prefix -- это префикс программного сегмента в MS-DOS, +который предшествует в памяти каждой COM или EXE-программе, и занимает 100h +байт. Структура PSP одинакова для файлов обоих типов. + +\subsection{Дебажим} + +Для дебага программы решил взять дебаггер из того же набора, что и +ассемблер с линковщиком -- Turbo Debugger. Попробуем посмотреть что нам выведет +дебаггер. + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{tdb_run.png} + \caption{Turbo Debugger} + \label{} +\end{figure} + +Можно увидеть несколько окон со всей информацией, которую нам нужно знать о +нашей программе. Непосредственно в основном окне выведен её исходный код. + +Значение столбцов главного окна слева направо: +\begin{itemize} + \item Адреса команд в памяти. Можно заметить смещение на 100h, благодаря команде ORG 100h + \item Сами команды в виде машинного кода. + \item Эти же команды, только в человекочитаемом виде. +\end{itemize} + +Под основным окном видно дамп памяти программы (А рядом с ним этот же дамп, но +в виде ASCII-символов). + +В окнах справа отображается состояние регистров, флагов и стека. + + +\section{Задание 2} + +\textit{Определение размера программы в формате exe.} + +Возьмём ту же программу из прошлого задание я добавим в ней новый сегмент. + +После ассемблирования в дебаггере получилась следующая картина: + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{cs_tdb.png} + \caption{} + \label{} +\end{figure} + +Видно, что в регистре cs находится значение 43AD. Это и есть размер +нашей программы. + +\end{document} |