Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vvod_inform_s_klav_v_pamyat_i_vyvod_eyo_na_ekr.doc
Скачиваний:
23
Добавлен:
07.06.2015
Размер:
699.9 Кб
Скачать

Контрольные вопросы

1.Из каких основных частей состоит ВМ86?

2.Какие сегментные регистры входят в состав ВМ86 и какие функции они выполняют?

3.Какие индексные регистры входят в состав ВМ86 и какие функции они выполняют?

4.Какие регистры общего назначения входят в состав ВМ86 и какие функции они выполняют?

5.Какие флажки состояния ВМ86 входят в состав регистра флагов?

6.Для чего нужны команды передачи данных?

7.Какие способы адресации данных существуют?

8.Как работает команда MOV и какие ограничения на ее применение существуют?

9.Из каких частей состоит ассемблерная программа, которая использует малую модель памяти? Каким оператором начинается сегмент данных в ассемблерной программе, которая использует малую модель памяти?

Лабораторная работа № 2

Исследование процесса вывода 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].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]