[WinApi asm]Biblioteki windows i asembler

 
Napisz nowy tematOdpowiedz do tematu    Forum programistyczne Programmers Zone Strona Główna -> Assembler
Autor Wiadomość
Override
~user




Dołączył: 25 Sie 2009
Posty: 6


PostWysłany: 09-02-10 18:30 Zacytuj zaznaczone Odpowiedz z cytatem

---------- 19:58 08.02.2010 ----------

Mam mały problem odnośnie asemblera pod Windowsem.
Napisałem taki mały program:
asm:
push dword 0
push dword 4
call GlobalAlloc
mov ebx, eax

mov dword [eax], 0x41
mov dword [eax+1], 0x42
mov dword [eax+2], 0x43
mov dword [eax+3], ox0

push dword 0
push dword plik
push dword eax
push dword 0
call MessageBoxA

push dword ebx
call GlobalFree

push dword 0
call ExitProcess


Po za alokowaniu pamięci chciałem do niej przenieść 4 znaki ASCII
A,B,C,0, następnie je wyświetlić.
Po uruchomieniu programu wyskakują błędy i się program wyłącza.
Błędy:
XML:
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="03.exe" FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="03.exe" SIZE="55296" CHECKSUM="0xB43A1508" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="02/08/2010 17:53:27" UPTO_LINK_DATE="02/08/2010 17:53:27" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="1018368" CHECKSUM="0x362CC3BB" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Biblioteka DLL klienta Windows NT BASE API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="System operacyjny Microsoft&#174; Windows&#174;" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="&#169; Microsoft Corporation. Wszelkie prawa zastrzeżone." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x103A91" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:08:59" UPTO_LINK_DATE="03/21/2009 14:08:59" VER_LANGUAGE="Polski [0x415]" />
</EXE>
</DATABASE>




<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="03.exe" FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="03.exe" SIZE="55296" CHECKSUM="0xB43A1508" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="02/08/2010 17:53:27" UPTO_LINK_DATE="02/08/2010 17:53:27" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="1018368" CHECKSUM="0x362CC3BB" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Biblioteka DLL klienta Windows NT BASE API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="System operacyjny Microsoft&#174; Windows&#174;" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="&#169; Microsoft Corporation. Wszelkie prawa zastrzeżone." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x103A91" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:08:59" UPTO_LINK_DATE="03/21/2009 14:08:59" VER_LANGUAGE="Polski [0x415]" />
</EXE>
</DATABASE>


<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="03.exe" FILTER="GRABMI_FILTER_PRIVACY">
    <MATCHING_FILE NAME="03.exe" SIZE="55296" CHECKSUM="0xB43A1508" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="02/08/2010 17:53:27" UPTO_LINK_DATE="02/08/2010 17:53:27" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="1018368" CHECKSUM="0x362CC3BB" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Biblioteka DLL klienta Windows NT BASE API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="System operacyjny Microsoft&#174; Windows&#174;" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="&#169; Microsoft Corporation. Wszelkie prawa zastrzeżone." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x103A91" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:08:59" UPTO_LINK_DATE="03/21/2009 14:08:59" VER_LANGUAGE="Polski [0x415]" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
    <MATCHING_FILE NAME="kernel32.dll" SIZE="1018368" CHECKSUM="0x362CC3BB" BIN_FILE_VERSION="5.1.2600.5781" BIN_PRODUCT_VERSION="5.1.2600.5781" PRODUCT_VERSION="5.1.2600.5781" FILE_DESCRIPTION="Biblioteka DLL klienta Windows NT BASE API" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="System operacyjny Microsoft&#174; Windows&#174;" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="&#169; Microsoft Corporation. Wszelkie prawa zastrzeżone." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x103A91" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.5781" UPTO_BIN_PRODUCT_VERSION="5.1.2600.5781" LINK_DATE="03/21/2009 14:08:59" UPTO_LINK_DATE="03/21/2009 14:08:59" VER_LANGUAGE="Polski [0x415]" />
</EXE>
</DATABASE>


Kompilacja:
Cytat:
nasm 03.asm -f obj -o 03.obj
bcc32.exe -L"C:\Program Files\Borland\BDS\4.0\lib" -L"C:\Program Files\Borland\BDS\4.0\lib\psdk" 03.obj user32.lib kernel32.lib


Wszystkie biblioteki zaimportowane.

Czy to może być wina systemu, czy kompilatora Bcc32 lub nasm, bo ten sam kod przepisałem do c++ i mi działał.

---------- 18:30 09.02.2010 ----------

Błąd leżał w kodzie:
asm:
push dword 4
push dword 0
call GlobalAlloc

Zapomniałem o odwróconej kolejności podawania parametrów w Asemblerze.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Napisz nowy tematOdpowiedz do tematu    Forum programistyczne Programmers Zone Strona Główna -> Assembler Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Mapa
Powered by phpBB © 2001, 2005 phpBB Group

 Polecane strony