Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Часы на Assemblere под DOS  (Прочитано 13170 раз)
0 Пользователей и 1 Гость смотрят эту тему.
inferno-ps
Гость
« : 11-06-2006 18:58 » 

Драствуйте!
Помогите решить одну проблемку в программе "часы", тобишь
так (часы.минуты.секунды)  мне нужно проверить часы , чтобы  их максимальное значение не уходило за 24. Улыбаюсь
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 11-06-2006 18:59 » 

inferno-ps, ну и? Где проблема?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
inferno-ps
Гость
« Ответ #2 : 11-06-2006 19:06 » 

Короче говоря вот фрагмент ввода часов и их проверки:
+++++++++++++++++++++++++++++++++++++++++
;---------------------------- ЧАСЫ
  CALL key
  CMP  AL, 32h                ;PROVERKA 1 CIFRI: BOLSHE 0 MENSHE 2
  JNG  num1
  MOV  flag, 00000001b
  num1:
  CMP  AL, 30h
  JNL  num2   
  MOV  flag, 00000001b        ;xxxxxxxxxxxxxxx
  num2:
  SHL  AL, 4
  ADD  CH, AL
  CALL key
  CMP  AL, 39h                ;PROVERKA 2 CIFRI: BOLSHE 0 MENSHE 2
  JNG  num3
  MOV  flag, 00000001b
  num3:
  CMP  AL, 30h
  JNL  num4   
  MOV  flag, 00000001b        ;xxxxxxxxxxxxxxx
  num4:
  AND  AL, 00001111b
  ADD  CH, AL
  MOV  hour, CH
;---------------------------- КОНЕЦ ЧАСОВ
+++++++++++++++++++++++++++++++++++++
проверяю старшую и младшую тетраду , в старшей чёб не более 2 и не менее 0 , а в младшей чёб не более 9 и не менее 0.
ну жно на 24 час проверку
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 11-06-2006 19:08 » 

Логичнее и удобнее ввести число целиком, а потом проверять. Если ОС - MSDOS, то воспользуйся сервисами int 21h для ввода - это будет проще.
Если же идти твоим путем, то проверяй первую цифру: если она равна 2, то вторая не более 3.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
inferno-ps
Гость
« Ответ #4 : 11-06-2006 19:11 » 

хорошо , пасиб , попробую =)
Записан
inferno-ps
Гость
« Ответ #5 : 11-06-2006 19:19 » 

Я вот тут написал , допустим , если поставить это после вот той проверки что я скинул ..как думаешь сработает?!


***************************************
and ax , 0
mov al,hour
and al,11110000b
shr  al, 4
cmp al,32h
jne go1
mov ah,hour
and ah,00001111b
cmp ah,34h
jng go1
mov flag , 00000001b
go1
************************************************
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 11-06-2006 19:29 » 

Я бы дал ввести обе цифры, совместил бы их в одном регистре, а потом бы уж стравнивал. Путаницы будет меньше и код компактее.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
inferno-ps
Гость
« Ответ #7 : 11-06-2006 19:34 » 

ну допусти у меня введено 25 часов...я их поместил в  регистр buffer , а потом задаю
cmp buffer,...- а тут что писать то?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 11-06-2006 20:49 » 

inferno-ps, "регистр buffer" - надеюсь, это условность... 8-|
Ептыть, с чем сравниваешь, то и писать.

input_digit:
    call key ; чтобы было как у тебя
    sub al, 30h
    cmp al, 10
    jnc input_digit ; введена не цифра
    ret

input_number: ; 2 цифры
    call input_digit
    push ax
    call input_digit
    pop bx
    xor bh,bh
    mul bx,10
    add al, bl
    ret


Дальше - думай.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
inferno-ps
Гость
« Ответ #9 : 12-06-2006 17:11 » new

спасибки!!!
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines