2014-11-05 8 views
0

내가 복용중인 보컬 클래스에서 우리는 시간 지연과 같은 서브 루틴을 사용합니다.어셈블리의 특정 시간 지연

 push ax 
     push bx 
     mov ax, 1000 
B---> mov bx, FFFF 
A---> nop 
     dec bx 
     jnz (A) 
     dec ax 
     jnz (B) 
     pop bx 
     pop ax 
     ret 

여기서 (1000) 및 (FFFF)는 유체, 16 진수, 4 자리 값입니다.

나는 누군가가이 프로그램으로 정확하게 시간을내는 것을 도울 수 있기를 바랬다. (EX : 10 초) 가능한 경우, 수업 시간과 방정식을 포함 시켜서 사용하십시오.

+0

경과 시간을 측정하는 신뢰할 수있는 방법을 제공하는 것은 어셈블리 코드가 아닌 운영 체제의 작업입니다. –

답변

0

이 코드를 타이밍에 사용하려면 루프 자체의 지속 시간을 알아야합니다. 이 작업을 수행하는 여러 가지 방법이 있습니다

  1. 각 명령의 타이밍을 찾기 위해 Software Developer Manuals를 사용합니다.

  2. 은 어느 경우 클럭 사이클

을 측정하기 위해 rdtsc 명령을 사용하여, 당신은 시간을 초 단위로 얻을 수있는 CPU의 클럭 속도로 분할해야합니다.