Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2012, 13:26   #11
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Задумку автора не знаю, лишь отвечаю на поставленный вопрос
Цитата:
Как сделать так, чтобы если ничего не нажато, выполнение не останавливалось в ожидании ввода?
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 23.01.2012, 14:32   #12
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Ну я хочу так:
1) программа запустилась с исходными параметрами;
2) выполнился цикл, надо бы проверить, что введено;
3) если ничего не введено, все должно повториться с исходными параметрами, при этом пользователь ничего не должен делать (хотя бы потому, что он медленный).
То есть хочется опрашивать контроллер клавиатуры в ходе выполнения программы, чтобы не было ожиданий и прерываний этой основной программы. А можно как-то проще решить?

Последний раз редактировалось Krasi; 23.01.2012 в 14:34.
Krasi вне форума Ответить с цитированием
Старый 23.01.2012, 14:59   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
все должно повториться с исходными параметрами,
что именно должно повториться?!!

p.s. ну если всё так, как вы описываете, тогда берите решение Step_UA (пост #9), там всё именно так, как Вам нужно (если я Вас правильно понял).

Последний раз редактировалось Serge_Bliznykov; 23.01.2012 в 15:03.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.01.2012, 16:26   #14
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Пардон, у меня с Интернетом что-то случилось, только сейчас прочитал пост 9. Но мне надо без буфера! Главная программа - это счетчик, куда надо положить введенную в десятичном формате с клавиатуры константу. Понял, что может быть не совсем понятно, мне надо преобразовать строку в число. Например, я ввожу 12345, тогда период счета счетчика нужно будет изменить на T=12345с в ходе выполнения программы. Хочу пока ограничиться 16битовым числом, чтобы проще все шло, то есть максимальный период - 65535. Период искажается, но левые циклы можно посчитать и учесть. Но тут уже нужно думать о способе конвертирования, а я не могу сообразить, как обойтись только РОНами, ну или хоть бы уж всеми возможными на крайний случай, если обрабатывать последовательно числа, не зная их веса.
Попытался найти аналогию, что я хочу в результате: живой поиск Google, но нужно помнить лишь результирующее число. Вводится 1 - разряд 1. Вводится 2 - разряд 1, а у единицы 10 -> 10+2=12, вводится 3 - разряд 1, 120+3=123. Прошло более n циклов - сброс. А в простейшем случае: 1 - ничего, программа функционирует, 2 - тоже самое, 3 - аналогично, Enter -> 123. Предложите хоть какой-то простейший алгоритм, потому что вообще ничего в голову не лезет.

Последний раз редактировалось Krasi; 23.01.2012 в 16:39.
Krasi вне форума Ответить с цитированием
Старый 23.01.2012, 20:16   #15
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
 
     ...
null:
      xor   dx,dx  ; накапливаемое значение
loop_:
      ... ; тело цикла
      mov   ah,1
      int   16h
      jnz   readkey
      jmp   loop_
readkey:
      mov   ah,0
      int   16h
      cmp   al,13
      je    work
      sub   al,'0'
      jl    loop_
      cmp   al,9
      ja    loop_
      cbw
      push  ax
      mov   ax,dx
      mov   dx,10
      mull  dx
      pop   dx
      add   dx,ax      
      jmp   loop_
work:  
     mov    T,dx     ; новое введенное значение
     jmp    null
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 24.01.2012, 08:10   #16
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

СПС БИГ за кул вариант!!!! Это примерно треть моего кода, который должен делать тоже самое (но в нем как раз процесс считывания нескольких символов не мог реализовать).

Последний раз редактировалось Krasi; 24.01.2012 в 08:54.
Krasi вне форума Ответить с цитированием
Старый 24.01.2012, 08:47   #17
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Наболевший вопрос, я же могу запускать это приложение без ОС? Ну с переходом окончательно на регистры и хранением в ПЗУ помимо основной программы еще вектора прерываний и программ обработки прерываний? А как мне самому написать такие программы? То есть чтобы вместо 16h было, например proc get_input_to_ax, а в этом процессе описать обращение по адресу и работать непосредственно с контроллером прерываний? Я бы хотел аппаратное прерывание. Я пока на примере emu8086 посмотрел, на какой адрес ссылается прерывание 16h, он совпадает с тем, на который прыгает программа во время своего выполнения, но по этому адресу сейчас непонятно что написано.

Последний раз редактировалось Krasi; 24.01.2012 в 08:52.
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с клавиатурой DalBor9 Паскаль, Turbo Pascal, PascalABC.NET 3 13.10.2011 14:45
Работа с клавиатурой! FartNick Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 11.10.2010 17:20
работа с клавиатурой progN Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 30.04.2010 17:22
Работа с клавиатурой в С++ Matr1x C++ Builder 5 27.01.2010 22:56
Работа с клавиатурой АлексейМк Общие вопросы C/C++ 1 05.08.2009 01:27