Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Вопросы начинающих программистов
Перезагрузить страницу Десятичный логорифм из числа х
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Хитрый_КОТ Хитрый_КОТ вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.11.2010
По умолчанию Десятичный логорифм из числа х - 22.11.2010, 01:26

не могу совместить

1) часть должна обеспечить пользовательский интерфейс
2) арифметика

в первую строку вводим значение х
во второй должен быть результат
Максиум, что получилось скопировать содержимое первой во вторую.


Вот что получилось. Помогите пожалуйста интегрировать арифметику. В код первой програмы.



Uploaded with ImageShack.us

Арифметика Lg(x)
asm Код:
; Программа для вычисления десятичного логорифма из числа х (Lg(x)).
 
format PE GUI
entry start
 
include 'win32a.inc'
 
section '.data' data readable writeable
 
class db 'FASMWIN32',0
title db 'Калькулятор Lg(x)',0
classb db 'BUTTON',0
classe db 'EDIT',0
classs db 'STATIC',0
textb1 db 'Посчитать',0
textb2 db 'Очистить',0
textg db 'Рабочая часть',0
texts db 'Значение х',0
textc db 'Очистить все',0
textr db 'Здесь будет результат',0
errtxt db 'Ошибка',0
hwnd dd ?
hwnde dd ?
hwnds dd ?
hwndc dd ?
text rb 100
 
wc WNDCLASS 0,WindowProc,0,0,0,0,0,COLOR_BTNFACE+1,0,class
 
msg MSG
 
section '.code' code readable executable
 
start:
 
invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
cmp eax,0
je error
 
invoke CreateWindowEx,0,class,title,WS_VISIBLE+ WS_SYSMENU,400,300,256,220,0,0,[wc.hInstance],0 ; Вывод на экран окна координата (отступ сверху 400,справа 300); 256,220 ширина,высота окна
cmp eax,0
je error
mov [hwnd],eax
msg_loop:
invoke GetMessage,msg,0,0,0
cmp eax,0
je end_loop
invoke IsDialogMessage,[hwnd],msg
cmp eax,0
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
 
error:
invoke MessageBox,0,errtxt,0,MB_ICONERROR+MB_OK
 
end_loop:
invoke ExitProcess,[msg.wParam]
 
proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
cmp [wmsg],WM_CREATE
je .wmcreate
cmp [wmsg],WM_COMMAND
je .wmcommand
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish
.wmcreate:
invoke CreateWindowEx,0,classb,textg,WS_VISIBLE+ WS_CHILD+ BS_GROUPBOX,5,5,240,175,[hwnd],1000,[wc.hInstance],0                            ; рамка (рабочая часть)
invoke CreateWindowEx,0,classb,textb1,WS_VISIBLE+WS_CHILD+ BS_PUSHBUTTON+WS_TABSTOP,15,125,100,40,[hwnd],1001,[wc.hInstance],0             ;кнопка 1
invoke CreateWindowEx,0,classb,textb2,WS_VISIBLE+WS_CHILD+ BS_PUSHBUTTON+WS_TABSTOP,135,125,100,40,[hwnd],1002,[wc.hInstance],0            ;кнопка 2
invoke CreateWindowEx,0,classe,texts,WS_VISIBLE+WS_CHILD+WS_BORDER+ WS_TABSTOP+ES_AUTOHSCROLL,10,35,230,20,[hwnd],1003,[wc.hInstance],0    ;строка 1
mov [hwnde],eax
invoke CreateWindowEx,0,classe,textr,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP+ ES_AUTOHSCROLL+ES_READONLY,10,65,230,20,[hwnd],1004,[wc.hInstance],0  ; строка 2
mov [hwnds],eax
invoke CreateWindowEx,0,classb,textc,WS_VISIBLE+WS_CHILD+ BS_AUTOCHECKBOX+WS_TABSTOP,130,95,110,20,[hwnd],1005,[wc.hInstance],0         ; очистка
mov [hwndc],eax
invoke SetFocus,[hwnde]
jmp .finish
.wmcommand:
cmp [wparam],1001
je .but1
cmp [wparam],1002
je .but2
jmp .finish
.but1:                                           ;кнопка вывода результата
invoke SendMessage,[hwnde],WM_GETTEXT,100,text     ;отправка
invoke SendMessage,[hwnds],WM_SETTEXT,0,text      ;прием
jmp .finish
.but2:                                           ;кнока очиски
invoke SendMessage,[hwnds],WM_SETTEXT,0,0
invoke SendMessage,[hwndc],BM_GETCHECK,0,0
cmp eax,BST_CHECKED
jne .finish
invoke SendMessage,[hwnde],WM_SETTEXT,0,0
invoke SendMessage,[hwndc],BM_SETCHECK,BST_UNCHECKED,0
jmp .finish
.wmdestroy:
invoke PostQuitMessage,0
mov eax,0
.finish:
pop edi esi ebx
ret
endp
 
section '.idata' import data readable writeable
 
 
library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'
 
include 'kernel32.inc'
include 'user32.inc'

asm Код:
format PE GUI
entry start
 
; Десятичный логарифм можно вычислить через двоичный логорифм Lg(x)=(Log2(x)/(Log2(10))
 
section '.text' code readable executable
start:
        FLD1    ; загрузить в стек 1
        FLD[x]   ; загрузить в стек переменую х
        FYL2X   ; Вычисление Y * Log2(X) - произведение числа Y записанного в стек ST(1), на логарифм по основанию 2 числа, записанного в ST. Результат кладется обратно в стек ST(0), исходные данные теряются.
        FLDL2T; загрузить в стек константу Log2(10)
        FDIVP ST1,ST ;  производится операция Lg(x)=(Log2(x)/(Log2(10)) Значение стека ST(1) делится на значение ST(0) результат записывается в стек как ST(0), исходные данные теряются.
 
section '.data' data readable writeable
              x dt 10.0  ; значение х
Ответить с цитированием
  (#2 (permalink)) Старый
white_ghost white_ghost вне форума
Member
 
Сообщений: 61
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.11.2010
По умолчанию 22.11.2010, 13:20

на чем пишем?
Ответить с цитированием
  (#3 (permalink)) Старый
IL_Agent IL_Agent вне форума
Member
 
Аватар для IL_Agent
 
Сообщений: 2,015
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2005
По умолчанию 22.11.2010, 13:26

ОМФГ, ещё есть люди, рисующие гуй на асме...
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Числа Anastasiya__ Алгоритмы 2 03.01.2012 01:08
Даны действительные числа a1,...,a20. Получить числа b1,...,b20, ... Ptitsa Pascal 1 22.12.2011 01:29
Действительные числа Union user Вопросы начинающих программистов 0 20.06.2011 14:04
Заданы три числа Daniel58 Prolog 3 04.06.2011 03:30
Дружественные числа Andrey93 Pascal 0 22.05.2011 22:52
Преобразовать число в двоично-десятичный код caxaromires C++ Builder 4 18.05.2011 09:23
Числа Фибоначчи Paprika Prolog 3 19.05.2009 23:26
Расчет числа Пи ArchiDevil C++ Builder 5 20.10.2008 16:44
Перевод бинарного кода в десятичный формат horadmon Assembler 1 14.05.2008 18:09
Простые числа milanitka Prolog 1 02.11.2006 18:08
Числа vs Дата Krasnaja Shapka Visual Basic 4 27.10.2006 11:37
Десятичный логарифм как с ним работать Maksprog Assembler 19 19.05.2006 22:52



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов