- •Исследование процессов ввода/вывода информации и системы команд микропроцессоров семесйства intel 80×i86
- •Введение
- •1.Цель работ
- •2.1. Архитектура микропроцессора Intel 8086.
- •2.2. Адресация памяти и данных.
- •2.3. Синтаксис операндов языка assembler
- •2.4. Команды передачи данных.
- •Mov ax,segment
- •3) Mov [bx],dx переслать (dx) в ячейку адресованную (вх)
- •Mov al,es:[si]; ds заменен на es
- •Команды lea, lds, les.
- •Lea reg, memr
- •Команда xchg
- •Стековые команды push и рор
- •2.5 Префикс программного сегмента (psp)
- •2.6 Арифметические команды
- •Команды сложения и вычитания
- •0015 65А0
- •0037 1D3e
- •0004 В837
- •0001 F0f8
- •Команды расширения знака.
- •Команды inc, dec, neg, cmp.
- •Команды двоичного умножения и деления.
- •Дополнительные сведения.
- •2.7 Основные правила при разработке программ на языке assembler.
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •3. Лабораторные работы
- •Контрольные вопросы
- •Лабораторная работа № 2
- •Контрольные вопросы
- •Лабораторная работа № 3
- •Дополнительная информация для составления программы по данному заданию.
- •Лабораторная работа № 4
- •Контрольные вопросы
- •Лабораторная работа № 5
- •Контрольные вопросы
- •Лабораторная работа № 6
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Рекомендации по выполнению лабораторной работы.
- •4.1. Тексты подпрограмм вывода на экран.
- •Int 21h
- •Int 21h
- •Контрольные вопросы
- •Лабораторная работа № 8
- •Контрольные вопросы
- •Лабораторная работа № 9
- •Контрольные вопросы
- •Лабораторная работа № 10
- •Контрольные вопросы
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Контрольные вопросы
- •6. Требования к отчетам
- •7. Библиографический список
Контрольные вопросы
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].