Как создать функцию сна в 16-битной MASM Assembly x86?

Я пытаюсь создать процедуру сна / задержки в 16-битной MASM Assembly x86, которая, скажем, будет печатать символ на экране каждые 500 мс. Из проведенного мною исследования, кажется, есть три метода для достижения этой цели - я хотел бы использовать тот, который использует тактовые импульсы процессора.

Обратите внимание, что я работаю под управлением Windows XP через VMWare Fusion на Mac OS X Snow Leopard - я не уверен, влияет ли это на что-либо.

Может ли кто-нибудь указать мне правильное направление или предоставить рабочий фрагмент кода, который я могу настроить? Спасибо!

Код, который я нашел, должен напечатать 'A' на экране каждую секунду, но не работает (яв любом случае я хотел бы использовать миллисекунды).

TOP:
MOV AH,2C
INT 21
MOV BH,DH  ; DH has current second
GETSEC:      ; Loops until the current second is not equal to the last, in BH
MOV AH,2C
INT 21
CMP BH,DH  ; Here is the comparison to exit the loop and print 'A'
JNE PRINTA
JMP GETSEC
PRINTA:
MOV AH,02
MOV DL,41
INT 21
JMP TOP

РЕДАКТИРОВАТЬ: После GJ 'совет здесьЭто рабочая процедура. Просто позвони

DELAY PROC
 TIMER:
 MOV     AH, 00H
 INT     1AH
 CMP     DX,WAIT_TIME
 JB      TIMER
 ADD     DX,3         ;1-18, where smaller is faster and 18 is close to 1 second
 MOV     WAIT_TIME,DX
 RET
DELAY ENDP

Ответы на вопрос(6)

Ваш ответ на вопрос