- •Часть 1
- •302030, Г. Орел, ул. Московская, 65
- •Содержание
- •Введение
- •1 Используемое оборудование и программное обеспечение
- •2 Общая подготовка к выполнению лабораторных работ
- •3 Общий ход выполнения и защиты лабораторных работ
- •4 Основные теоретические положения по программированию на языке ассемблера
- •4.1 Организация памяти для хранения программ
- •4.2 Режимы адресации данных микропроцессора Intel 8086
- •4.3 Режимы адресации переходов микропроцессора Intel 8086
- •4.4 Слово состояния микропроцессора Intel 8086
- •4.5 Список сокращений и условных обозначений
- •4.6 Общий формат ассемблерной команды
- •4.7 Определение данных
- •4.8 Регистры процессора Pentium.
- •4.9 Команды языка ассемблера
- •4.9.1 Команды передачи данных
- •4.9.2 Команды двоичных сложений и вычитаний
- •4.9.3 Однооперандные команды двоичной арифметики и команды сравнения
- •4.9.4 Команды умножения и деления двоичных чисел
- •4.9.5 Логические команды
- •4.9.6 Команды сдвигов и циклических сдвигов
- •4.9.7 Команды передачи управления
- •1) Безусловные переходы.
- •1.1) Команда безусловного перехода
- •1.2) Обращение к процедурам
- •2) Условные переходы
- •4.9.8 Команды циклов
- •4.9.9 Стековые команды
- •1) Организация стека
- •2) Использование стека для передачи параметров
- •4.9.10 Работа с устройствами ввода-вывода
- •5 Процесс ассемблирования и выполнения программы
- •5.1 Получение исполняемого модуля
- •5.2 Работа с отладчиком программ turbo debugger
- •6 Программа на языке ассемблера
- •6.1 Структура программы
- •6.2 Примеры программ
- •7 Лабораторная работа № 1. Арифметические операции над байтами и словами. Линейное исполнение программ
- •7.1 Цель работы
- •7.2 Контрольные вопросы
- •7.3 Задание на лабораторную работу
- •8 Лабораторная работа № 2. Логические операции и операции сдвига над данными
- •8.1 Цель работы
- •8.2 Контрольные вопросы
- •8.3 Задание на лабораторную работу
- •9 Лабораторная работа № 3. Команды условного и безусловного переходов. Организация ветвлений и циклов в программе
- •9.1 Цель работы
- •9.2 Контрольные вопросы
- •9.3 Задание на лабораторную работу
- •10 Лабораторная работа № 4. Использование стека и подпрограмм. Организация внутрисегментных и межсегментных переходов
- •10.1 Цель работы
- •10.2 Контрольные вопросы
- •10.3 Задание на лабораторную работу
- •11 Лабораторная работа № 5. Использование стека и подпрограмм. Организация передачи параметров через стек
- •11.1 Цель работы
- •11.2 Контрольные вопросы
- •11.3 Задание на лабораторную работу
- •12 Лабораторная работа № 6. Организация взаимодействия с устройствами компьютера. Использование портов
- •12.1 Цель работы
- •12.2 Контрольные вопросы
- •12.3 Задание на лабораторную работу
- •13 Содержание отчетов по лабораторным работам
- •14 Список рекомендуемой литературы
- •Приложение а (обязательное) Образец титульного листа отчета по лабораторной работе для студентов специальности 220301, обучающихся по основной программе
- •Приложение б (обязательное) Образец титульного листа отчета по лабораторной работе для студентов специальности 220301, обучающихся по ускоренной программе
- •Приложение в (обязательное) Образец титульного листа отчета по лабораторной работе для студентов направления 220300.62
4.9.10 Работа с устройствами ввода-вывода
Как при выполнении программ, так и при управлении устройствами, процессор обращается к устройству по его адресу, которое называется портом. Физически порт ввода- вывода представляет собой регистр разрядностью 8, 16 или 32 бита, имеющего уникальный адрес. Совокупность портов образует адресное пространство ввода- вывода, которое физически независимо от адресного пространства оперативной памяти и имеет ограниченный объем 64 Кбайт.
Принципиально управлять устройствами через порты несложно. Сведения о номерах портов, их разрядности, формате управляющей информации приводятся в техническом описании устройства или руководстве по операционной системе. Необходимо знать конечную цель своих действий, алгоритм, в соответствии с которым работает конкретное устройство, и порядок программирования его портов.
Поскольку адреса портов пересекаются по номерам с адресами ячеек памяти, то в отличие от команды MOV, работает с адресным пространством памяти, для работы с портами ввода- вывода предусмотрены собственные команды. Их описание приведено в таблице 4.15.
Таблица 4.15 – Описание команд для работы с портами ввода- вывода
Название команды |
Мнемоника и формат команды |
Описание действия |
Чтение данных из порта |
IN DST, SRC |
(DST) (SRC) |
Вывод данных в порт |
OUT DST, SRC |
(DST) (SRC) |
В команде IN на месте операнда- приемника DST и в команде OUT на месте операнда- источника SRC должен находиться регистр- аккумулятор AL/AX/EAX. Вторым операндом всегда выступает номер порта – SRC в команде IN, DST в команде OUT. Действия этих команд предельно просты: информация из источника записывается в приемник.
В следующем разделе рассмотрим процесс ассемблирования исходной программы (получения файла с расширением .EXE) для последующего ее выполнения.
5 Процесс ассемблирования и выполнения программы
5.1 Получение исполняемого модуля
Перед написанием программы, сначала нужно убедиться в наличии на компьютере файлов пакета TASM:
1) DPMILOAD.EXE;
2) DPMIMEM.DLL;
3) TASM.EXE;
4) TLINK.EXE;
5) TD.EXE (TDHELP.TDH - необязательно).
Для получения исполняемого файла программы необходимо:
1) создать в любом редакторе исходную программу на языке ассемблера, т.е. символьный файл, и сохранить его как файл с расширением .ASM.
2) этот файл странслировать путем ввода в командной строке следующей команды:
TASM \Путь\Имя файла.ASM /Z
После трансляции на экране появится сообщение:
Assembling file: транслируемый файл.
Error messages: сообщения об ошибках. ( None - нет ошибок).
Warning messages: предупреждающее сообщение.
Passes: количество страниц.
Remaining memory: занимаемая память.
Результатом работы транслятора в случае отсутствия ошибок будет файл с расширением - .OBJ - объектный модуль. В противном случае на экране появится перечень ошибок с указание их типа и местоположения. После трансляции можно получить листинг - отпечатанную программу с относительными адресами и машинным кодом.
3) Странслированный без ошибок файл необходимо обработать компоновщиком т.е. набрать в командной строке следующую команду:
TLINK \Путь\ Имя файла.OBJ /V
Результатом при отсутствии ошибок будет файл с расширением .EXE или .COM - загрузочный модуль. Эти программы готовы к выполнению на ЭВМ. Их имена можно набрать на клавиатуре и нажать ENTER. Выполнение команд программы можно посмотреть в отладчике.
4) Для работы в отладчике необходимо иметь программу с расширением .EXE или .COM и набрать в командной строке команду:
TD \Путь\ Имя файла.EXE
Примечание. Для того чтобы посмотреть, какие ключи имеют программы TASM и TLINK, надо набрать их имена в командной строке и нажать клавишу ENTER.