Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
24
Добавлен:
20.06.2014
Размер:
1.08 Mб
Скачать

Порядок выполнения работы

Написать на языке ассемблера программу, выполняющую определенную задачу в соответствии с вариантом.

Исходные данные вводятся в память с клавиатуры, результаты выводятся на дисплей. Сообщение об ошибке выводится в виде звукового сигнала через динамик.

Ввод исходных данных с клавиатуры и размещение их в памяти, выполнение основной задачи, вывод результатов и сообщения об ошибке должны осуществлять отдельные подпрограммы.

Основная программа последовательно читает массив введенных с клавиатуры исходных данных из памяти и передает текущий элемент массива подпрограмме через стек. Подпрограмма проверяет исходные данные на допустимость или корректность, при положительном исходе проверки осуществляет преобразование и возвращает результат основной программе. В случае некорректности исходных данных выводится сообщение об ошибке в виде звукового сигнала. Основная программа размещает результаты в другой области памяти также в виде массива. Затем они выводятся на дисплей.

Работа с устройствами ввода-вывода должна полностью осуществляться средствами программы (использование функций BIOS или операционной системы не допускается), то есть в программе должны быть команды ввода-вывода из соответствующих портов (регистров) клавиатуры, видеоадаптера, таймера.

Исследовать работу программы, отслеживая состояние системы после выполнения команд: значения регистров процессора, ячеек памяти, портов ввода-вывода. Результаты анализа работы программы оформить в виде таблицы. Последовательность строк в таблице должна соответствовать последовательности выполнения команд в период прогона программы, а не их последовательности в тексте программы. В строке, соответствующей данной команде, содержимое регистров, ячеек памяти и портов ввода-вывода должно быть таким, каким оно является после ее выполнения.

Проанализировать таблицу, выполнить необходимые сравнения, сделать выводы.

Общие признаки всех вариантов:

  1. Размер операндов — слово.

  2. Использование подпрограмм и наличие сегмента стека.

  3. Размещение подпрограмм в разных сегментах. Одни подпрограммы должны находиться в одном сегменте с главной программой, другие — в отдельных сегментах.

  4. Передача параметров подпрограммам должна осуществляться через регистры и через стек, по значению и по ссылке.

Признаки формирования вариантов:

  1. Формат ввода данных с клавиатуры и вывода результатов на дисплей.

  2. Способ формирования звукового сигнала.

  3. Задача.

Сравнения:

  1. Типы команд передачи управления:

    1. Переход (JMP).

    2. Вызов подпрограммы (CALL).

  2. Вызов подпрограммы:

    1. Внутрисегментный (ближний).

    2. Межсегментный (дальний).

  3. Передача параметров подпрограмме:

    1. Через регистры.

    2. Через стек.

  4. Передача параметров подпрограмме:

    1. По значению.

    2. По ссылке.

  5. Указатель базы указывает на параметры в стеке:

    1. С младшего адреса.

    2. Со старшего адреса.

Содержание отчета

  1. Задание, конкретизированное вариантом.

  2. Листинг программы.

  3. Таблица состояния системы после выполнения команд программы.

  4. Сравнения и выводы по результатам исследования программы и выполненным сравнениям.

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

  1. Как изменялось множество регистров в процессорах x86 от i8086 до Intel64?

  2. Придумайте показатель и оцените степень специализации регистров общего назначения.

  3. Можно ли осуществлять модификацию адреса по двум индексным регистрам?

  4. Можно ли осуществлять модификацию адреса по двум базовым регистрам?

  5. Перечислите признаки, характеризующие устройство стека и порядок работы с ним в архитектуре x86. Какие другие варианты были бы возможны?

  6. Чем определяется максимальный размер сегмента памяти процессора i8086 в реальном режиме?

  7. Чем определяется максимальное число сегментов программы процессора i8086?

  8. Могут ли одному логическому адресу соответствовать разные физические адреса?

  9. Перечислите флаги, для изменения значений которых существуют отдельные команды.

  10. Установите соответствие между флагами и командами условного перехода.

  11. Какое значение имеет флаг прерывания сразу после включения компьютера?

  12. Могут ли в команде одновременно присутствовать поля Displacement и Immediate?

  13. Приведите пример команды длиной шесть байтов?

  14. Почему для одного операнда комбинируются только косвенная и прямая адресация?

  15. Какие сочетания способов адресации в одной команде для разных операндов невозможны?

  16. Передача данных между какими устройствами компьютера на основе x86 одной командой невозможна?

  17. В каком порядке хранятся байты слова в памяти команд ЭВМ?

  18. В каком порядке хранятся байты слова в памяти данных ЭВМ?

  19. При каких способах адресации проявляется понятие порядка хранения слов?

  20. Какие параметры в примере LinearP.asm передаются подпрограмме через стек, а какие через регистры?

  21. Какие параметры могли бы передаваться подпрограмме inpp в примере MaskIO.asm?

Соседние файлы в папке Задания к лабораторным