MASM, jak wyświetlić wynik działania

0

Witam!Mam problem z masmem, nie wiem czego ale w okienku informacyjnym nie wyświetla mi poprawnie wyniku mnożenia, zamiast liczby wyświetla mi jakieś krzaczki.

.386

.MODEL FLAT, STDCALL

OPTION CASEMAP:NONE

INCLUDE    \masm32\include\windows.inc
INCLUDE    \masm32\include\kernel32.inc
INCLUDE    \masm32\include\user32.inc
INCLUDELIB \masm32\lib\kernel32.lib
INCLUDELIB \masm32\lib\user32.lib

.DATA

MsgCaption DB "Kurs Iczeliona. Rozdział nr 2", 0
MsgBoxText DB "Asembler Win32 jest Wspaniały!", 0
mem8 BYTE 5
mem1 BYTE 5

.data?
hInstance   HINSTANCE ?
hEdit       DD ?
wynik       dword ?
hButton2    DD ?
hButton3    DD ?
hButton4    DD ?
BuforNaText dword ?
BuforNaText1 dword ?
.CODE

start:

          mov eax,5
          mov ebx,5
          mul ebx
          mov wynik,eax
	INVOKE MessageBox, NULL, ADDR wynik, ADDR MsgCaption, MB_OK
	INVOKE ExitProcess, NULL
END start 

proszę o pomoc i pozdrawiam

1

wsprintf + google

.DATA
szDecFrmt  DB "%0d", 0
szBuf      DB 8 dup (0)
;
;CIACH
;
start:
;
;CIACH
;
INVOKE wsprintf, ADDR szBuf, ADDR szDecFrmt, wynik
INVOKE MessageBox, NULL, ADDR szBuf, ADDR MsgCaption, MB_OK
;
;CIACH
;

Coś takiego z tym że zmienna wynik jest niepotrzebna zamiast tego można od razu rejestr eax,

0

dzięki wielkie działa, ale z innego problemu zrobił się albo sam zrobiłem następny, otóż mam dwa pola tekstowe i chce wpisać tam liczby i po kliknieciu je dodać, ale niestety wynik dodawania jest zły. jak mam zmienne na poczatku zadeklarowane to działa, ale jak wpisze swoje liczby to już źle liczy, czy może być tak, że zamiast wyniku podaje mi kod ascii??

 
.386
.model flat,stdcall
option casemap:none

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

.data
Klasa       db "klasa",0
Tytul       db "Program Pudziana",0
classButton db "BUTTON",0
Button2Text db "Wynik",0
Button3Text db "Wpisz",0
Button4Text db "Wyjdź",0
classEdit   db "EDIT",0
TekstPrzykladowy db "Pudzian",0
mem2 dword 4
mem1 dword 5
szDecFrmt  DB "%0d", 0
szBuf      DB 8 dup (0)

.data?
hInstance   HINSTANCE ?
hEdit       dd ?
wynik       dword ?
hButton2    dd ?
hButton3    dd ?
hButton4    dd ?
BuforNaText dword ?
BuforNaText1 dword ?

.const
EditID      equ 2
Edit1ID     equ 6
Button2ID   equ 3
Button3ID   equ 4
Button4ID   equ 5

.code
....
      invoke CreateWindowEx,WS_EX_OVERLAPPEDWINDOW,ADDR classEdit,0,\
             WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
             ES_AUTOHSCROLL,50,5,200,25,hWnd,EditID,hInstance,0
      mov    hEdit,eax
      invoke CreateWindowEx,WS_EX_OVERLAPPEDWINDOW,ADDR classEdit,0,\
             WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or\
             ES_AUTOHSCROLL,50,35,200,25,hWnd,Edit1ID,hInstance,0
      mov    hEdit,eax
      invoke CreateWindowEx,0,ADDR classButton,ADDR Button2Text,\
             WS_CHILD or WS_VISIBLE,75,70,140,25,hWnd,Button2ID,hInstance,0
      mov    hButton2,eax
      invoke CreateWindowEx,0,ADDR classButton,ADDR Button4Text,\
             WS_CHILD or WS_VISIBLE,75,100,140,25,hWnd,Button4ID,hInstance,0
      mov    hButton4,eax

.......



.ELSEIF ax==Button2ID
          invoke GetDlgItemText,hWnd,EditID,addr BuforNaText,512
          invoke GetDlgItemText,hWnd,Edit1ID,addr BuforNaText1,512
          mov eax,BuforNaText
          mov ebx,BuforNaText1
          mul ebx
          mov wynik,eax
          INVOKE wsprintf, ADDR szBuf, ADDR szDecFrmt, wynik
          invoke MessageBox,hWnd,addr szBuf,addr Tytul,MB_OK or MB_ICONEXCLAMATION
      .ENDIF

edit zauwazylem gdy zmiast wynik wpisze buffornatext to wyswietla mi inna liczbe niz podalem, np gdy podaje 1, to wyswietla 49, podaje 2 wyswietla 50, podaje 3 wyswietla 51 itd
INVOKE wsprintf, ADDR szBuf, ADDR szDecFrmt, BuforNaText

1

GetDlgItemInt + Google

;
;CIACH
;
invoke GetDlgItemInt, hWnd, EditID, NULL, FALSE
push eax
invoke GetDlgItemInt, hWnd, Edit1ID, NULL, FALSE
mov ebx, eax
pop eax
;
;CIACH
;

W rejestrze eax powinna być liczba z EditID a w ebx Edit1ID
Pisane z głowy ale powinno działać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1