Информатика. Ассемблер для процессора I8086 (Е.А. Потапова, 2013 г., 50 с.)

ЛАБОРАТОРНАЯ РАБОТА № 1. АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ, ВЫВОД СИМВОЛОВ, ВЫВОД ДВОИЧНЫХ ЧИСЕЛ

Цель работы
Целью настоящей работы является первоначальное знакомство с программой Debug — важнейшим помощником разработчика программ на языке Ассемблер. С помощью этой программы производится анализ и заполнение ячеек регистровой и оперативной памяти, осуществляется пошаговое выполнение программы. Другая цель: знакомство с некоторыми инструкциями Ассемблера, выполняющими арифметические операции, знакомство с инструкциями программного прерывания, с инструкциями пересылки данных, операторами сдвигов, операторами циклов.
В процессе выполнения работы решается практически важная задача вывода чисел на экран, осуществляется вывод на экран двоичного числа в виде последовательности единиц и нулей.

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

X1 X2 X3 X4 X5
1 275 361 15 2250 10 11 427 135 14 3221 15
2 413 228 14 4353 13 12 327 393 13 1929 12
3 199 328 16 3833 11 13 562 248 11 2520 17
4 355 436 13 4318 20 14 682 133 10 3563 22
5 359 537 11 5413 15 15 269 331 18 4151 14
6 227 199 19 2873 12 16 361 483 13 5621 22
7 436 327 13 3315 18 17 568 329 17 6209 21
8 521 263 12 2544 21 18 249 325 15 4683 16
9 324 391 17 4561 19 19 189 459 19 5394 19
10 614 134 17 8236 23 20 288 274 18 4815 20

Примечание 1. Загрузка в регистры заданных чисел (преобразованных вручную в шестнадцатеричную систему) должна производиться только с помощью инструкций MOV.
Примечание 2. Рекомендуется выполнить проверку результата выполнения программы путем сравнения его с результатом ручного счета. Так как при ручном счете используется десятичная система счисления, то перед сравнением результатов их необходимо записать в одной и той же системе.
Отчет по лабораторной работе должен содержать:
1. Титульный лист — форма титульного листа представлена в Приложении 4.
2. Задание на лабораторную работу. В задании должен быть указан номер варианта и представлены исходные данные из таблицы 3.
На проверку необходимо отправить каталог LAB1, в который нужно поместить:
1. Исполнимый файл программы, то есть файл с расширением .com. Имя файла может быть выбрано по Вашему усмотрению, но придерживайтесь правил именования файлов для DOS — имя должно состоять не более чем из 8 символов.
2. Отчет к лабораторной работе, выполненный с помощью редактора Word.

ЛАБОРАТОРНАЯ РАБОТА № 2. ВВОД-ВЫВОД ЧИСЕЛ, ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ
Цель работы
В процессе выполнения работы решается практически важная задача вывода чисел на экран и их ввода с клавиатуры. Данная задача решается в следующей последовательности. Во-первых, рассматривается задача вывода на экран шестнадцатеричных чисел. Во-вторых, рассматривается ввод шестнадцатеричных чисел с клавиатуры.
В ходе работы производится знакомство с очень важными понятиями флагов состояния, стека и процедуры. Изучаются инструкции для работы с этими объектами, а также инструкции сдвига, цикла, условных переходов и некоторые другие.
Для успешного выполнения лабораторной работы № 2 нужно изучить из пособия [1] темы: 6. ВЫВОД НА ЭКРАН ЧИСЕЛ В ШЕСТНАДЦАТЕРИЧНОЙ ФОРМЕ, 9. ВВОД С КЛАВИАТУРЫ ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ.
Одной из целей работы является развитие навыков алгоритмизации задач и отладки программ.
До сих пор нашим единственным помощником при написании и отладке машинных программ была системная программа Debug. Мы и далее будем широко использовать Debug при отладке своих программ. Что касается написания программы, то тут помощь Debug явно недостаточна, и процесс написания сколько-нибудь сложной программы скорее всего продлится очень долго.
По этой причине мы переходим к написанию программ на языке ассемблера.
Целью выполнения данной работы является получение начальных навыков по разработке программ на языке ассемблера. А именно — рассматриваются псевдооператоры, позволяющие разрабатывать простые ассемблерные программы, а также производится первоначальное знакомство с системными программами (EDIT, NASM), обеспечивающими преобразование программы на языке ассемблера в машинную программу.

Задание
Разработать на ассемблере и отладить программу, которая выполняет:
1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел (для ввода с клавиатуры можно использовать любые числа), которые записываются в качестве содержимого регистров BP и DI;
2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел;
3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде десятичных чисел;
4) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел.
Пример информации на экране:
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP AD56
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI 7F09
ЧИСЛА В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ
(BP) = AD56 (DI) = 7F09
ЧИСЛА В ДЕСЯТИЧНОЙ СИСТЕМЕ
(BP) = 44374 (DI) = 32521
ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ
(BP) = 1010110101010110 (DI) = 0111111100001001
Примечание 1. Файловая структура программы должна включать два файла типа .asm. В одном из них содержатся главная подпрограмма и тексты выводимых сообщений. Все остальные процедуры содержатся во втором файле.
Примечание 2. Все процедуры должны иметь вводные и текущие комментарии.
Примечание 3. Рекомендуется дополнительно разработать процедуру, выполняющую ввод шестнадцатеричного числа в 16-битный регистр, процедуру вывода содержимого такого регистра в шестнадцатеричном виде, а также процедуру вывода содержимого 16-битного регистра в десятичной системе счисления и в двоичной системе счисления.
Для того чтобы реализовать вывод на экран чисел в десятичной системе счисления, воспользуйтесь алгоритмом вывода десятичного числа из [1].
Примечание 4. При реализации вывода второй и третьей шестнадцатеричных цифр числа, сдвигу числа вправо должен предшествовать его сдвиг влево. Для выполнения сдвига влево используйте инструкцию SHL («Shift Left» — логический сдвиг влево). Использование этой инструкции аналогично SHR. Выполнение SHL имеет такой же эффект, как и умножение на два, четыре, восемь и так далее, в зависимости от числа (соответственно единицы, двойки или тройки), хранящегося в СL.
Примечание 5. Для получения на экране достаточно хорошей формы представления информации выполняйте вывод промежуточных пробелов. Число пробелов определяйте опытным путем.
Отчет по лабораторной работе № 2 должен содержать:
1. Титульный лист — форма титульного листа представлена в Приложении 4.
2. Задание на лабораторную работу, для ввода с клавиатуры можно использовать любые числа.
3. Дерево подпрограмм. Пример дерева подпрограмм приведен в приложении 3 (рис. 4).
4. Файловую структуру программы. Примеры файловой структуры программы приведены в [1] рис. 56 и 57.
На проверку необходимо отправить каталог LAB2, в который нужно поместить:
1. Исходный файл программы, то есть файл с расширением .asm. Имя файла может быть выбрано по Вашему усмотрению, но придерживайтесь правил именования файлов для DOS — имя должно состоять не более чем из 8 символов.
2. Исполнимый файл программы, то есть файл с расширением .com
3. Отчет к лабораторной работе, выполненный с помощью редактора Word.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Имя

Email



© 2009-2024 TusurBiz