2016-11-27 6 views
0

나는 매크로 아래에서왔다 개체 코드에 ". 그러나 의미를 이해할 수 없습니다 방출 (0xfa)DOS 비활성화() 함수와 같은 매크로 dos.h 파일에서

+3

는'0xfa' 아마 "인터럽트를 비활성화"* *의 기계 코드 참조하십시오. – user3386109

+0

오 대단합니다. 그러나이 문서는 어디에 기록되어 있습니까? – electrospark

+0

여기에 문서화되어 있습니다 (http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-manual-325462.html) on 볼륨 2A의 3-118 페이지 – user3386109

답변

1

그것은 당신의 코드 문자 그대로 기계 코드를 주입합니다. (나는 복고풍 멋진이기 때문에, 여기 TP7 파스칼 코드를 사용하고 있습니다) : 코멘트 INT 주요 질문에 따르면이 유사하다 또한

BEGIN 
    WriteLn('Hello world, now interrupts are disabled'); 
    ASM 
     CLI ; // clear interrupts - to re-enable call STI 
    END 
END. 

참조 - https://stackoverflow.com/a/1581729/78712

또 다른 예 (이 시간에 나는 그것이 GCC 볼 수 있습니다 모르겠습니다으로 http://borlpasc.narod.ru/english/faqs/written.htm에서 차용 C는)

// jump FFFF:0000 
#define reboot __emit__ 0xEA __emit__ 0x00 __emit__ 0x00 __emit__ 0xFF __emit__ 0xFF 

이 특이 Mircrosoft 컴파일러 것으로 보인다 수 있습니다. 이것은 16 비트 DOS에서만 작동하며 win32에서는 재미없는 방법으로 실패합니다. Linux/ARM/AMD64 및 기타 변형도 문제가되지 않습니다.

In C programming, what does "emit" do?