2013-02-16 2 views
0

어떻게 x86에서 int 8을 사용할 수 있습니까? [xp에서 winp를 사용하여] 시스템에 초 동안 아무 작업도하지 않습니다 [일시 중지]? 또는 다른 int 또는 코드?16 비트 어셈블리 시스템이 몇 초 동안 일시 중지하는 방법은 무엇입니까?

+0

어떤 OS입니까? OS Sleep() API를 호출하고 DWORD 16000을 전달하십시오. –

+0

어떻게 XP에서이 API를 사용할 수 있습니까? –

+1

@MartinJames : 그는 16bit asm에서 그렇게 할 수 없을 것입니다. – Seki

답변

2

DOS 프로그램에서 일반적인 두 가지 방법이 있습니다 :

  • 이 주소 40H의 4 바이트 카운터의 변화를 개수 : 6CH가. 카운터는 55 밀리 초마다 증가합니다.
  • int 8 (IRQ0, 타이머 인터럽트)에 대한 자체 인터럽트 처리기를 설치하고 인터럽트를 계산하십시오. ISR에서 원래의 전화 번호로 전화해야하므로 나머지 시스템은 의도 한대로 작동합니다.

후자의 옵션은 Windows에서보다 안정적 일 수 있습니다.

+0

두 번째 방법을 구현하는 방법을 모르겠습니다. 또한 여러 번 비교하여 CPU 사용에 영향을 미칩니 까? –

+0

그래서 인터럽트에 대해 알아보십시오. 당연히 모든 실행 된 명령어는 CPU를 사용합니다. –

+0

은 첫 번째 구현에서 정상적인 CPU 사용률 50 %입니까? –

관련 문제