- •1 Ответ
- •2 Ответ Структура управляемой системы реального времени
- •3 Ответ
- •1) Принцип модульности
- •4) Принцип функциональной избыточности
- •6) Принцип совместимости
- •7) Принцип открытой и наращиваемой ос
- •4 Билет
- •5 И 6 билет
- •7 Билет
- •8 Билет Прерывание в защищённом режиме
- •9 Билет
- •10 Билет Страничная трансляция
- •11 Билет
- •12 Билет
- •13 Билет
- •14 Билет
- •15 Билет
- •16 Билет
- •17 Билет
- •18 Билет
- •30. 2.7. Семафоры
- •19 Билет
- •34. Синхронизация через диспетчеризующий механизм
- •20 Билет
- •21 Билет
- •22 Билет
- •23 Билет . Организация взаимодействия между процессами
- •Создание и удаление каналов Создание канала
- •Удаление канала
- •Установление и удаление соединений с каналом Установление соединения
- •Разрыв соединения
- •24 Билет
- •25 Билет
- •26 Билет
- •27 Билет
- •28 Билет
- •29 Билет
- •30 Билет
- •31 Билет
- •32 Билет
- •33 Билет
- •Int flags, // флаги, определяющие область действия тайм-аута
- •34 Билет
- •35 Билет
- •36 Билет
- •37 Билет
- •38 Билет
- •39 Билет
- •40 Билет
- •41 Билет
- •Именование в qnx
- •43 Билет
- •44 Билет
- •45 Билет
- •Устройства с последовательным интерфейсом
- •46 Билет
7 Билет
JMP, CALL – обеспечивает как ближние, так и дальние вызовы (между сегментами)
JMP адрес БЕЗУСЛОВНЫЙ ПЕРЕХОД
По этой инструкции управление безусловно передаётся по указанному адресу. В отличие от CALL инструкция JMP не помещает в стек никакой информации, и возврата к следующей за JMP инструкции не обеспечивается. Подобно CALL адрес получающей управление инструкции может быть получен из самой JMP (прямая JMP) или из ячейки памяти или регистра, специфицированных в JMP (непрямая JMP). С другой стороны, передача управления может быть как внутрисегментной, так и межсегментной. Внутрисегментная прямая JMP изменяет содержимое регистра IP, добавляя туда смещение целевой инструкции относительно себя. Если ассемблер обнаружит, что эта инструкция отстоит от JMP не более, чем на 127 байтов, он автоматически генерирует двухбайтную форму инструкции (короткая JMP); в противном случае формируется ближний JMP, который может адресовать цель в пределах от -32К до +32К. Эти формы JMP являются самоотносительными и динамически переместимыми (JMP и целевая инструкция находятся в одном сегменте и перемещаются вместе) и могут поэтому использоваться в адресно независимых программах. Внутрисегментная непрямая JMP может функционировать через память или через регистр. В первом случае содержимое адресуемого инструкцией слова памяти помещается в регистр IP. Во втором новое значение IP выбирается из указанного 16-битового регистра. Межсегментная прямая JMP помещает в регистры IP и CS значения, специфицированные инструкцией. Межсегментная непрямая JMP может функционировать только через память. Первое слово из адресуемого инструкцией 4-байтного указателя помещается в регистр IP, второе - в CS.
Инструкции этого типа обеспечивают безусловный переход и могут передавать управление как внутри текущего сегмента кода (внутрисегментная передача управления), так и за его пределы (межсегментная передача управления). Тип передачи управления может быть задан ассемблеру предшествующим адресу перехода ключевым словом NEAR (внутрисегментная) или FAR (межсегментная). Описания инструкций безусловного перехода приведены ниже.
CALL имя-процедуры ВЫЗОВ ПРОЦЕДУРЫ Инструкция CALL активизирует указанную процедуру, сохраняя в стеке адрес следующей за CALL инструкции. Ассемблер генерирует инструкцию CALL разных типов в зависимости от того, с каким описателем объявлено имя-процедуры: NEAR или FAR. Для корректного возврата из процедуры тип инструкции CALL должен соответствовать типу инструкции RET, выполняющей этот возврат. Потенциальная возможность несоответствия имеет место, когда инструкция CALL и сама процедура находятся в раздельно транслируемых частях программы. Обычно ассемблер сам следит за соответствием вызовов и возвратов. Дополнительно об этом см. «Система программирования на макроассемблере MS-DOS. Часть 3. Директивы языка ассемблера», п. 3.2. Различные формы CALL позволяют получать адрес процедуры из самой инструкции (прямая CALL) или из области памяти или регистра, на которые ссылается CALL (непрямая CALL). Следует помнить, что процессор автоматически устанавливает регистр IP указывающим на следующую инструкцию до сохранения его в стеке. Для внутрисегментной прямой CALL содержимое регистра SP уменьшается на 2, и в стек помещается содержимое регистра IP. Затем к содержимому IP добавляется относительное смещение адреса процедуры, изменяющееся в пределах от –32К до +32К. Эта форма CALL является самоотносительной и динамически переместимой (CALL и процедура находятся в одном сегменте и перемещаются вместе) и может поэтому использоваться в адресно независимых программах. Внутрисегментная непрямая CALL может функционировать через память или через регистр. Содержимое SP уменьшается на 2, и в стек помещается содержимое IP. Смещение процедуры извлекается из специфицированных в инструкции слова памяти или 16-битового регистра и заносится в IP. Для межсегментной прямой CALL содержимое SP уменьшается на 2, и в стек помещается содержимое регистра CS. В CS заносится полученное из инструкции слово сегмента. SP снова уменьшается на 2, и в стек помещается содержимое IP, а в сам IP заносится слово смещения из инструкции. В случае межсегментной непрямой CALL, которая может функционировать только через память, содержимое SP уменьшается на 2, в стек заносится регистр CS, в который затем копируется 2-е слово из адресуемого инструкцией 4-байтного указателя. SP снова уменьшается на 2, и в стек помещается содержимое регистра IP, куда затем заносится 1-е слово указателя.
