2012-03-01 2 views
1

Я использую встроенную сборку в Visual C++ и уже несколько дней пытаюсь получить int 21h для работы с моей программой. Другие прерывания работают (int 3), что заставляет меня поверить, что я звоню 21h неправильно или заблокирован каким-то образом. Я получаю ошибку во время выполнения, когда я использую int 21h. Если я прокомментирую это, он может отлично перемещать регистры.Использование int 21h с встроенной сборкой

До сих пор я получил это вместе:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    __asm { 
     mov ah, 1h 
     int 21h 

     mov dl, al 
     mov ah, 2h 
     int 21h 
    } 
} 
+0

Возможно, это segfault. Вы не можете использовать ints в 32-битных приложениях, насколько я знаю. – BlackBear

+0

Как было сказано, другие прерывания действительно работают. int 3 успешно выполняет точки останова без ошибок. Единственный, с которым я, похоже, беспокоюсь, - это int 21h. – ozdrgnaDiies

+0

Что это за программа? Int21h - прерывание DOS. –

ответ

6

Вы не можете использовать DOS прерывания в программе окна; это разные платформы

Вы можете использовать аппаратные прерывания, такие как int 1 и int 3.

+0

Я читал с тех пор, как я спросил это, и это, похоже, так. Спасибо за объяснение, почему int 3 работает, теперь имеет больше смысла. – ozdrgnaDiies

Смежные вопросы