2013-09-13 4 views
0

Я пытаюсь создать программу секундомера при сборке с использованием синтаксиса M/Tasm, как мой собственный личный проект, который сначала отображает системное время и печатает его, а затем позже на действуют как секундомер, (начинается в 00:00:00). Если пользователь нажимает ' во время выполнения, программа покажет hh: mm: ss, прошедший с момента запуска секундомера, а затем отображает результат. Я успешно разработал код, чтобы получить системное время, отобразить его и выполнить соответствующий секундомер. Проблема в том, что я не могу остановить свой секундомер во время выполнения, а затем отобразить время, прошедшее через hh: mm: ss. Кто-нибудь с идеями? Я не могу вставить свой код здесь, или иначе мой код будет использоваться другими, это длинный код, пожалуйста, поймите, что у меня есть мои причины для этого :).Сборочная программа, чтобы остановить счетчик секундомера, если нажата клавиша и показать счетчик секундомера

Спасибо .. просто просят за идеи, а не код :)

+0

Я пробовал несколько вещей, но проблема, с которой я сталкиваюсь каждый раз, - это ** остановка счета во время выполнения ** – worriednacho

+0

И не его проект, основанный на контроллерах, я пытаюсь создать для него свою версию для mp :) – worriednacho

ответ

0

Это позор, вы не можете писать код, но я полагаю, что вы используете какую-то петлю для обновления секундомера и таким образом, имеет какой-то код;

loop: 
"update stopwatch" 
JMP loop 

и вам, что нужно, чтобы выйти из цикла, когда 's' нажата. Если это так, вы можете запросить статус клавиатуры, чтобы увидеть, нажата ли клавиша.

loop: 
"update stopwatch" 
MOV AH, 0x01 
INT 0x16 
JZ loop  ; ZF is set if there is no key in buffer 
MOV AH, 0x00 
INT 0x16 ; Get ASCII code from buffer 
CMP AL, "s" 
JNE loop 

Возможно, это не самый элегантный способ, но он должен работать.

Надеюсь, это ответит на ваш вопрос.

+0

yes I у вас есть цикл для его обновления. но этот код не будет работать. Проблема будет во время выполнения. Thnks anyways bro :) – worriednacho

+0

Что именно вы имеете в виду под «во время выполнения»? – Erik

+0

, чтобы быть достаточно ясным, лучше объяснить, когда я объясню, что на самом деле происходит. Программа непрерывно запускает секундомер, но как только нажата клавиша 's', программа остановит секундомер и загрузит значения hh: mm: ss в конкретные регистры и распечатает результат. – worriednacho