Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Добрый пончик
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 5
1

Cosh(a+b) посчитать в диалоговом окне

12.06.2014, 14:58. Просмотров 692. Ответов 0
Метки нет (Все метки)

Мне нужно рассчитать Cosh(a+b), и как сделать, чтобы считало только целочисленные числа, вместо чисел с плавающей точкой?? Вот моя недоработанная прога, которая рассчитывает не правильно обычный косинус. Еще вопрос, как в проге показать статический текст, например "введите число А=", а то у меня это все не правильно написано.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
;Вычисление квадратного корня
;Ввод и вывод - число с плавающей точкой в десятичной с.с. (напр. 0.5, 3.14)
.386
.model flat,stdcall
option casemap:none
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
include \masm32\include\masm32.inc
includelib \masm32\lib\masm32.lib
 
 
 
.data
ClassName db "SimpleWinClass",0
AppName  db "Kursovik_example",0
MenuName db "FirstMenu",0
ButtonClassName db "button",0
ButtonText db "Calculate",0
EditClassName db "edit",0
 
TextBox1 db "Введите число A",0
TextBox2 db "Введите число B",0
 
TestString db "Wow! I'm in an edit box now",0
 
.data?
hInstance HINSTANCE ?
CommandLine LPSTR ?
hwndButton HWND ?
hwndEdit HWND ?
buffer db 512 dup(?)
angle dq ?
 
.const
ButtonID equ 1
EditID equ 2
IDM_HELLO equ 1
IDM_CLEAR equ 2
IDM_GETTEXT equ 3
IDM_EXIT equ 4
 
     dlgproc PROTO :DWORD,:DWORD,:DWORD,:DWORD
 
 
.code
start:
    invoke GetModuleHandle, NULL
    mov    hInstance,eax
    invoke GetCommandLine
    mov CommandLine,eax
    invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    invoke ExitProcess,eax
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    LOCAL wc:WNDCLASSEX
    LOCAL msg:MSG
    LOCAL hwnd:HWND
    mov   wc.cbSize,SIZEOF WNDCLASSEX
    mov   wc.style, CS_HREDRAW or CS_VREDRAW
    mov   wc.lpfnWndProc, OFFSET WndProc
    mov   wc.cbClsExtra,NULL
    mov   wc.cbWndExtra,NULL
    push  hInst
    pop   wc.hInstance
    mov   wc.hbrBackground,COLOR_BTNFACE+1
    mov   wc.lpszMenuName,OFFSET MenuName
    mov   wc.lpszClassName,OFFSET ClassName
    invoke LoadIcon,NULL,IDI_APPLICATION
    mov   wc.hIcon,eax
    mov   wc.hIconSm,eax
    invoke LoadCursor,NULL,IDC_ARROW
    mov   wc.hCursor,eax
    invoke RegisterClassEx, addr wc
    INVOKE CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\
           WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
           CW_USEDEFAULT,500,200,NULL,NULL,\
           hInst,NULL
    mov   hwnd,eax
    INVOKE ShowWindow, hwnd,SW_SHOWNORMAL
    INVOKE UpdateWindow, hwnd
    .WHILE TRUE
                INVOKE GetMessage, ADDR msg,NULL,0,0
                .BREAK .IF (!eax)
                INVOKE TranslateMessage, ADDR msg
                INVOKE DispatchMessage, ADDR msg
    .ENDW
    mov     eax,msg.wParam
    ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    .IF uMsg==WM_DESTROY
        invoke PostQuitMessage,NULL
    .ELSEIF uMsg==WM_CREATE
;первое число
        invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName , NULL,\
                        WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
                        ES_AUTOHSCROLL,\
                        170,5,200,25,hWnd,EditID,hInstance,NULL
        invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName , ADDR TextBox1,\
                        WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
                        ES_AUTOHSCROLL,\
                        10,5,160,25,hWnd,EditID,hInstance,NULL
 
 
 ;второе число                       
               invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,NULL,\
                        WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
                        ES_AUTOHSCROLL,\
                        170,50,200,25,hWnd,EditID,hInstance,NULL
                        
                invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName, ADDR TextBox2,\
                        WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
                        ES_AUTOHSCROLL,\
                        10,50,160,25,hWnd,EditID,hInstance,NULL
                        
;кнопка
        mov  hwndEdit,eax
        invoke SetFocus, hwndEdit
        invoke CreateWindowEx,NULL, ADDR ButtonClassName,ADDR ButtonText,\
                        WS_CHILD or WS_VISIBLE or BS_DEFPUSHBUTTON,\
                        75,100,140,25,hWnd,ButtonID,hInstance,NULL
 
 
        mov  hwndButton,eax
    .ELSEIF uMsg==WM_COMMAND
        mov eax,wParam
        .IF lParam==0
            .IF ax==IDM_HELLO
                invoke SetWindowText,hwndEdit,ADDR TestString
                invoke SendMessage,hwndEdit,WM_KEYDOWN,VK_END,NULL
            .ELSEIF ax==IDM_CLEAR
                invoke SetWindowText,hwndEdit,NULL
            .ELSEIF  ax==IDM_GETTEXT
                invoke GetWindowText,hwndEdit,ADDR buffer,512
                        ;invoke atodw,ADDR buffer
                    invoke StrToFloat, ADDR buffer, ADDR angle        ; преобразуем из ASCII в число с плавающей точкой двойной точности в angle 
                    finit                                               ; инициализация сопроцессора
                    fld angle
                    fcos                                                    ;вычисление косинуса
                    fstp angle
                    invoke  FloatToStr, angle, ADDR buffer               
                        invoke MessageBox,NULL,ADDR buffer,ADDR AppName,MB_OK
            .ELSE
                invoke DestroyWindow,hWnd
            .ENDIF
        .ELSE
            .IF ax==ButtonID
                shr eax,16
                .IF ax==BN_CLICKED
                    invoke SendMessage,hWnd,WM_COMMAND,IDM_GETTEXT,0
                .ENDIF
            .ENDIF
        .ENDIF
    .ELSE
        invoke DefWindowProc,hWnd,uMsg,wParam,lParam
        ret
    .ENDIF
    xor    eax,eax
    ret
WndProc endp
end start
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2014, 14:58
Ответы с готовыми решениями:

програма удаления файлов в диалоговом окне!
Помогите пожалуйста написать програму удаления файлов в дилоговом режиме!

Cosh(a+b)
cosh(a+b) рассчитать с помощью команд арифметического сопроцессора. помогите пожалуйста:help:...

Xpage В Диалоговом Окне
Еще вопрос. А возможно ли отобразить xPage в диалоговом окне, которое вызывается при нажатии...

Список в диалоговом окне
У меня есть диалоговое окно со списком(идентификатор например IDC_LIST). Список инициализируется а...

Картинка в диалоговом окне
Каким способом можно отобразить графический файл(.bmp или .jpeg) в диалоговом окне???

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2014, 14:58

Изображение в диалоговом окне
Добрый день. Не как не могу разобраться как выводить изображение в диалоговом окне. В родительском...

Знак % в диалоговом окне
Как вывести в этом окне знак процента (%) ? MessageBox(Handle, PChar(Format('Текст: %.0f,...

Картинка в диалоговом окне
Как загрузить изображение в диалоговое окно


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru