КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Прерывания
Main endp Mov errcode, 0 Передача кода возврата из дочерней программы Cmp al,1 Je OK Cmp al, 0 Mov ah, 40h Получение и анализ кода возврата в материнской программе End main Zzz ends Zzz segment Db 100 dup (0) Datasg ends Paramblk dw 7 dup (0) Codesg ends Main endp Mov ax, 4C00h Mov dx, offset chname Mov bx, offset parmblk Mov ax, 4b00h Mov es, ax Mov bx, ax Mov ds, es Mov ds, ax Mov ax, datasg Main proc Пример материнской программы Активизация дочернего процесса Parmblk dw 7 dup (0) Envirseg ends Fcb_2 db 37 dup (0) Fcb_1 db 37 dup (0) Особенности структуры материнской программы В материнской программе для запуска каждой дочерней программы должен быть выделен блок параметров:
parmblk dw envirseg; адрес сегмента окружения dd cmdtail; адрес «хвоста» команды dd fcb_1; блоки, которые необходимы для dd fcb_2; работы файловой системы chname db ‘CHILD.EXE’, 0; путь к файлу дочернего процесса cmdtail db 9, ‘FILE.TXT’, 0dh; текстовый файл envirseg segment para ‘Envir’ db ‘comspec = D:\DOS\command.com’, 0 db ‘WORKFILE = A:\FILES’, 0
В простейшем варианте, когда хвост команды и fsb не используются, блок параметров уменьшается до двух строк: chname ‘имя.exe’, 0 Для запуска дочернего процесса материнская программа должна выполнить следующее: · освободить лишнюю память, · записать в регистр ax номер функции 4b00h, · записать в пару регистров es:dx адрес строки со спецификацией файла с дочерней программой, · записать в пару регистров es:bx адрес блока параметров, · вызвать прерывание INT 21h. В случае успешного запуска программы флаг CF устанавливается в 0. Если процесс не запущен то в регистре флагов CF=1. Все открытые файлы дублируются в дочерней программе. Дочерняя программа после своего завершения может возвратить в материнскую программу код завершения, который может быть проверен в материнской программе. codesg segment ‘code’ assume cs: codesg mov ax, zzz; в ax загружаем адрес пустого сегмента sub ax, dx; определяется размер программы mov ah, 4Ah; освобождение лишней памяти int 21h ; запуск дочернего процесса mov ax, datasg; в ах загружается адрес сегмента данных int 21h; запуск дочернего процесса int 21h; выход в ОС (завершение программы) datasg segment ‘data’ chname db ‘C:\Do.exe’ _stack segment stack ‘stack’ _stack ends
int 21h; код возврата передается через регистр al je error_1; переход к обработчику ошибок …
mov al, errcode; в errcode загружается 0 mov ah, 4Ch; выход в систему int 21h
errcode располагается в памяти Прерывания – это инициализируемый определенным образом процесс, временно переключающий микропроцессор на выполнение других программ с последующим возобновлением прерванной программы. Прерывания могут быть внутренними и внешними по отношению к процессору. Внешние вызываются внешними событиями (клавиатура, порты, запоминающие устройства и другие внешние устройства). Внутренние возникают во время вычислительного процесса внутри микропроцессора (ненормальное состояние микропроцессора, деление на 0, обработка исключительных ситуаций, выполнение команды INT и др.)
К аппаратным средствам системы прерываний относятся: - выводы микропроцессора INTR, INTA (входной – запрос прерывание, выходной – подтверждение). Вход NMI обеспечивает обработку не отлагаемых прерываний (входной сигнал немаскируемого прерывания) - микроконтроллеры i8259A
К программным средствам системы прерываний в реальном режиме, относятся: - таблица векторов прерываний, располагается в начале адресного пространства и занимает 1000 байт. Каждый вектор прерываний выделяется по 4 байта. Таким образом, адрес вектора прерываний равен номеру прерываний, умноженный на 4. В оперативной памяти находятся обработчики прерываний.
Адресное пространство памяти Оперативная память
- флаг прерываний. Если флаг регистра флагов IF =1, то прерывания разрешены. Если IF=0, то прерывания запрещены. Для управления флагом используют команды STI à 1; CLI à 0. При запуске обработчика прерываний этот флаг сбрасывается в 0. - Флаг трассировки TF. Устанавливается в 1 при пошаговом выполнении программы. - Машинные команды микропроцессора: INT, INT0, IRET, STI, CLI
Рис. Взаимодействие микроконтроллера и микропроцессора
Дата добавления: 2014-01-04; Просмотров: 364; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |