Работа выполнена по методическому пособию Е. А. Потапова ИНФОРМАТИКА. АССЕМБЛЕР ДЛЯ ПРОЦЕССОРА I8086 (методическое пособие в демо-файле, для сверки подходит ли это работа именно Вам)
ЛАБОРАТОРНАЯ РАБОТА № 2
ВВОД-ВЫВОД ЧИСЕЛ, ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ
Цель работы
В процессе выполнения работы решается практически важная задача вывода чисел на экран и их ввода с клавиатуры. Данная задача решается в следующей последовательности. Во первых, рассматривается задача вывода на экран шестнадцатеричных чисел. Во-вторых, рассматривается ввод шестнадцатеричных чисел с клавиатуры.
В ходе работы производится знакомство с очень важными понятиями флагов состояния, стека и процедуры. Изучаются инструкции для работы с этими объектами, а также инструкции сдвига, цикла, условных переходов и некоторые другие.
Для успешного выполнения лабораторной работы № 2 нужно изучить из пособия [1] темы: 6. ВЫВОД НА ЭКРАН ЧИСЕЛ В ШЕСТНАДЦАТЕРИЧНОЙ ФОРМЕ, 9. ВВОД С КЛАВИАТУРЫ ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ.
Одной из целей работы является развитие навыков алгоритмизации задач и отладки программ.
До сих пор нашим единственным помощником при написании и отладке машинных программ была системная программа Debug. Мы и далее будем широко использовать Debug при отладке своих программ. Что касается написания программы, то тут помощь Debug явно недостаточна, и процесс написания сколько нибудь сложной программы скорее всего продлится очень долго.
По этой причине мы переходим к написанию программ на языке ассемблера.
Целью выполнения данной работы является получение начальных навыков по разработке программ на языке ассемблера.
А именно — рассматриваются псевдооператоры, позволяющие разрабатывать простые ассемблерные программы, а также производится первоначальное знакомство с системными программами (EDIT, NASM), обеспечивающими преобразование программы на языке ассемблера в машинную программу.
Для этого из пособия [1] изучите темы и выполните все задания к ним 11. ПРОСТЫЕ ПРОГРАММЫ НА АССЕМБЛЕРЕ, 12. ОСНОВНЫЕ ОПЕРАТОРЫ АССЕМБЛЕРА, 13. Пример программы на ассемблере, 14. ВЫВОД НА ЭКРАН ДЕСЯТИЧНЫХ ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ.
Задание
Разработать на ассемблере и отладить программу, которая выполняет:
1) ввод с клавиатуры двух 4-значных шестнадцатеричных
чисел (для ввода с клавиатуры можно использовать любые числа), которые записываются в качестве содержимого регистров BP и DI;
2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел;
3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде десятичных чисел;
4) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел.
Пример информации на экране:
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP AD56<Enter>
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI 7F09<Enter>
ЧИСЛА В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ
(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.