- •Конспект лекций по дисциплине «Программные средства аппаратно-программных комплексов»
- •Содержание
- •Архитектура пэвм
- •Пользовательские регистры
- •Организация памяти (реальный режим)
- •Элементы синтаксиса Ассемблера
- •Операторы
- •Директивы сегментации
- •Модели памяти
- •Идентификаторы, создаваемые директивой Model:
- •Этапы создания программы на ассемблере
- •2. Создание объектного модуля (трансляция программы)
- •1 ;Программа преобразования двузначного шестнадцатеричного числа
- •3. Создание загрузочного модуля (компоновка программы)
- •4. Отладка программы
- •Определение простых типов данных:
- •Способы адресации Регистровая адресация
- •Непосредственная адресация
- •Способы адресации памяти
- •Переопределение сегмента
- •Особенности пересылки данных
- •Xch ax, bx ; команда двунаправленного обмена
- •Команды работы с адресами и указателями
- •Команды сдвига
- •Команды линейного сдвига
- •Команды циклического сдвига
- •Команды сдвига двойной точности
- •Примеры работы с битовыми полями
- •Команды преобразования данных
- •Xor ax, ax ; очистка регистра ax
- •Int 21h ;ожидание вода с клавиатуры
- •Команды обработки строк
- •Команды пересылки строк
- •Команды сравнения строк
- •Пример.
- •Сканирование строки
- •Загрузка элемента строки в аккумулятор
- •Перенос элемента из аккумулятора в строку
- •Ввод элемента цепочки из порта в строку
- •Вывод элемента цепочки в порт
- •Пример использования вложенных циклов
- •Массивы
- •Логические команды
- •Xor операнд1,операнд2
- •Логические команды поиска
- •Структуры
- •Описание шаблона структуры:
- •Заполнение шаблона:
- •Работа с полями структуры
- •Пример:
- •Шаблон записи:
- •Xor bl, mask i2 ; обнуление
- •Команды передачи управления
- •Безусловные переходы
- •Межсегментные переходы
- •Второй сегмент
- •Команды условного перехода
- •Команды условного перехода и флаги
- •Процедуры
- •Вызов процедуры
- •Ret [число]
- •Способы вызова процедуры
- •Прямой ближний вызов
- •Прямой дальний вызов
- •Косвенный ближний вызов
- •Косвенный дальний вызов процедуры
- •Организация интерфейса между процедурами, расположенными в разных модулях
- •Передачи параметров в процедуру через регистры
- •Передача параметров в процедуру через общую память
- •Макрокоманды и макроопределения
- •Особенности трансляции при получении объектного модуля
- •Где можно разместить макроопределение?
- •СвязьAssemblerс языками высокого уровня
- •Использование директивыmodelдля организации взаимодействия программ
- •Int 10h; вывод символа
- •Возврат данных в вызывающую программу
- •Пример взаимодействия программ
- •Особенностиcom-программы
- •Int 27h ; оставляем программу резидентной
- •Вызов резидентной программы
- •Запись адреса резидентной программы в область межзадачных связей
- •Iret ;возврат из процедуры
- •Int 27h ; оставляем программу резидентной
- •Вызов резидентной программы через область межзадачных связей
- •Передача параметров в резидентную программу
- •Замена существующего вектора прерывания
- •Динамическое распределение памяти
- •Пример выделения и освобождения блока памяти
- •Int 21h ;блока памяти
- •Дочерние процессы
- •Особенности структуры материнской программы
- •Активизация дочернего процесса
- •Пример материнской программы
- •Программируемый контроллер прерываний
- •Прохождение запроса на прерывание через контроллер
- •Программирование контроллера прерываний
- •Формат приказов icw
- •Формат приказов ocw
- •И fспользование таймера в программах на Assembler
- •Формирование задержки
- •Использование прерываний 8h для управления запуском программ
- •Программирование коммуникационного порта (com)
- •Микросхема uart 8250
- •Инициализация порта
- •Пример программы инициализации порта
- •Регистр статуса линии (порта)
- •Работа порта без использования механизма прерываний
- •Получение данных
- •Передача данных
- •Алгоритм работы программы приема /передачи без прерываний
- •Текст программы
- •РаботаCom– порта в режиме прерываний
- •Регистр разрешения прерываний
- •Регистр идентификации прерывания
- •Вызов обработчика прерывания
- •; Инициализация регистра разрешения прерывания (прием/передача)
- •Пример установления связи через порт и модем
- •Защищенный режим микропроцессора
- •Структура дескрипторных таблиц
- •Локальная дескрипторная таблица (ldt)
- •Структура дескриптора:
- •Структура байта ar
- •Обработкапрерываний в защищенном режиме
- •Особенности обработки ловушек
- •Шлюз задачи
- •Дескриптор tss
- •Структура шлюза вызова
Пример выделения и освобождения блока памяти
text segment
org 100h
assume cs: text, ds: text, ss: text
main proc
mov sp,offset m ; метка m расположена в конце программы
mov bx,(newstk – main + 10Fh)/16 ; вычисляем размер программы
mov ah,4Ah
int 21h ; ограничение размера памяти для программы
mov bx,10h ;в bx заносим число выделяемых параграфов
mov ah,48h ; номер функции выделения памяти
int 21h ; прерывание по функции 48h
mov es,ax ; адрес блока из ax загружаем в es
mov word ptr es:[di],15h ;работа с блоком
mov ax,word ptr es:[si]
…
mov ah, 49h ;освобождение
Int 21h ;блока памяти
…
m:
Дочерние процессы
Программа, загружаемая в оперативную память, состоит из областей:
окружение программы
префикс программного сегмента
сама программа
Окружение – область памяти, в которой в виде символьных строк записаны переменные окружения (загружаются из autoexec.bat). В командном процессоре command.com окружение создано самой операционной системой.
COMSPEC = D:\DOS\COMMAND.COM
PROMT = $p $q
PATH = D:\ ; D:\DOS ; D:\UTIL
Окружение передается из command.com в материнскую программу, затем в дочернюю и далее, если запускаются очередные дочерние процессы. При передаче управления дочерним процессам материнская программа может дополнить передаваемое окружение.
После начала загрузки операционной системы активной программой становится командные процессор, который ждет ввода команды пользователя. Получив команду на запуск программы, command.com активизирует ее и передает ей свое окружение. Если загружаемая программа активизирует дочерний процесс следующего уровня, она еще раз копирует свое окружение, передавая его запускаемой программе.
Основные элементы PSP:
0Ah – 0Dh Вектор прерываний по завершению программы (INT 22h)
0Eh – 11h Прерывание, которое обрабатывается после нажатия Ctrl+C
(INT 23h)
12h – 15h Прерывание по критической ошибке (INT 24h)
2Ch – 2Dh Сегментный адрес окружения
80h – FFh «Хвост» команды, а также дисковая область передачи данных
«Хвост» командной строки это параметры команды, а также имена рабочих файлов, если они содержались в командной строке. Если пользовательскую программу предполагается запускать с передачей ей параметров, то в программе должны быть строки извлечения «хвоста» команды и его анализа.
Особенности структуры материнской программы
В материнской программе для запуска каждой дочерней программы должен быть выделен блок параметров:
parmblk dw envirseg ; адрес сегмента окружения
dd cmdtail ; адрес «хвоста» команды
dd fcb_1 ; блоки, которые необходимы для
dd fcb_2 ; работы файловой системы
chname db ‘CHILD.EXE’, 0 ; путь к файлу дочернего процесса
cmdtail db 9, ‘FILE.TXT’, 0dh ; текстовый файл
fcb_1 db 37 dup (0)
fcb_2 db 37 dup (0)
envirseg segment para ‘Envir’
db ‘comspec = D:\DOS\command.com’, 0
db ‘WORKFILE = A:\FILES’, 0
envirseg ends
В простейшем варианте, когда хвост команды и fsb не используются, блок параметров уменьшается до двух строк:
parmblk dw 7 dup (0)
chname ‘имя.exe’, 0
