1

我有一个使用 masm 用汇编语言制作秒表的项目。秒表在程序启动时开始并继续。我想实现停止、暂停和播放等功能。当秒表运行时,我不能要求用户输入任何值,因为它是一个循环,并且在每次迭代中,控制台上的文本每隔一毫秒就会更新一次。我在想,在循环的每次迭代之前,我可以检查键盘缓冲区或类似的东西,这表明某个键被按下并使用该值来检测和停止、暂停或播放秒表,这会很好。我知道它不是真正的异步解决方案,但我在 Internet 上找不到任何关于我的问题的描述性内容。

我的秒表代码:我想做我在做之前问过的事情call clrscr

    Include Irvine32.inc
.data
milisec dword 0
sec dword 0
min dword 0
milidiv dword 100
secdiv  dword 60
colon   byte  " : " , 0
.code
main proc


PR :
call clrscr

mov eax, min
call WriteDec


mov edx, offset colon
call WriteString

mov eax , sec
call WriteDec

mov edx, offset colon
call WriteString

mov eax , milisec
call WriteDec

;mili= mili+1
mov eax, milisec
add eax,1
mov milisec , eax

mov edx , 0     ;storing value 0 to remove the garbadge value
div milidiv     ;divide eax by 100 and getting the quotionet from edx
mov ebx , sec   ;move the value of second in ebx
add eax, ebx    ;now adding the previous value of second and the next quotiont value
mov edx , 0     ;storing value 0 to remove the garbadge value
div secdiv      ;dividing the ebx by 60
mov sec, edx    ;moving the quotiont from edx to second

mov eax, milisec    ;moving milisec to eax
mov edx , 0         
div milidiv         ;dividde by mili
mov milisec, edx

mov eax,sec
mov edx , 0
div secdiv
add eax, min
mov min, eax

mov eax , 100
call Delay
jmp PR

exit
main endp
end main
4

0 回答 0