2012-03-01 1 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

아마 세그 폴트입니다. 내가 알고있는 한 32 비트 응용 프로그램에서는 int를 사용할 수 없습니다. – BlackBear

+0

다른 인터럽트도 작동합니다. int 3은 오류없이 중단 점을 성공적으로 만듭니다. 문제가있는 것만이 int 21h입니다. – ozdrgnaDiies

+0

어떤 종류의 프로그램입니까? Int21h는 DOS 인터럽트입니다. –

답변

6

당신은 DOS는 윈도우 프로그램에서 인터럽트를 사용할 수 없습니다; 그들은 서로 다른 플랫폼입니다

int 1int 3과 같은 하드웨어 인터럽트를 사용할 수 있습니다.

+0

나는 이것을 물어 본 이래로 읽었으며 이것이 사실 인 것으로 보인다. int 3이 작동하는 이유에 대해 설명해 주셔서 감사합니다. – ozdrgnaDiies