Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Прерывания вреальном режиме




IRET

Вызов подпрограм обраб прерыв и возврат

Команды возврата из процедур

Команды условного перехода

Jcond метка

IP ←IP+DISP

Если условие выполняется, то IP ←IP+DISP иначе указат команд не меняется, т.е. выполняется след по порядку команда.

Пусть команда условного перехода стоит после ком сравнения CMP dst,src тогда условие перехода dst отношение src.

Рассмотрим беззнаковые и знаковые операнды

Для беззнаковых операндов A bove-больше, B elow-меньше. Для знаковых G reater-больше, L ess-меньше.

Е -равно

Возможны условные переходы по содерж флагов

ZF(Z/NZ), SF(S/NS), OF(O/NO), CF(C/NC), PF(P(PE)/NP(PO))

сх=0 то услов перех jcxz

всего 17 команд условного перехода

ja=jnbe; jb=jnae=jc; jae=jnb=jnc

Организация циклов

1) LOOP метка - повтор сколько задан в сх

2) LOOPE / LOOPZ – повтор пока равно

3) LOOPNE / LOOPNZ – повтор пока не равно

Эта команда используется для организации циклов, в которых регистр ЕСХ (или СХ при 16-битной адресации) играет роль счетчика.

1) СХ не=0 – переход на метку

2) (СХ не=0) & (ZF=1) – переход на метку

3) (СХ не=0) & (ZF=0) – переход на метку

Команды вызова подпрограмм

CALL действие такое же как и у команды JMP + сохран в стеке адреса возврата

Если NEAR: M{SS:SP-2}←IP SP←SP-2

FAR: M{SS:SP-2}←CS M{SS:SP-4}←IP SP←SP-4

имя proc тип проц

имя endp

тип far или near

call имя

 

 

RET число

RETN число

RETF число

Операнд для RET необязателен, но, если он присутствует, после считывания адреса возврата из стека будет удалено указанное количество байт — это бывает нужно, если при вызове процедуры ей передавались параметры через стек.

1) извлеч адреса возврата NEAR (SP←SP+2),
FAR (SP←SP+4)

2) SP←SP+data16

1) и 2) можно заменить на SP←SP+data16+2 или SP←SP+data16+4

Возврат операн использ для удален из стека перед процед парам.

 

INT число - вызов прерывания

INT помещает в стек содержимое регистров EFLAGS, CS и EIP, после чего передает управление обработч прерыв с указанным в качестве операнда номером (число от 0 до 0FFh). В реальном режиме адреса обработчиков прерываний считываются из таблицы, начинающейся в памяти по адресу 0000h:0000h. Адрес каждого обработчика занимает 4 байта, так что, например, адрес обработчика прерывания 10h находится в памяти по адресу 0000h:0040h.

IRETD Возврат из обработчика прерывания

Возврат управления из обработчика прерывания или исключения. IRЕТ загружает из стека значения IP, CS и FLAGS, a IRETD — EIP, CS и EFLAGS соответственно. Единственное отличие IRET от RETF состоит в том, что восстанавливается значение регистра флагов, из-за чего многим обработчикам прерываний приходится изменять значение EFLAGS, находящегося в стеке, чтобы, например, вернуть флаг CF установленным в случае ошибки.

 

Прерывание это событие, котор преостан выполнение текущ программы и передает управление подпрогр обраб прерыван.

В х86 программа может быть прервана по следующ причинам

1) запрос прерыв от внешн устройств NHI-немаскир прерыван, INIR-маскир прерыван

При каждом нажатии и отпуск клавиши вызыв прерыв отклавиатуры – INT 9

2) ошибки при выполнении команд (особые случаи или исключения) например- ошибка деления –INT 0

3) програмные прерывания INT n где n=(0;255)

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

Начальн адрес и размер хран в регистре IDTR - регистре дескрипторов таблицы прерыван, базовый адрес – 0, максимальн смещение от начала таблицы – 1123.

Пререход к подпрограмме обработки прерываний происходит в след последоват:

1) сохран в стеке регистр флагов стек←flags

2) включить в стек адрес возврата стек←CS, стек←IP

3) флаг разрешения прерываний и флаг трассировки сбрасываются IF←0, TF←0

4) из таблицы прерыван копир начальн адрес подпрогр обработ прерыв IP←M{0:n*4}, CS←M{0:n*4+2}

Адрес возврата может указыв на следующ коман основной программы, либо при возникнов некоторой ошибки на ту же самую команду (в котор произош ошибка)

Подпрогр обраб прер долж заканч команд IRET (FAR) по ней из стека извлекаются указат команд, сегментн регистры кодов и флагов.

 

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 258; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.025 сек.