![]() Информатика. Ассемблер для процессора 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. По запросу программы пользователь вводит с клавиатуры два целых трехзначных положительных десятичных числа. Программа выводит на экран сообщение о том, делится ли первое число на второе без остатка, а затем сообщение – делится ли без остатка второе число на первое.
ОТПРАВИТЬ ЗАЯВКУ |
---|