From a13a8f51218c8ffbc12cb7f9b5123fea950b85e7 Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 4 Dec 2020 17:04:42 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B2=D1=83=D1=8E=20=D0=BB=D0=B0=D0=B1=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- asvt/sem3/lab1/images/addition.png | Bin 0 -> 543580 bytes asvt/sem3/lab1/images/ds_data.png | Bin 0 -> 786888 bytes asvt/sem3/lab1/images/e_cs.png | Bin 0 -> 247813 bytes asvt/sem3/lab1/images/e_div.png | Bin 0 -> 429973 bytes asvt/sem3/lab1/images/e_div_6.png | Bin 0 -> 1025741 bytes asvt/sem3/lab1/images/e_mul.png | Bin 0 -> 433690 bytes asvt/sem3/lab1/images/e_mul_6.png | Bin 0 -> 790305 bytes asvt/sem3/lab1/images/e_sub.png | Bin 0 -> 251093 bytes asvt/sem3/lab1/images/enter_1.png | Bin 0 -> 765746 bytes asvt/sem3/lab1/images/int21.png | Bin 0 -> 754633 bytes asvt/sem3/lab1/images/ip_change.png | Bin 0 -> 1534140 bytes asvt/sem3/lab1/images/listing.png | Bin 0 -> 593928 bytes asvt/sem3/lab1/images/rbx.png | Bin 0 -> 104772 bytes asvt/sem3/lab1/images/reg_ds.png | Bin 0 -> 214981 bytes asvt/sem3/lab1/images/sub_again.png | Bin 0 -> 290862 bytes asvt/sem3/lab1/images/subx3.png | Bin 0 -> 1603143 bytes asvt/sem3/lab1/lab1.tex | 131 +++++++++++++++++++++++++++++++++++- 17 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 asvt/sem3/lab1/images/addition.png create mode 100644 asvt/sem3/lab1/images/ds_data.png create mode 100644 asvt/sem3/lab1/images/e_cs.png create mode 100644 asvt/sem3/lab1/images/e_div.png create mode 100644 asvt/sem3/lab1/images/e_div_6.png create mode 100644 asvt/sem3/lab1/images/e_mul.png create mode 100644 asvt/sem3/lab1/images/e_mul_6.png create mode 100644 asvt/sem3/lab1/images/e_sub.png create mode 100644 asvt/sem3/lab1/images/enter_1.png create mode 100644 asvt/sem3/lab1/images/int21.png create mode 100644 asvt/sem3/lab1/images/ip_change.png create mode 100644 asvt/sem3/lab1/images/listing.png create mode 100644 asvt/sem3/lab1/images/rbx.png create mode 100644 asvt/sem3/lab1/images/reg_ds.png create mode 100644 asvt/sem3/lab1/images/sub_again.png create mode 100644 asvt/sem3/lab1/images/subx3.png (limited to 'asvt/sem3') diff --git a/asvt/sem3/lab1/images/addition.png b/asvt/sem3/lab1/images/addition.png new file mode 100644 index 0000000..24f3db8 Binary files /dev/null and b/asvt/sem3/lab1/images/addition.png differ diff --git a/asvt/sem3/lab1/images/ds_data.png b/asvt/sem3/lab1/images/ds_data.png new file mode 100644 index 0000000..d63d7f8 Binary files /dev/null and b/asvt/sem3/lab1/images/ds_data.png differ diff --git a/asvt/sem3/lab1/images/e_cs.png b/asvt/sem3/lab1/images/e_cs.png new file mode 100644 index 0000000..46138e0 Binary files /dev/null and b/asvt/sem3/lab1/images/e_cs.png differ diff --git a/asvt/sem3/lab1/images/e_div.png b/asvt/sem3/lab1/images/e_div.png new file mode 100644 index 0000000..777722f Binary files /dev/null and b/asvt/sem3/lab1/images/e_div.png differ diff --git a/asvt/sem3/lab1/images/e_div_6.png b/asvt/sem3/lab1/images/e_div_6.png new file mode 100644 index 0000000..a85d9be Binary files /dev/null and b/asvt/sem3/lab1/images/e_div_6.png differ diff --git a/asvt/sem3/lab1/images/e_mul.png b/asvt/sem3/lab1/images/e_mul.png new file mode 100644 index 0000000..e215c89 Binary files /dev/null and b/asvt/sem3/lab1/images/e_mul.png differ diff --git a/asvt/sem3/lab1/images/e_mul_6.png b/asvt/sem3/lab1/images/e_mul_6.png new file mode 100644 index 0000000..af6fffd Binary files /dev/null and b/asvt/sem3/lab1/images/e_mul_6.png differ diff --git a/asvt/sem3/lab1/images/e_sub.png b/asvt/sem3/lab1/images/e_sub.png new file mode 100644 index 0000000..87395f9 Binary files /dev/null and b/asvt/sem3/lab1/images/e_sub.png differ diff --git a/asvt/sem3/lab1/images/enter_1.png b/asvt/sem3/lab1/images/enter_1.png new file mode 100644 index 0000000..40317e0 Binary files /dev/null and b/asvt/sem3/lab1/images/enter_1.png differ diff --git a/asvt/sem3/lab1/images/int21.png b/asvt/sem3/lab1/images/int21.png new file mode 100644 index 0000000..17be025 Binary files /dev/null and b/asvt/sem3/lab1/images/int21.png differ diff --git a/asvt/sem3/lab1/images/ip_change.png b/asvt/sem3/lab1/images/ip_change.png new file mode 100644 index 0000000..b3a0827 Binary files /dev/null and b/asvt/sem3/lab1/images/ip_change.png differ diff --git a/asvt/sem3/lab1/images/listing.png b/asvt/sem3/lab1/images/listing.png new file mode 100644 index 0000000..b58a13b Binary files /dev/null and b/asvt/sem3/lab1/images/listing.png differ diff --git a/asvt/sem3/lab1/images/rbx.png b/asvt/sem3/lab1/images/rbx.png new file mode 100644 index 0000000..3bdf4d8 Binary files /dev/null and b/asvt/sem3/lab1/images/rbx.png differ diff --git a/asvt/sem3/lab1/images/reg_ds.png b/asvt/sem3/lab1/images/reg_ds.png new file mode 100644 index 0000000..cbdcf12 Binary files /dev/null and b/asvt/sem3/lab1/images/reg_ds.png differ diff --git a/asvt/sem3/lab1/images/sub_again.png b/asvt/sem3/lab1/images/sub_again.png new file mode 100644 index 0000000..8a62490 Binary files /dev/null and b/asvt/sem3/lab1/images/sub_again.png differ diff --git a/asvt/sem3/lab1/images/subx3.png b/asvt/sem3/lab1/images/subx3.png new file mode 100644 index 0000000..a89447f Binary files /dev/null and b/asvt/sem3/lab1/images/subx3.png differ diff --git a/asvt/sem3/lab1/lab1.tex b/asvt/sem3/lab1/lab1.tex index 9554c21..ce9709e 100644 --- a/asvt/sem3/lab1/lab1.tex +++ b/asvt/sem3/lab1/lab1.tex @@ -192,8 +192,8 @@ SI = 0, DI = 0 Адрес ячейки памяти состоит из двух чисел: адреса начала сегмента и размера смещения относительно начала сегмента. Размер сегмента в адресуемой памяти -процессора в реальном режиме составляет 65536 байт. Наименьший сдвиг между -начальными байтами последовательных сегментов равен 16 байт. +процессора в реальном режиме составляет 65536 байт = 64 Кбайт. Наименьший сдвиг +между начальными байтами последовательных сегментов равен 16 байт. Базовые адреса сегмента данных и кода соответственно хранятся в регистрах DS и CS. Например, на рис. \ref{fig:reg3} они равны 073Fh. @@ -208,6 +208,37 @@ DS и CS. Например, на рис. \ref{fig:reg3} они равны 073Fh. E<сегмент>.<смещение> для ввода кода инструкции ADD в сегмент кода, начиная со смещения 0100} +Если сегмент кода имеет размер 64 кбайт, то для определения адреса сегмента +данных необходимо к адресу сегмента кода прибавить число 1000h +(64 кбайт = 65536 байт = 10000h байт, но в регистрах хранятся только +4 первые цифры адреса, поэтому последний ноль необходимо откинуть). +Таким образом, получается, что адрес сегмента данных должен быть 173Fh. +Запишем это число в регистр DS. + +\begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{reg_ds.png} + \caption{Изменение адреса сегмента данных} +\end{figure} + +Введём в область сегмента данных указанные значения. При указании смещения +без явного указания адреса сегмента отладчик вводит значения в сегмент DS. + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{ds_data.png} + \caption{Изменение сегмента данных} +\end{figure} + +Для внесения инструкции ADD в сегмент кода с помощью команды E необходимо явно +указать адрес начала сегмента вместе со смещением. + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{e_cs.png} + \caption{Ввод инструкции ADD} +\end{figure} + \section{Задание} \begin{enumerate} @@ -226,17 +257,113 @@ E<сегмент>.<смещение> для ввода кода инструкц \item Что изменилось в регистре флагов и почему? \end{enumerate} +Введём значение 1 в регистр BX с помощью команды R, а инструкцию сложения в +сегмент кода с помощью команды E. Можно заметить, что в регистре IP уже +внесено подходящее нам значение 0100h. Выполним сложение с помощью команды T. + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{addition.png} + \caption{Выполнение сложения} +\end{figure} + +Выполним сложение ещё три раза, изменяя значение в регистре IP. Можно заметить, +что в регистре AX теперь хранится значение 4. + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{ip_change.png} + \caption{Выполнение сложения ещё три раза} +\end{figure} + +Выполним следующие инструкции по заданию. + +\begin{figure}[H] + \centering + \includegraphics[width=0.3\textwidth]{rbx.png} + \caption{Введение значения 2 в регистр BX} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{e_mul.png} + \caption{Введение и выполнение инструкции MUL} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{e_sub.png} + \caption{Введение инструкции SUB} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{subx3.png} + \caption{Выполнение инструкции SUB 3 раза} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{e_div.png} + \caption{Введение и выполнение инструкции DIV} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{sub_again.png} + \caption{Возврат к инструкции SUB и её выполнение} +\end{figure} + +В результате выполнения указанных операций в регистре AX получено значение +FFFFh. Такое значение можно объяснить тем, что в регистре AX не могут храниться +отрицательные числа. Также данные операции изменили флаги знака NG, +добавочного переноса AC, чётности PE и переноса CY. \section{Задание} \textit{Выведите листинг сегмента кода со смещения 100. Скопируйте его в отчет. Разделите число 7С4B12h на число 1С0. Чему равно частное и остаток? Чему равно произведение чисел 7C4Bh и 1A5?} +Листинг сегмента кода можно выполнить с помощью команды U. + +\begin{figure}[H] + \centering + \includegraphics[width=0.7\textwidth]{listing.png} + \caption{Листинг сегмента кода} +\end{figure} + +\begin{figure}[H] + \centering + \includegraphics[width=0.8\textwidth]{e_div_6.png} + \caption{Выполнение деления} +\end{figure} + +Результат деления содержится в регистре AX --- это число 4706h. +Остаток деления содержится в регистре DX --- это число 92h. + +\begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{e_mul_6.png} + \caption{Выполнение умножения} +\end{figure} + +Результатом произведения является число CC6757h. \section{Задание} \textit{Введите код прерывания 21 со смещением 104, укажите номер прерывания 02h код символа 44h. Выполните инструкцию командой g от 104 до 106. Попробуйте объяснить полученный результат.} +Выполним по порядку операции, указанные в задании. + +\begin{figure}[H] + \centering + \includegraphics[width=0.6\textwidth]{int21.png} + \caption{Выполнение указанных операций} +\end{figure} + +В результате на экран вывелась буква <>. Это произошло из-за того, что с +помощью прерывания 21h была вызвана функция вывода символа 02h. При этом был +выведен символ 44h, который и является буквой <>. \end{document} -- cgit v1.2.3