Что такое прерывание 69 в 16-битном ассемблере x86? - PullRequest
0 голосов
/ 16 ноября 2011

Я просматривал какой-то фрагмент и увидел следующие строки (часть файла .com):

  DB 66; 
  CALL D59C:C2C0; 
  INT 69
  MOV SI, C8C6

Что делает INT 69?

Я не нашелчто-нибудь в Интернете, и я тоже ничего не нашел здесь:

Странно то, что нет никакого перемещения какого-либо значения в AH или AL до INT 69.

EMU8086.Эмулятор микропроцессора 8086.Встроенный дизассемблер.

Ответы [ 3 ]

9 голосов
/ 16 ноября 2011

Предполагая, что здесь все в шестнадцатеричном формате, если это 16-битный код, то имеем:

66                         DB 66
9A C0 C2 9C D5             CALL D59C:C2C0
CD 69                      INT 69
BE C6 C8                   MOV SI, C8C6

Но 0x66 - это префикс переопределения размера операнда (по-видимому, здесь просто неправильно разобран), который (в 16-битном коде) приводит к тому, что следующая инструкция принимает 32-битный операнд вместо 16-битного. Итак, этот код на самом деле:

66 9A C0 C2 9C D5 CD 69    CALL 69CD:D59CC2C0
BE C6 C8                   MOV SI, C8C6

Дальний вызов довольно случайного 16:32-битного абсолютного адреса из 16-битного кода мне не кажется правдоподобным.

Так что я бы предположил, что это на самом деле данные, а не код ...

3 голосов
/ 16 ноября 2011

Предполагая, что данный код предназначен для выполнения в 16-битном режиме и кодирует последовательные инструкции, у меня есть другая интерпретация этого.

DB 66 - это operand size prefix. В 16-битном режиме он говорит ЦПУ интерпретировать операнды команд как 32-битные вместо 16-битных. Таким образом, инструкция CALL будет интерпретироваться как CALL 16-bit selector:32-bit offset вместо CALL 16-bit selector:16-bit offset. «Отсутствующие» 2 байта адреса являются INT 69 «инструкцией».

Тогда эффективный код:

CALL 69CD:D59CC2C0
MOV SI, C8C6

Но это не имеет особого смысла для меня, потому что вызов с таким адресом (смещение> 0FFFFh) вызовет исключение. Что это за код?

2 голосов
/ 16 ноября 2011

Поиск прерываний x86 дал этот список , предположительно написанный одним Ральфом Брауном. Если это то, во что я верю, то это полный список прерываний из поколения назад. Возвращает воспоминания.

...