ASM:检查是否没有按下任何键

时间:2017-03-07 14:36:56

标签: assembly

我从学校开始执行任务,组装蛇形游戏 我已经完成了所有的游戏,但是我无法想办法做一件事 - 让蛇的数量在相同的方向上移动而没有按下按键。

目前,在每个步骤之后,我的代码调用此代码来获取下一个键:
( ( "<NSView: 0x600000121ea0>" ), ( "<NSView: 0x600000120780>" , ( "<NSView: 0x6000001235a0>" ) )
但是这段代码会等到用户按下某个东西,所以他对这种情况并不好 有人知道一段时间之后,如果没有按下任何键,代码会计算代码吗? 另外谢谢:)

2 个答案:

答案 0 :(得分: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不会停止执行代码,因此您可以知道何时按下某个键或何时不按键。

答案 1 :(得分:0)

让中断设置变量。使用计时器在读取后立即清除它。使用该变量确定要执行的代码:直/左/右