ТУСУР, информатика. Ассемблер для процессора i8086 (контрольные работы)


Узнать стоимость этой работы
Скачать (1.88 Mb) 08.06.2026, 10:54

Выбор варианта контрольной работы № 2 и лабораторной работы № 1 осуществляется по общим правилам с использованием следующей формулы:

V = (N*K) div 100,

где  V — искомый номер варианта,

N — общее количество вариантов,

div — целочисленное деление (после деления дробная часть отбрасывается),

при V= 0 выбирается максимальный вариант, K — код варианта.

При изучении данного курса Вам потребуется:

1) операционная система MSDOS. Допускается применение ее в самостоятельном режиме или под управлением операционной системы Windows;

2) Norton Commander или другая подобная утилита;

3) DEBUG — отладчик;

4) NASM — транслятор ассемблера i8086.


КОНТРОЛЬНАЯ РАБОТА № 1

ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ЭВМ И ЭЛЕМЕНТЫ ЯЗЫКА АССЕМБЛЕРА

Контрольная работа № 1 компьютерная и выполняется в диалоге с контролирующей программой.

Задание 1. Получить двоичное представление заданного целого десятичного числа.

Указания. Для преобразования десятичного числа в двоичное можно использовать метод вычитаний.

Задание 2. Найти разность двух заданных положительных двоичных чисел.

Указания. Вычитание двух положительных чисел следует выполнить сложением первого из них с дополнением второго (отрицательного) числа. Прежде чем получать дополнение отрицательного числа, необходимо исходное положительное число дополнить слева незначащими нулями до байта или слова (в зависимости от величины числа). Иначе — знаковый бит числа (бит 7 для байта, бит 15 для слова) будет отсутствовать.

Задание 3. Найти разность двух заданных положительных шестнадцатеричных чисел. (Из большего числа вычесть меньшее.)

Указания. Вычитание шестнадцатеричных чисел выполняется аналогично вычитанию десятичных чисел с той лишь разницей, что занимаемая из старшего разряда единица, в текущем разряде составляет не 10, а 16 единиц.

Задание 4. Пусть в данный момент времени некоторые регистры содержат:

(регистр 1) =XXXXh, . . ., (регистр n) = XXXXh

Каков (в шестнадцатеричной системе) физический адрес ячейки ОП, содержащей:

1) младший байт следующей исполняемой на ЦП инструкции;

2) младший байт вершины стека;

3) байт данных, обрабатываемый текущей инструкцией [инструкция].

Указания. Для получения физического адреса искомой ячейки необходимо просуммировать содержимое соответствующего регистра сегмента, умноженное на 16 (10h), с содержимым регистра, в котором находится внутрисегментное смещение.

Задание 5. Пусть в данный момент времени некоторые регистры содержат:

(регистр 1) =XXXXh, . . ., (регистр n) = XXXXh

Каково будет содержимое указателя команды (или указателя стека) в результате выполнения следующих машинных инструкций [инструкции с указанием их длины].

Указания. Каждая выполняемая инструкция обработки данных влияет на содержимое указателя команды IP в соответствии со своей длиной, а инструкция передачи управления — в соответствии со своим адресом перехода.

На указатель стека SP влияют только некоторые инструкции, а именно: PUSH, POP, CALL, RET, INT, IRET, PUSHF, POPF. При этом следует учесть, что стек «растет» в сторону меньших адресов.

Задание 6. Записать содержимое (в шестнадцатеричной системе) заданного регистра, полученное в результате выполнения следующих операторов ассемблера [операторы].

Указания. Для подготовки к выполнению задания рекомендуется использовать информацию о логических операторах.

Задание 7. Указать номер неправильного оператора передачи данных в следующем списке операторов [операторы MOV].

Указание. Для подготовки к выполнению задания рекомендуется использовать информацию о операторах передачи данных и о вспомогательных псевдооператорах.

Задание 8. Записать содержимое (в шестнадцатеричной системе) заданного регистра, полученное в результате выполнения следующих операторов ассемблера [операторы].

Указания. Для подготовки к выполнению задания рекомендуется использовать информацию о операторах сдвига.

Задание 9. Записать содержимое (в десятичной системе) заданного регистра, полученное в результате выполнения следующих операторов ассемблера [операторы].

Указания. Для подготовки к выполнению задания рекомендуется использовать информацию об операторах условных переходов и об операторах цикла.

Задание 10. Предлагается определить длину зарезервированного участка памяти или длину выводимого на экран сообщения.

Указания. Для подготовки к выполнению задания рекомендуется использовать информацию о псевдооператорах определения данных.

Остальные задания — на знание теории. Чтобы успешно выполнить эти задания, внимательно изучите все разделы пособия [1].


КОНТРОЛЬНАЯ РАБОТА № 2

РАЗРАБОТКА ПРОГРАММЫ НА АССЕМБЛЕРЕ

Введение

Целью выполнения данной работы является комплексная проверка навыков программирования на языке ассемблера.

Результаты работы представляются в виде совокупности следующих документов:

1) титульный лист;

2) дерево подпрограмм;

3) файловая структура программы;

4) блок-схемы алгоритмов процедур;

5) исходный файл (файлы) программы;

6) загрузочный модуль программы.

Пример титульного листа приведен в Приложении 4.

Пример дерева подпрограмм приведен в Приложении 3 (рис. 4).

Примеры файловой структуры программы приведены в [1] рис. 14.3 и 15.1.

Основным требованием к блок-схемам алгоритмов процедур является выполнение требований структурного программирования [приложение 3]. Примеры алгоритмов процедур приведены в [1] на рис. 14.1.

Основным требованием к исходным модулям (файлам) программы является наличие комментариев.

Дерево подпрограмм, файловая структура программы и блок-схемы процедур представляются в виде файлов, полученных с помощью текстового редактора Word. Остальные документы представляются в виде файлов с расширениями .asm и .com и помещаются в папку CONTR2.

Варианты заданий контрольной работы № 2

Вариант 1. По запросу программы пользователь вводит с клавиатуры последовательность целых двузначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>.

Программа выводит на экран сумму этих чисел, представленную в десятичной и шестнадцатеричной системах счисления.

Вариант 2. По запросу программы пользователь вводит с клавиатуры целое положительное десятичное число N. По следующему запросу он вводит с клавиатуры N целых трехзначных положительных десятичных чисел, разделенных пробелами.

Программа выводит на экран сумму этих чисел, представленную в десятичной и «троичной» системах счисления.

Вариант 3. По запросу программы пользователь вводит с клавиатуры последовательность целых трехзначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>.

Программа выводит наибольшее число из введенных, представленное в десятичной и «пятиричной» системах счисления.

Вариант 4. По запросу программы пользователь вводит с клавиатуры целое положительное десятичное число N. По следующему запросу он вводит с клавиатуры N целых трехзначных положительных десятичных чисел, разделенных пробелами.

Программа выводит наибольшее число из введенных, представленное в десятичной и шестнадцатеричной системах счисления.

Вариант 5. По запросу программы пользователь вводит с клавиатуры последовательность целых трехзначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>.

Программа выводит наименьшее число из введенных, представленное в десятичной и восмеричной системах счисления.

Вариант 6. По запросу программы пользователь вводит с клавиатуры целое положительное десятичное число N. По следующему запросу он вводит с клавиатуры N целых трехзначных положительных десятичных чисел, разделенных пробелами.

Программа выводит наименьшее число из введенных, представленное в десятичной и «шестиричной» системах счисления.

Вариант 7. По запросу программы пользователь вводит с клавиатуры последовательность целых трехзначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>.

Программа выводит последовательность этих же чисел, но записанных в обратном порядке и в шестнадцатеричной системе счисления.

Вариант 8. По запросу программы пользователь вводит с клавиатуры последовательность целых трехзначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>.

