Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вещественная арифметика, сопроцессор 
:(
    Опции темы
cupoma58
Дата 11.5.2018, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите разобратся:
Код

  ...
wmcommand:
  movzx eax,word ptr [ebp+10h]
  cmp   eax,..h            ;id_but --> "цифра или символ точка"                 
  je    nabor 
  cmp   eax,1Ch            ;id_but --> "+"                 
  je    plus
  ... 
  cmp   eax,24h            ;id_but --> "="                 
  je    itog
  ...
  jmp   defwndproc

  ;обработка нажатия кнопок:

  nabor:
    ...
    call  SetWindowTextA@8  ;набрали 1-e число
    ...
  plus:                     ;нажали "+"
    mov   edx,0             ;очищаем регистр и...
    mov   edx,1Ch           ;...сохраняем id кнопки --> "+"
    mov   str1,eax          ;сохраняем 1-е число 
    finit                   ;инициируем сопроцессор
    fld   str1              ;str1-->st(0)
    call  clear             ;очищаем дисплей  
    ...
  ;набрали 2-е число...число набирается и остаётся на дисплее 
    ...
  itog:                     ;нажали "="
    cmp   edx,1Ch           ;если нажали "+"...                
    je    plus_ex           ;...переходим сюда...не переходим
    ...
  plus_ex:
    call  clear             ;очищаем дисплей
    mov   str2,eax          ;сохраняем 2-e число в str2
    mov   eax,buf           ;освобождаем буфер  
    fadd  str2              ;st(0)+str2-->st(0) 
    fst   buf               ;st(0)-->buf 
    fwait 
    push  buf               ;здесь сумма
    push  [hWndEdt]
    call  SetWindowTextA@8  ;выводим её на дисплей
    jmp   exit 
    ...
  exit:
    mov  eax,0
    jmp  finish
    ...
  finish:
    pop  edi
    pop  esi
    pop  ebx
    pop  ebp
    ret  16
winproc endp
clear  proc
  push  Edt
  push  [hWndEdt]
  call  SetWindowTextA@8
  ret
clear  endp
end go

После нажатия "=" на дисплее остаётся 2-е набранное число. Убрал из "plus_ex:" всё, кроме 
"call clear" и "jmp exit" - картина не меняется. Похоже, что код в метке "itog:" не работает и 
переход к "plus_ex:" не происходит. В чём дело - понять не могу. 
 

Это сообщение отредактировал(а) cupoma58 - 18.5.2018, 11:59
PM MAIL WWW   Вверх
Google
  Дата 21.5.2018, 23:32 (ссылка)  





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

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

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


 




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


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

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