我正在为程序集8086中的学校(使用DOSBox)工作,并且我试图将程序延迟0.5秒。延迟程序使用int 21h与ah = 2Ch
我试图创建一个循环的当前时间比较初始时间,使用INT 21H,功能代下与DL
的百分之价值,但它似乎是太慢了......
mov ah, 2Ch
int 21h
mov al, dl ;hundredths
mov bx, 0
wait_loop:
one_hun:
int 21h
cmp al, dl
je one_hun
mov al, dl
inc bx
cmp bx, 50
jne wait_loop
谢谢,问题解决了! – Shelly
他们是如何决定每秒18.2次的?看起来很奇怪。 – fuz
@fuz基本上会为完整的16/32位溢出(65536/18.2 =〜3600 = 1小时)加上初始晶振频率:https://blogs.msdn.microsoft.com/oldnewthing/20041202-00/?p = 37153 – Ped7g