装配中的特定时间延迟

时间:2014-11-05 13:00:07

标签: assembly x86 timing machine-language

在我正在参加的一个vocatinal课程中,我们使用类似下面的子程序作为时间延迟。

      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)是流量,十六进制,4位数值。

我希望有人可以帮我准确地计算一下这个程序。 (EX:10秒)如果可能的话,请包括我班级和我要使用的等式。

1 个答案:

答案 0 :(得分:0)

为了使用此代码进行计时,您需要知道循环本身的持续时间;有多种方法可以做到这一点:

  1. 使用Software Developer Manuals查找每条指令的时间。

  2. 使用rdtsc指令测量时钟周期

  3. 在任何一种情况下,您都需要除以CPU的时钟频率,以秒为单位获得时间。