|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Лабораторная работа № 2. ”Исследование процесса вывода ASCII-кодов на экран монитора ПЭВМ””Исследование процесса вывода ASCII-кодов на экран монитора ПЭВМ”. На примере первой ассемблерной программы мы познакомились с одним из способов вывода текста на экран, а именно – вызовом функции DOS 09h. Это далеко не единственный способ вывода текста – DOS представляет для этого ещё несколько функций. Функция DOS 02h: Записать символ в STDOUT (стандартное устройство вывода, в данном случае - экран) с проверкой на Ctrl – Break. Вход: ah=02h dl=ASCII – код символа Выход: al=код последнего записанного символа (равен dl, кроме случая, когда dl=09h (табуляция), тогда в al возвращается 20h. Данная функция обрабатывает некоторые управляющие символы: BEL (07h) – появляется звуковой сигнал, BS (08h) – курсор перемещается влево на одну позицию, HT (09h) – используется для замены на несколько пробелов. Назначение символов LF (0ah) и CR (0dh) было описано выше. Если в ходе работы этой функции была нажата комбинация клавиш Ctrl – Break или Ctrl - C, вызывается прерывание 23h, которое по умолчанию осуществляет выход из программы. Таким образом, используя подфункцию 02h и прерывание 21h, необходимо составить программу, которая выводит на экран все ASCII – символы, начиная с символа восклицательный знак (!) и заканчивая символом DEL – забой, то есть необходимо вывести 95 символов. Первый отмеченный символ имеет код 21h. Следовательно, этот код перед выводом следует загрузить в регистр dl и вызвать прерывание 21h. Каждый последующий выводимый на экран символ имеет код на единицу больший, чем предыдущий, то есть код кавычек (") будет 21h, код символа (#) будет 22h и.т.д. Последний выводимый код забоя будет иметь значение 7fh. Из сказанного следует, что для получения последующего кода из предыдущего можно воспользоваться командой inc dl, используемой в теле цикла, который необходимо организовать в программе для вывода отмеченных выше 95 символов на экран монитора. Между выводимыми символами предусмотреть вывод пробелов, имеющих код 20h. Отметим, что перед выводом пробела готовый к выводу очередной код символа в регистре dl следует поместить в стек командой push dx, то есть временно его сохранить, а после формирования пpобела на экране, восстановить его в регистре командой pop dx. Для организации циклического участка программы используйте регистр cx и команду loop метка. В начале выполнения программы предусмотрите вывод на экран сообщения 'OUT ASCII-CODE ON MONITOR', затем, пропустив одну строку, выводите сами символы. В конце программы также сформируйте временную задержку для наблюдения результатов работы Вашей программы. В заключение отметим, что для вывода информации на экран в текстовом режиме могут использоваться и другие функции DOS,такие как 06h, 09h, 40h, а также средства BIOS, подробно рассмотренные в [2].
Контрольные вопросы
1.Какая информация может располагаться в сегменте данных? 2.Как должен начинаться и заканчиваться кодовый сегмент программы? 3.Какие ASCII – коды используются в программе для вывода информации на экран с новой строки? 4.Какое прерывание и какая функция DOS используются для вывода строки символов на экран? 5.Для каких целей используется функция DOS – 02h? 6.Для каких целей служит оператор offset? 17.Что означает символ $, стоящий в конце строки подлежащей выводу на STDOUT? 18.Как программным способом можно организовать временную задержку? Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |