diff options
| author | Andrew <saintruler@gmail.com> | 2020-12-04 17:04:42 +0400 |
|---|---|---|
| committer | Andrew <saintruler@gmail.com> | 2020-12-04 17:04:42 +0400 |
| commit | a13a8f51218c8ffbc12cb7f9b5123fea950b85e7 (patch) | |
| tree | 82872806d068e965f614533efd772824c0e6b58d /asvt | |
| parent | 1424d7322ed6492fe81cc8884a5b021e0ed2a9ce (diff) | |
Доделал первую лабу
Diffstat (limited to 'asvt')
17 files changed, 129 insertions, 2 deletions
diff --git a/asvt/sem3/lab1/images/addition.png b/asvt/sem3/lab1/images/addition.png Binary files differnew file mode 100644 index 0000000..24f3db8 --- /dev/null +++ b/asvt/sem3/lab1/images/addition.png diff --git a/asvt/sem3/lab1/images/ds_data.png b/asvt/sem3/lab1/images/ds_data.png Binary files differnew file mode 100644 index 0000000..d63d7f8 --- /dev/null +++ b/asvt/sem3/lab1/images/ds_data.png diff --git a/asvt/sem3/lab1/images/e_cs.png b/asvt/sem3/lab1/images/e_cs.png Binary files differnew file mode 100644 index 0000000..46138e0 --- /dev/null +++ b/asvt/sem3/lab1/images/e_cs.png diff --git a/asvt/sem3/lab1/images/e_div.png b/asvt/sem3/lab1/images/e_div.png Binary files differnew file mode 100644 index 0000000..777722f --- /dev/null +++ b/asvt/sem3/lab1/images/e_div.png diff --git a/asvt/sem3/lab1/images/e_div_6.png b/asvt/sem3/lab1/images/e_div_6.png Binary files differnew file mode 100644 index 0000000..a85d9be --- /dev/null +++ b/asvt/sem3/lab1/images/e_div_6.png diff --git a/asvt/sem3/lab1/images/e_mul.png b/asvt/sem3/lab1/images/e_mul.png Binary files differnew file mode 100644 index 0000000..e215c89 --- /dev/null +++ b/asvt/sem3/lab1/images/e_mul.png diff --git a/asvt/sem3/lab1/images/e_mul_6.png b/asvt/sem3/lab1/images/e_mul_6.png Binary files differnew file mode 100644 index 0000000..af6fffd --- /dev/null +++ b/asvt/sem3/lab1/images/e_mul_6.png diff --git a/asvt/sem3/lab1/images/e_sub.png b/asvt/sem3/lab1/images/e_sub.png Binary files differnew file mode 100644 index 0000000..87395f9 --- /dev/null +++ b/asvt/sem3/lab1/images/e_sub.png diff --git a/asvt/sem3/lab1/images/enter_1.png b/asvt/sem3/lab1/images/enter_1.png Binary files differnew file mode 100644 index 0000000..40317e0 --- /dev/null +++ b/asvt/sem3/lab1/images/enter_1.png diff --git a/asvt/sem3/lab1/images/int21.png b/asvt/sem3/lab1/images/int21.png Binary files differnew file mode 100644 index 0000000..17be025 --- /dev/null +++ b/asvt/sem3/lab1/images/int21.png diff --git a/asvt/sem3/lab1/images/ip_change.png b/asvt/sem3/lab1/images/ip_change.png Binary files differnew file mode 100644 index 0000000..b3a0827 --- /dev/null +++ b/asvt/sem3/lab1/images/ip_change.png diff --git a/asvt/sem3/lab1/images/listing.png b/asvt/sem3/lab1/images/listing.png Binary files differnew file mode 100644 index 0000000..b58a13b --- /dev/null +++ b/asvt/sem3/lab1/images/listing.png diff --git a/asvt/sem3/lab1/images/rbx.png b/asvt/sem3/lab1/images/rbx.png Binary files differnew file mode 100644 index 0000000..3bdf4d8 --- /dev/null +++ b/asvt/sem3/lab1/images/rbx.png diff --git a/asvt/sem3/lab1/images/reg_ds.png b/asvt/sem3/lab1/images/reg_ds.png Binary files differnew file mode 100644 index 0000000..cbdcf12 --- /dev/null +++ b/asvt/sem3/lab1/images/reg_ds.png diff --git a/asvt/sem3/lab1/images/sub_again.png b/asvt/sem3/lab1/images/sub_again.png Binary files differnew file mode 100644 index 0000000..8a62490 --- /dev/null +++ b/asvt/sem3/lab1/images/sub_again.png diff --git a/asvt/sem3/lab1/images/subx3.png b/asvt/sem3/lab1/images/subx3.png Binary files differnew file mode 100644 index 0000000..a89447f --- /dev/null +++ b/asvt/sem3/lab1/images/subx3.png 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} + +В результате на экран вывелась буква <<D>>. Это произошло из-за того, что с +помощью прерывания 21h была вызвана функция вывода символа 02h. При этом был +выведен символ 44h, который и является буквой <<D>>. \end{document} |