Информатика. Ассемблер для процессора i8086 (В.В. Одиноков, 2000 г., 100 с.)

Лабораторная работа N 1. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ И ВЫВОД СИМВОЛОВ
Цель работы: Целью настоящей работы является первоначальное знакомство с программой Debug – важнейшим помощником разработчика программ на языке Ассемблер. С помощью этой программы производится анализ и заполнение ячеек регистровой и оперативной памяти, осуществляется пошаговое выполнение программы. Другая цель: знакомство с некоторыми инструкциями Ассемблера, выполняющими арифметические операции, знакомство с инструкциями программного прерывания, а также с инструкциями пересылки данных.

Задание
Р а з р а б о т а й т е с помощью Debug программу, выполняющую вывод на экран текстового сообщения и последующее вычисление выражения:
Y=[(Х1+Х2)ХЗ-Х4]/Х5 ,
где Х1 - Х5 - десятичные целые числа, взятые в соответствии с номером вашего варианта из таблицы 3.
Структура выходного сообщения программы:
‘Программа вычисления выражения Y=[(Х1+Х2)ХЗ-Х4]/Х5 , где X1=...,
X2=..., X3=..., X4=..., X5=...‘
Вместо точек должны выводиться заданные числа (в шестнадцатеричной системе).
Результат вычисления выражения программа помещает в регистры AX и DX. Поэтому этот результат можно наблюдать только при запуске программы из DEBUG (при возврате в DOS содержимое регистров теряется).

Таблица 3
К X1 X2 X3 X4 X5 K X1 X2 X3 X4 X5
1 235 314 11 2320 13 11 417 125 14 3181 11
2 513 248 17 4453 12 12 317 373 13 1920 12
3 197 372 12 3838 17 13 550 241 11 2720 15
4 254 418 14 4118 21 14 632 193 12 3593 21
5 349 517 11 5314 19 15 249 431 17 4111 13
6 267 149 15 2773 14 16 391 463 14 5320 22
7 435 317 13 3815 15 17 561 323 13 6213 23
8 561 273 16 2584 20 18 244 395 15 4713 14
9 321 491 12 4511 13 19 139 456 19 5334 17
10 634 124 19 8416 24 20 286 293 16 4811 21

Результат выполнения работы оформляется в виде .com-файла, помещаемого для пересылки в каталог LAB1.
Примечание 1. Загрузка в регистры заданных чисел (преобразованных вручную в шестнадцатеричную систему) должна производиться только с помощью инструкций MOV.
Примечание 2. Рекомендуется выполнить проверку результата выполнения программы путем сравнения его с результатом ручного счета.
Так как при ручном счете используется десятичная система счисления, то перед сравнением результатов их необходимо записать в одной и той же системе.

Лабораторная работа N 2. ВВОД-ВЫВОД ЧИСЕЛ
Цель работы: В процессе выполнения работы решается практически важная задача вывода чисел на экран и их ввода с клавиатуры. Данная задача решается в следующей последовательности. Во-первых, рассматривается вывод на экран двоичного числа в виде последовательности единиц и нулей. Во-вторых, решается задача вывода на экран шестнадцатеричных чисел. В-третьих, рассматривается ввод шестнадцатеричных чисел с клавиатуры.
В ходе работы производится знакомство с очень важными понятиями флагов состояния, стека и процедуры. Изучаются инструкции для работы с этими объектами, а также инструкции сдвига, цикла, условных переходов и некоторые другие.
Одной из целей работы является развитие навыков алгоритмизации задач и отладки программ.

Задание
Р а з р а б о т а й т е программу, вызываемую из DOS, которая выполняет:
1) ввод с клавиатуры двух 4-х значных шестнадцатеричных чисел, которые записываются в качестве содержимого регистров BP и DI;
2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел;
3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел.
Пример информации на экране:
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP F46B
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI 5A0C
(BP) = 1111010001101011 (DI) = 0101101000001100
(BP) = F46B (DI) = 5A0C

