Ваш поток кода:
check for key press:
while key not pressed goto check for key press
add one
go to check for key press:
Как только переключатель меняет состояние, затем нажимается клавиша, он больше не ждет, он просто продолжает проскакивать через внешний (добавьте один, чтобы проверить нажатие клавиши) l oop.
То, что вы хотите, - это проверить состояние не нажата, как где-то во внешнем l oop
check for key not pressed:
while key pressed goto check for key not pressed
check for key press:
while key not pressed goto check for key press
add one
go to check for key not pressed
Или
check for key press:
while key not pressed goto check for key press
check for key not pressed:
while key pressed goto check for key not pressed
add one
go to check for key press
или
check for key press:
while key not pressed goto check for key press
add one
check for key not pressed:
while key pressed goto check for key not pressed
goto check for key press
Вы можете разделить добавляемую единицу и проверку максимального количества на две части и тоже посыпать их ...
Но, как написано, как только бит переключателя утверждает, что вы будете копировать через внешний l oop, потому что вы не можете вернуть переключатель достаточно быстро. Если вы хотите подсчитать отдельные нажатия переключателя, вам необходимо опросить как подтвержденные, так и деактивированные состояния в l oop.
Также рассмотрите возможность использования tst вместо cmp. Посмотрите это в документации.