2017-03-07 86 views
0

我從學校得到了一個組裝蛇遊戲的任務。
我已經完成了所有的遊戲,但我無法想出一個辦法來做一件事 - 讓沒有按鍵的蛇在相同的方向移動。ASM:檢查是否沒有按鍵

目前,每個步驟後,我的代碼調用此代碼來獲取下一個關鍵:
mov ah,1h int 21h ; store at al
但這個代碼等待,直到用戶將按下的東西,所以他不適合這種情況下。
是否有人知道一段時間後,如果沒有按鍵被按下,計數代碼?
此外感謝:)

回答

1

試試這個:

mov ah, 0Bh ;CHECK IF ANY KEY WAS PRESSED. 
    int 21h  ;RESULT IN AL : ==0:NO KEY, !=0:KEY. 
    cmp al, 0 
    je JUMP_TO_MOVE_SNAKE 
;GET PRESSED KEY. 
    mov ah,1h 
    int 21h 
JUMP_TO_MOVE_SNAKE: 
    ... 

服務0Bh不會停止代碼的執行,這樣你就可以知道什麼時候按下一個鍵或者當它不是。

+0

非常感謝!這是工作:) – Idan

+1

關於'INT 21/AH = 0Bh' vs'INT 16/AH = 01'的好處是前者從DOS2 +開始檢查STDIN,而不是物理鍵盤。 Upvoted。 –

0

有中斷設置變量。讀取後使用計時器清除它。使用變量來確定執行哪個代碼:直/左/右

+0

嗨,但我沒有得到你的答案。我的問題是,程序一直在等待,直到按下一個鍵,如果沒有按鍵 - 程序將不會繼續。我已經有了你提到的功能,所以如果你可以更清楚你的答案? – Idan