\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{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} \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}