我试图在16位MASM Assembly x86中创建一个睡眠/延迟程序,比如说,每500毫秒在屏幕上打印一个字符.从我所做的研究来看,似乎有三种方法可以实现这一点 - 我想使用一个使用CPU时钟滴答的方法.
请注意我在Mac OS X Snow Leopard上通过VMWare Fusion运行Windows XP - 我不确定这是否会影响任何内容.
有人可以指出我正确的方向,或提供一个我可以调整的工作代码吗?谢谢!
我发现的代码应该每秒在屏幕上打印'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
Run Code Online (Sandbox Code Playgroud)
编辑:按照GJ的建议,这是一个工作程序.打电话吧
DELAY PROC
TIMER:
MOV AH, …Run Code Online (Sandbox Code Playgroud)