
- •Программирование эвм
- •Int 21h ;кодом возврата 0 прерывания 21h
- •Работа с битами
- •Порядок выполнения работы
- •Устройства ввода-вывода
- •Ввод исходных данных с клавиатуры и вывод результатов на дисплей
- •Inc di ;смещение в видеопамяти на следующий символ
- •Порядок выполнения работы
- •Контрольные задания
- •Система команд процессора
- •Способы адресации
- •Влияние команд на регистр флагов
- •Расширенные регистры и типы данных процессоров x86
- •Система команд процессоров ia-32 и Intel 64
- •Int 21h ;системного прерывания 21h
- •Использование дальней подпрограммы
- •X dw 0aabBh, 0abbAh, 0baaBh, 0bbaAh ;исходные данные
- •Использование подпрограмм для ввода-вывода
- •Порядок выполнения работы
- •Контрольные задания
- •Дескрипторы
- •Порядок работы процессора в защищенном режиме
- •Использование дальней подпрограммы в защищенном режиме
- •Использование idt. Ввод данных с клавиатуры в защищенном режиме
- •Порядок выполнения работы
Порядок выполнения работы
Написать на языке ассемблера программу, выполняющую определенную задачу в соответствии с вариантом.
Исходные данные вводятся в память с клавиатуры, результаты выводятся на дисплей. Сообщение об ошибке выводится в виде звукового сигнала через динамик.
Ввод исходных данных с клавиатуры и размещение их в памяти, выполнение основной задачи, вывод результатов и сообщения об ошибке должны осуществлять отдельные подпрограммы.
Основная программа последовательно читает массив введенных с клавиатуры исходных данных из памяти и передает текущий элемент массива подпрограмме через стек. Подпрограмма проверяет исходные данные на допустимость или корректность, при положительном исходе проверки осуществляет преобразование и возвращает результат основной программе. В случае некорректности исходных данных выводится сообщение об ошибке в виде звукового сигнала. Основная программа размещает результаты в другой области памяти также в виде массива. Затем они выводятся на дисплей.
Работа с устройствами ввода-вывода должна полностью осуществляться средствами программы (использование функций BIOS или операционной системы не допускается), то есть в программе должны быть команды ввода-вывода из соответствующих портов (регистров) клавиатуры, видеоадаптера, таймера.
Исследовать работу программы, отслеживая состояние системы после выполнения команд: значения регистров процессора, ячеек памяти, портов ввода-вывода. Результаты анализа работы программы оформить в виде таблицы. Последовательность строк в таблице должна соответствовать последовательности выполнения команд в период прогона программы, а не их последовательности в тексте программы. В строке, соответствующей данной команде, содержимое регистров, ячеек памяти и портов ввода-вывода должно быть таким, каким оно является после ее выполнения.
Проанализировать таблицу, выполнить необходимые сравнения, сделать выводы.
Общие признаки всех вариантов:
-
Размер операндов — слово.
-
Использование подпрограмм и наличие сегмента стека.
-
Размещение подпрограмм в разных сегментах. Одни подпрограммы должны находиться в одном сегменте с главной программой, другие — в отдельных сегментах.
-
Передача параметров подпрограммам должна осуществляться через регистры и через стек, по значению и по ссылке.
Признаки формирования вариантов:
-
Формат ввода данных с клавиатуры и вывода результатов на дисплей.
-
Способ формирования звукового сигнала.
-
Задача.
Сравнения:
-
Типы команд передачи управления:
-
Переход (JMP).
-
Вызов подпрограммы (CALL).
-
-
Вызов подпрограммы:
-
Внутрисегментный (ближний).
-
Межсегментный (дальний).
-
-
Передача параметров подпрограмме:
-
Через регистры.
-
Через стек.
-
-
Передача параметров подпрограмме:
-
По значению.
-
По ссылке.
-
-
Указатель базы указывает на параметры в стеке:
-
С младшего адреса.
-
Со старшего адреса.
-
Содержание отчета
-
Задание, конкретизированное вариантом.
-
Листинг программы.
-
Таблица состояния системы после выполнения команд программы.
-
Сравнения и выводы по результатам исследования программы и выполненным сравнениям.
Контрольные вопросы
-
Как изменялось множество регистров в процессорах x86 от i8086 до Intel64?
-
Придумайте показатель и оцените степень специализации регистров общего назначения.
-
Можно ли осуществлять модификацию адреса по двум индексным регистрам?
-
Можно ли осуществлять модификацию адреса по двум базовым регистрам?
-
Перечислите признаки, характеризующие устройство стека и порядок работы с ним в архитектуре x86. Какие другие варианты были бы возможны?
-
Чем определяется максимальный размер сегмента памяти процессора i8086 в реальном режиме?
-
Чем определяется максимальное число сегментов программы процессора i8086?
-
Могут ли одному логическому адресу соответствовать разные физические адреса?
-
Перечислите флаги, для изменения значений которых существуют отдельные команды.
-
Установите соответствие между флагами и командами условного перехода.
-
Какое значение имеет флаг прерывания сразу после включения компьютера?
-
Могут ли в команде одновременно присутствовать поля Displacement и Immediate?
-
Приведите пример команды длиной шесть байтов?
-
Почему для одного операнда комбинируются только косвенная и прямая адресация?
-
Какие сочетания способов адресации в одной команде для разных операндов невозможны?
-
Передача данных между какими устройствами компьютера на основе x86 одной командой невозможна?
-
В каком порядке хранятся байты слова в памяти команд ЭВМ?
-
В каком порядке хранятся байты слова в памяти данных ЭВМ?
-
При каких способах адресации проявляется понятие порядка хранения слов?
-
Какие параметры в примере LinearP.asm передаются подпрограмме через стек, а какие через регистры?
-
Какие параметры могли бы передаваться подпрограмме inpp в примере MaskIO.asm?