| Autor |
Wiadomość |
Override ~user

Dołączył: 25 Sie 2009 Posty: 6
|
|
---------- 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® Windows®" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© 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® Windows®" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© 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® Windows®" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© 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® Windows®" FILE_VERSION="5.1.2600.5781 (xpsp_sp3_gdr.090321-1317)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© 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 |
|
|
|
|
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
|
MapaPowered by phpBB © 2001, 2005 phpBB Group
|
|