stringtranslate.com

INT (инструкция x86)

INT — это инструкция языка ассемблера для процессоров x86 , генерирующая программное прерывание . Он принимает номер прерывания, отформатированный как байтовое значение. [1]

На языке ассемблера инструкция записывается так:

INT X

где Xпрограммное прерывание , которое должно быть сгенерировано (0–255).

Как это принято в машинной двоичной арифметике, номера прерываний часто записываются в шестнадцатеричной форме, что может обозначаться префиксом 0x или суффиксом h . Например, INT 13Hбудет генерироваться 20-е программное прерывание (0x13 — девятнадцать (19) в шестнадцатеричной записи, а отсчет начинается с 0), вызывающее выполнение функции, на которую указывает 20-й вектор в таблице прерываний .

INT широко используется в реальном режиме . В защищенном режиме INT является привилегированной инструкцией . [1]

Реальный режим

При генерации программного прерывания процессор вызывает одну из 256 функций, на которые указывает таблица адресов прерываний, которая находится в первых 1024 байтах памяти в реальном режиме (см. Вектор прерываний ). Таким образом, вполне возможно использовать команду дальнего вызова для запуска функции прерывания вручную после нажатия флагового регистра.

Примером полезного программного прерывания DOS было прерывание 0x21. Вызывая его с разными параметрами в регистрах (в основном ah и al), вы можете получить доступ к различным операциям ввода-вывода, строковому выводу и многому другому. [2]

Большинство систем Unix и их производных не используют программные прерывания , за исключением прерывания 0x80, используемого для выполнения системных вызовов . Это достигается путем ввода 32-битного значения, соответствующего функции ядра, в регистр EAX процессора и последующего выполнения INT 0x80.

ИНТ3

Инструкция INT3  — это однобайтовая инструкция, определенная для использования отладчиками для временной замены инструкции в работающей программе с целью установки точки останова кода . Более общие инструкции INT XXh кодируются двумя байтами. Это делает их непригодными для использования в инструкциях исправлений (длина которых может составлять один байт); см. СИГТРАП .

Код операции для INT3 — 0xCC, в отличие от кода операции для INT немедленный8 , который равен . Поскольку выделенный код операции имеет некоторые необходимые специальные свойства для отладки, которые не используются обычным двухбайтовым кодом операции для INT3, ассемблеры обычно не генерируют общий код операции из мнемоники. [1]0xCD immediate80xCC0xCD 0x03

В

Инструкция INTO  — это еще одна однобайтовая инструкция. Это условное прерывание , которое запускается, когда флаг переполнения установлен во время выполнения этого кода операции. Это неявно указывает на прерывание №4.

Код операции для INTO — 0xCE, однако он недоступен в режиме x86-64.

Смотрите также

Рекомендации

  1. ^ abc Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32 (PDF) . Том. 2. Корпорация Интел . Март 2024. с. 3-520 . Проверено 23 мая 2024 г.
  2. ^ Определение: int 21