Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игра "Угадай число", игра, привязанная к секундам из CMOS 
:(
    Опции темы
pavelkorr
Дата 21.12.2010, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 21.12.2010

Репутация: нет
Всего: нет



Добрый день, помогите пожалуйста разобраться с программой. Принцип действия таков:
Программа запрашивает у пользователя ввод числа от 0 до 9, по окончанию ввода компьютер считывает значение секунды из CMOS (именно старшее значение, чтобы всегда было от 0 до 9). Компьютер сравнивает введённое пользователем значение со считанным из CMOS. В случае совпадения выводится сообщение типа "Ура! Вы угадали", в случае неудачи, соответственно, "Ура! Вы не угадали!".
Я не знаю как сделать это сравнение и вывод результата.

Код

.model large
.386
.387
;------------------------ сегмент кода -------------------------------
.code                                   ; сегмент кода
        mov AX, @data
        mov DS, AX
        mov ES, ax
 
        lea DX, s1
 
        mov AH, 9h                      ; 09h - функция вывода на экран
        int 21h
 
        call in_out                     ; изучение команд работы с портами
        call fproc                      ; изучение команд матем. сопроцессора
 
        mov AH, 1h                      ; 01h - функция ожидания ввода с клавиатуры
        int 21h
 
 
        mov ax, 4c00h                   ; корректное завершение программы
        int 21h
        ret
 
fproc PROC near
        finit   ; инициализация сопроцессора
        fild word ptr zoom      ; загрузим в стек 50000
  ; здесь можно проверить правильность загрузки командой:  fbstp tbyte ptr decimal
        fldpi   ; pi,50000
        fldpi   ; pi,pi,50000
        fmul    ; pi*pi,50000
        fcos    ; cos(pi*pi), 50000
        fmul    ; 50000*cos(pi*pi)
        fld st(0) ;     copy    
        fst qword ptr myfloat ; сохраним в памяти как переменную типа double
        fbstp tbyte ptr decimal ; сохраним в памяти как десятичное целое
 
        lea si,numbers  ; вывод на экран десятичного числа
        lea di,decimal
        add di,9
 
        mov cx,10d
 
f_loop: 
        mov al,[di]
 
        mov ah,al       ; сделаем копию в ah
 
        shr al,4        ; обработка первого числа
        add al,'0'
        mov [si],al      ; сохранили
 
        and ah,00001111b
        add ah,'0'
        mov [si+1],ah     ; сохранили
 
        dec di
        add si,2
        dec cx
        jnz f_loop
 
        lea DX, math
        mov AH, 9h                      ; 09h - функция вывода на экран
        int 21h
 
 
        ret
fproc ENDP
 
;=====================================================================
;===          Процедура считывания из микросхемы CMOS текущего времени
;=====================================================================
 
in_out PROC near
 
PR_CMOS MACRO NUM,ADDR
        mov al,NUM      ; считаем из CMOS час
        lea si,ADDR
        call print_cmos
    ENDM
 
        mov al,0bh      ; подготовка к взаимодействию с микросхемой CMOS
        out 70h,al
        in al,71h
        and al,11111011b
        out 71h,al
 
        PR_CMOS 0h,secondh      ; считаем из CMOS старшую часть секунды
 
        lea DX, s_d
        mov AH, 9h                      ; 09h - функция вывода на экран
        int 21h
        ret
in_out ENDP
 
print_cmos PROC near
; входные параметры
; al - номер регистра CMOS
; si - адрес символьного буфера куда помещаем результат
 
        out 70h,al      ; считаем из CMOS
        in al,71h
 
        mov ah,al       ; сделаем копию в ah
 
        shr al,4        ; обработка первого числа
        add al,'0'
        mov [si],al      ; сохранили
 
        and ah,00001111b
        add ah,'0'
        mov [si+1],ah     ; сохранили
        ret
print_cmos ENDP
 
;-------------------------- Сегмент данных -------------------------
.data                                   ; сегмент данных
 
s_d    db 10,13,10,13,' Загаданное число: ' 
 
secondh db ?,?
       db '$'
 

PM MAIL   Вверх
Severyanin
Дата 21.12.2010, 06:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



А зачем для этой задачи ФПУ понадобился?


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0380 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.