Примечание 1. В отличие от приводимых в описании работы программ, некоторые 8-битные регистры следует заменить на 16-битные.
Примечание 2. Рекомендуется дополнительно разработать процедуру, выполняющую ввод шестнадцатеричного числа в 16-битный регистр, процедуру вывода содержимого такого регистра в двоичном виде, а также процедуру вывода содержимого 16-битного регистра в шестнадцатеричном виде.
Примечание 3. При реализации вывода второй и третьей шестнадцатеричных цифр числа, сдвигу числа вправо должен предшествовать его сдвиг влево. Для выполнения сдвига влево используйте инструкцию SHL (‘Shift Left’ – логический сдвиг влево). Использование этой инструкции аналогично SHR. Выполнение SHL имеет такой же эффект, как и умножение на два, четыре, восемь и так далее, в зависимости от числа (соответственно единицы, двойки или тройки), хранящегося в СL.
Примечание 4. Для получения на экране достаточно хорошей формы представления информации выполняйте вывод промежуточных пробелов. Число пробелов определяйте опытным путем.
Отлаженную .com-программу занесите для пересылки на дискету в каталог LAB2.

Лабораторная работа N 3. ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ
Цель работы: До сих пор нашим единственным помощником при написании и отладке машинных программ была системная программа Debug. Мы и далее будем широко использовать Debug при отладке своих программ. Что касается написания программы, то тут помощь Debug явно недостаточна, и процесс написания сколько-нибудь сложной программы скорее всего продлится очень долго. По этой причине мы переходим к написанию программ на языке ассемблера.
Целью выполнения данной работы является получение начальных навыков по разработке программ на языке ассемблера. А именно – рассматриваются псевдооператоры, позволяющие разрабатывать простые ассемблерные программы, а также производится первоначальное знакомство с системными программами (EDIT, TASM и TLINK), обеспечивающими преобразование программы на языке ассемблера в машинную программу.

Задание
Требуется написать на ассемблере и отладить программу, выполняющую те же функции, что и программа в задании к работе 2, с тем лишь отличием, что на экран выводятся содержимые регистров BP и DI не только в двоичной и шестнадцатеричной, но и в десятичной системе счисления.
Примечание 1. Файловая структура программы должна включать два файла типа .asm. В одном из них содержатся главная подпрограмма и тексты выводимых сообщений. Все остальные процедуры содержатся во втором файле.
Примечание 2. Все процедуры должны иметь вводные и текущие комментарии.
Запишите полученные .asm- и .com-файлы в каталог LAB3 на дискету для пересылки

КОНТРОЛЬНАЯ РАБОТА N 2. РАЗРАБОТКА ПРОГРАММЫ НА АССЕМБЛЕРЕ
Введение
Целью выполнения данной работы является комплексная проверка навыков программирования на языке ассемблера.
Результаты работы представляются в виде совокупности следующих документов:
1) дерево подпрограмм;
2) файловая структура программы;
3) блок-схемы алгоритмов процедур;
4) исходный файл (файлы) программы;
5) загрузочный модуль программы.
Примеры деревьев подпрограмм приведены на рис. 10, 14, 15.
Примеры файловой структуры программы приведены на рис. 13 и 14 .
Основным требованием к блок-схемам алгоритмов процедур является выполнение требований структурного программирования [1, п.7.3].
Примеры алгоритмов процедур приведены на рис. 5, 11, 19.
Основным требованием к исходным модулям (файлам) программы является наличие комментариев [1, п. 8.6]. Примеры исходных модулей приведены в описаниях лабораторных работ 3 и 4.
Дерево подпрограмм, файловая структура программы и блок-схемы процедур представляются на листах писчей бумаги, выполняются аккуратно хорошо понятным почерком. Допускается представление этих документов в виде файлов на дискете, полученных с помощью текстового редактора Word. Остальные документы представляются в виде файлов с расширениями .asm и .com на дискете.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вариант 16. По запросу программы пользователь вводит с клавиатуры сообщение на английском языке, заканчивающееся символом ‘.’ или ‘!’ .
Программа выводит на экран это же сообщение, записанное только строчными (малыми) буквами.

Вариант 17. По запросу программы пользователь вводит с клавиатуры два целых четырехзначных положительных десятичных числа, разделенных знаком операции ‘+’ или ‘-’ .
Программа выводит на экран результат операции в двух системах счисления – в десятичной и в двоичной (в дополнительном коде).

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

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

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


ОТПРАВИТЬ ЗАЯВКУ
(уточните наименование работ: ТКР, ЛР, ККР, КП, ЭКЗ,
2 последние цифры пароля
к какому числу нужно выполнить работы)

Имя

Email



© 2009-2025 TusurBiz