
- •Сборник
- •Практическая работа №1 «Перевод чисел из системы в систему, сложение, числа со знаком»
- •Практическая работа №2 «Ввод, трансляция и исполнение программы»
- •Практическая работа №3 « Модификация первой программы»
- •Практическая работа №4 « Псевдооператоры»
- •Практическая работа №5 « Режимы адресации операндов»
- •Практическая работа №6 « Команды пересылки данных»
- •Практическая работа №7 « Арифметические команды»
- •Практическая работа №8 « Команды манипулирования битами»
Практическая работа №3 « Модификация первой программы»
Цель работы: Отработать навыки модификации программного продукта в соответствии с поставленной задачей.
Материально-техническое оснащение:
ПК, текстовый редактор, служебные программы Tasm.exe, Tlink.exe, TD.exe.
Теория.
Прерывание типа 21h (вызов функций) предоставляет множество удобных возможностей взаимодействия с клавиатурой, дисплеем, диском и т. д.. Наиболее полезные функции, вызываемые с помощью прерывания типа 21h, перечислены в таблице.
Регистр AH |
Операция |
Дополнительные входные регистры |
Выходные регистры |
1 |
Ожидание набора символа на клавиатуре и последующее его изображение на экране (с проверкой на Ctrl-Break) |
Не используются |
(AL)=символ |
7 |
Ожидание набора символа на клавиатуре и без последующего его изображения на экране (без проверки на Ctrl-Break) |
Не используются |
(AL)=символ |
8 |
То же, что функция 7, но с проверкой на Ctrl-Break |
Не используются |
(AL)=символ |
А |
Чтение клавиатурной строки в буфер |
адрес буфера, первый байт буфера = размер буфера |
Второй байт буфера=число фактически прочитанных символов |
2 |
Изображение символа (с проверкой на Ctrl-Break) |
(DL)=символ |
Не используются |
9 |
Изображение строки |
(DS:DX)=адрес строки, которая должна заканчиваться знаком $ |
Не используются |
4с |
Завершение программы и выход в DOS |
Не используются |
Не используются |
Ход работы.
Перепишите таблицу в тетрадь.
Задача. Модифицируйте Вашу первую программу таким образом, чтобы компьютер задавал пользователю вопрос. Пользователь вводил с клавиатуры ответ, и в зависимости от полученного ответа ПК выдавал на экран то или иное сообщение.
В Вашей первой программе определите в сегменте данных три строки:
вопрос
первый ответ
второй ответ
После вывода на экран вопроса введите команды для чтения символа с клавиатуры
Введите команды для сравнения введенного символа с ожидаемым:
Cmp al,’y’
Je метка1
Здесь вывод ответа1
Jmp метка2
Метка1:
Здесь вывод ответа2
Метка2:
Завершение программы
Получите исполняемый модуль с помощью служебных программ.
Запустите полученную программу на выполнение, если Вас не устраивает результат, найдите и исправьте логические ошибки с помощью отладчика.
Заключение.
Перепишите программу с использованием стандартных директив определения сегментов, если Вы писали программу с помощью упрощенных директив или наоборот.
Сделайте вывод о применении директив определения сегментов.
Обобщите все возникшие в процессе создания программы ошибки.
Контрольные вопросы.
Что такое код типа прерывания? Их место расположение в памяти?
Каково назначение прерываний?
Как осуществить чтение символа с клавиатуры?
Как осуществить вывод символа на экран?
Литература.
1. Л. Скэнлон Персональные ЭВМ IBM PC XT. Программирование на языке ассемблера. М, Радио и связь, 1989 г.
2. В.Юров, С.Хорошенко. Ассемблер: учебный курс - СПб:ПитерКом,1999г.
3. Я. Белецкий Турбо Ассемблер версия 2.0, М, Машиностроение, 1994 г.