Программа выводит эти же числа на экран в порядке убывания величины числа, причем в двоичной системе счисления.

Вариант 9. По запросу программы пользователь вводит с клавиатуры последовательность целых трехзначных положительных десятичных чисел, разделенных пробелами. Ввод последовательности заканчивается нажатием <Enter>.

Программа выводит эти же числа на экран в порядке возрастания величины числа, причем в «девятиричной» системе счисления.

Вариант 10. По запросу программы пользователь вводит с клавиатуры целое положительное десятичное число N. По следующему запросу он вводит с клавиатуры N целых трехзначных положительных десятичных чисел, разделенных пробелами.

Программа выводит эти же числа на экран в порядке возрастания величины числа, причем в «троичной» системе счисления.

Вариант 11. По запросу программы пользователь вводит с клавиатуры целое положительное десятичное число N. По следующему запросу он вводит с клавиатуры N целых трехзначных положительных десятичных чисел, разделенных пробелами.

Программа выводит последовательность этих же чисел, но записанных в обратном порядке и в восьмеричной системе счисления.

Вариант 12. По запросу программы пользователь вводит с клавиатуры целое положительное десятичное число N. По следующему запросу он вводит с клавиатуры N целых трехзначных положительных десятичных чисел, разделенных пробелами.

Программа выводит эти же числа на экран в порядке убывания величины числа, причем в шестнадцатеричной системе счисления.

Вариант 13. По запросу программы пользователь вводит с клавиатуры сообщение на русском языке, заканчивающееся символом «.» или «!».

Программа выводит на экран это же сообщение, записанное только заглавными буквами.

Вариант 14. По запросу программы пользователь вводит с клавиатуры сообщение на русском языке, заканчивающееся символом «.» или «?».

Программа выводит на экран это же сообщение, записанное только строчными (малыми) буквами.

Вариант 15. По запросу программы пользователь вводит с клавиатуры сообщение на английском языке, заканчивающееся символом «.» или «?».

Программа выводит на экран это же сообщение, записанное только заглавными буквами.

Вариант 16. По запросу программы пользователь вводит с клавиатуры сообщение на английском языке, заканчивающееся символом «.» или «!».

Программа выводит на экран это же сообщение, записанное только строчными (малыми) буквами.

Вариант 17. По запросу программы пользователь вводит с клавиатуры два целых четырехзначных положительных десятичных числа, разделенных знаком операции «+» или «–».

Программа выводит на экран результат операции в двух системах счисления — в десятичной и в двоичной (в дополнительном коде).

Вариант 18. По запросу программы пользователь вводит с клавиатуры два целых четырехзначных положительных десятичных числа, разделенных знаком операции « * »

Программа выводит на экран результат операции умножения.

Вариант 19. По запросу программы пользователь вводит с клавиатуры два целых четырехзначных положительных десятичных числа, разделенных знаком операции « / »

Программа выводит на экран результат операции деления (частное и остаток).

Вариант 20. По запросу программы пользователь вводит с клавиатуры два целых трехзначных положительных десятичных числа.

Программа выводит на экран сообщение о том, делится ли первое число на второе без остатка, а затем сообщение — делится ли без остатка второе число на первое.

Примечание 1

При вводе с клавиатуры десятичного числа следует учесть, что получение двоичного представления такого числа выполняется иначе по сравнению с шестнадцатеричным числом. При этом каждую очередную десятичную цифру следует умножить на вес позиции числа, а затем просуммировать результаты умножения. Например, при вводе 3значного числа первая цифра умножается на сто, вторая — на десять, а третья цифра берется без изменения.

Примечание 2

Для перевода числа из десятичной системы счисления в любую другую воспользуйтесь алгоритмом вывода на экран десятичных и шестнадцатеричных чисел, тема в пособии 14. ВЫВОД НА ЭКРАН ДЕСЯТИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ.



Узнать стоимость этой работы