Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программирование под Windows

367
06 февраля 2006 года
Meatcoins
303 / / 18.01.2006
Здравствуйте!
Замучался с этой програмкой не могу её скомпилировать в exe!!!

; ml /c /coff /Cp winhello.asm
; link winhello.obj /subsystem:windows

include def32.inc
include kernel32.inc
include user32.inc

.386
.model flat
.const

hello_title db 'win32 program',0

hello_message db 'Hello world!',0
.code
_start:
push MB_ICONINFORMATION
push offset hello_title
push offset hello_message
push 0
call MessageBox

push 0
call ExitProcess
end _start

В obj получается!!!
ml /c /coff /Cp 1.asm - компилирует!!!
link32 1.obj /subsystem:windows - не компилирует и выдаёт 14 ошибок!!!
Почему-то пишет, что kernel32.lib ignored!!!
И user32.lib тоже ignored!!!
Я их делал из системных dll, которые находятся в windows\system!
Есть такой файлик lib.exe - я с помощью него делал из dll lib!!!
Что не так????????????????????
Почему ошибки????????????????????
Вот подключаемые файлы:

;user32.inc
ifdef _TASM_
includelib import32.lib
extrn MessageBoxA:near
MessageBox equ MessageBoxA
else
includelib user32.lib
extrn __imp__MessageBoxA@16:dword
MessageBox equ __imp__MessageBoxA@16
endif


; kernel32.inc
ifdef _TASM_
includelib import32.lib
; Ё¬Ґ__ ЁбЇ®«м§гҐ¬ле дг_ЄжЁ©
extrn ExitProcess:near
extrn GetStdHandle:near
extrn WriteConsoleA:near
extrn GetModuleHandleA:near
extrn lstrlen:near
extrn GetCommandLineA:near
extrn CloseHandle:near
extrn GlobalAlloc:near
extrn GlobalLock:near
extrn GlobalFree:near
extrn CreateFileA:near
extrn ReadFile:near
extrn WriteFile:near
; ЇаЁбў_Ёў__Ёп ¤«п ®Ў«ҐЈзҐ_Ёп зЁв_Ґ¬®бвЁ Є®¤_
WriteConsole equ WriteConsoleA
GetModuleHandle equ GetModuleHandleA
GetCommandLine equ GetCommandLineA
CreateFile equ CreateFileA
else
includelib kernel32.lib
; ЁбвЁ__лҐ Ё¬Ґ__ ЁбЇ®«м§гҐ¬ле дг_ЄжЁ©
extrn __imp__ExitProcess@4:dword
extrn __imp__GetStdHandle@4:dword
extrn __imp__WriteConsoleA@20:dword
extrn __imp__GetModuleHandleA@4:dword
extrn __imp__lstrlen@4:dword
extrn __imp__GetCommandLineA@0:dword
extrn __imp__CloseHandle@4:dword
extrn __imp__GlobalAlloc@8:dword
extrn __imp__GlobalLock@4:dword
extrn __imp__GlobalFree@4:dword
extrn __imp__CreateFileA@28:dword
extrn __imp__ReadFile@20:dword
extrn __imp__WriteFile@20:dword
; ЇаЁбў_Ёў__Ёп ¤«п ®Ў«ҐЈзҐ_Ёп зЁв_Ґ¬®бвЁ Є®¤_
ExitProcess equ __imp__ExitProcess@4
GetStdHandle equ __imp__GetStdHandle@4
WriteConsole equ __imp__WriteConsoleA@20
GetModuleHandle equ __imp__GetModuleHandleA@4
lstrlen equ __imp__lstrlen@4
GetCommandLine equ __imp__GetCommandLineA@0
CloseHandle equ __imp__CloseHandle@4
GlobalAlloc equ __imp__GlobalAlloc@8
GlobalLock equ __imp__GlobalLock@4
GlobalFree equ __imp__GlobalFree@4
CreateFile equ __imp__CreateFileA@28
ReadFile equ __imp__ReadFile@20
WriteFile equ __imp__WriteFile@20
endif


; def32.inc
; из winbase.h
STD_OUTPUT_HANDLE equ -11
OPEN_EXISTING equ 3
CREATE_ALWAYS equ 2
GMEM_MOVEABLE equ 2
GMEM_ZEROINIT equ 40h

; из windef.h
RECT struc
left dd ?
top dd ?
right dd ?
bottom dd ?
RECT ends

; из winerror.h
NO_ERROR equ 0
ERROR_NO_MORE_ITEMS equ 259

; из winnetwk.h
RESOURCEUSAGE_CONNECTABLE equ 1
RESOURCETYPE_ANY equ 0
RESOURCE_CONNECTED equ 1
NTRESOURCE struc
dwScope dd ?
dwType dd ?
dwDisplayType dd ?
dwUsage dd ?
lpLocalName dd ?
lpRemoteName dd ?
lpComment dd ?
lpProvider dd ?
NTRESOURCE ends

; из winnt.h
GENERIC_READ equ 80000000h
GENERIC_WRITE equ 40000000h
FILE_SHARE_READ equ 1
FILE_SHARE_WRITE equ 2
FILE_ATTRIBUTE_ARCHIVE equ 20h

; из winuser.h
MB_OK equ 0
MB_ICONINFORMATION equ 40h
IDC_ARROW equ 32512
IDI_APPLICATION equ 32512
WS_OVERLAPPEDWINDOW equ 0CF0000h
WM_DESTROY equ 2
WM_COMMAND equ 111h
WM_INITDIALOG equ 110h
WM_CLOSE equ 10h
CS_HREDRAW equ 2
CS_VREDRAW equ 1
CW_USEDEFAULT equ 80000000h
SW_SHOWNORMAL equ 1
COLOR_WINDOW equ 5
BN_CLICKED equ 0
WNDCLASSEX struc
cbSize dd ?
style dd ?
lpfnWndProc dd ?
cbClsExtra dd ?
cbWndExtra dd ?
hInstance dd ?
hIcon dd ?
hCursor dd ?
hbrBackground dd ?
lpszMenuName dd ?
lpszClassName dd ?
hIconSm dd ?
WNDCLASSEX ends
MSG struc
hwnd dd ?
message dd ?
wParam dd ?
lParam dd ?
time dd ?
pt dd ?
MSG ends

; из winuser.h
WM_CREATE equ 1
WM_ACTIVATE equ 6
WM_SETTEXT equ 0Ch
WM_GETTEXT equ 0Dh
WM_CUT equ 300h
WM_COPY equ 301h
WM_PASTE equ 302h
WM_CLEAR equ 303h
WM_UNDO equ 304h
WM_SIZE equ 5
WS_VISIBLE equ 10000000h
WS_CHILD equ 40000000h
WS_EX_CLIENTEDGE equ 200h
ES_LEFT equ 0
ES_MULTILINE equ 4
ES_AUTOHSCROLL equ 80h
ES_AUTOVSCROLL equ 40h
EM_GETHANDLE equ 0BDh
EM_GETMODIFY equ 0B8h
EM_SETMODIFY equ 0B9h
EM_UNDO equ 0C7h
EM_SETSEL equ 0B1h
MB_YESNO equ 4
MB_ICONWARNING equ 30h
IDOK equ 1
IDYES equ 6

; из commdlg.h
OFN_PATHMUSTEXIST equ 800h
OFN_FILEMUSTEXIST equ 1000h
OFN_EXPLORER equ 80000h
OFN_OVERWRITEPROMPT equ 2
OPENFILENAME struc
lStructSize dd ?
hwndOwner dd ?
_hInstance dd ?
lpstrFilter dd ?
lpstrCustomFilter dd ?
nMaxCustFilter dd ?
nFilterIndex dd ?
lpstrFile dd ?
nMaxFile dd ?
lpstrFileTitle dd ?
nMaxFileTitle dd ?
lpstrInitialDir dd ?
lpstrTitle dd ?
Flags dd ?
nFileOffset dw ?
nFileExtension dw ?
lpstrDefExt dd ?
lCustData dd ?
lpfnHook dd ?
lpTemplateName dd ?
OPENFILENAME ends
398
06 февраля 2006 года
Alexandoros
630 / / 21.10.2005
Либа в асме - это не либа импорта, а совокупность обджектников. Не надо там либ.

wasm.ru
google.com

Дерзай.
7.4K
26 февраля 2006 года
reboot
4 / / 26.02.2006
Если тебе еще нужна помощь ,то вот первая программа:
.586P
.model flat,stdcall
option casemap:none
include D:\masm32\include\windows.inc
include D:\masm32\include\user32.inc
include D:\masm32\include\kernel32.inc
include D:\masm32\include\gdi32.inc
include D:\masm32\include\masm32.inc
include D:\masm32\include\advapi32.inc
includelib D:\masm32\lib\advapi32.lib
includelib D:\masm32\lib\user32.lib
includelib D:\masm32\lib\kernel32.lib
includelib D:\masm32\lib\gdi32.lib
includelib D:\masm32\lib\masm32.lib
.data
Text db "Win32 API",0
.code
start:
invoke MessageBox,0,ADDR Text,ADDR Text,0
invoke ExitProcess,NULL
end start

Опции компиляции:
ML /c /coff winhello.asm
LINK /subsystem:windows winhello.obj
2.2K
27 февраля 2006 года
Brezhnev1980
156 / / 13.08.2005
Sovetuju skachatj MASM32 s utilitami...Prjamo tam v redaktore smozhesh Build,Link,run i t.d
Tak udobnee
(PS mnogo primerov)
MASM32 homepage
367
02 марта 2006 года
Meatcoins
303 / / 18.01.2006
Спасибо, я попробую!
Но только я не понимаю как из .dll получать .lib!
Точнее я получал, но почему-то все они 1к потом занимают! У ьеня какой-то exe'ник в Masm'е есть lib.exe называется - с помощью него и делал...
Например, kernell32.dll в kernell32.lib. Ведь нет нигде kernell32.lib! Его из .dll сделать можно как-то!
И ещё почему link /subsystem:windows???
На это мне комп ошибку выдаёт!!!
А вот на link32 /subsystem:windows он ошибку не выдаёт, но зато не компилирует - в ходе компиляции ошибки!!! Почему??? Всё как в книжке пишу!!! Можно Invoke использовать, а можно push, а потом call! Я знаю, но пока не получается!
Я ещё попытаюсь!
Спасибо за советы!!!
Masm32 я скачивал, но пока не использовал!
Попробую там!
Спасибо за ссылку! Может у меня он какой-то не такой? Могу скачать ещё разок!
1.8K
04 марта 2006 года
k3Eahn
365 / / 19.12.2005
Цитата:
Originally posted by Meatcoins
Но только я не понимаю как из .dll получать .lib!
Точнее я получал, но почему-то все они 1к потом занимают! У ьеня какой-то exe'ник в Masm'е есть lib.exe называется - с помощью него и делал...
Например, kernell32.dll в kernell32.lib. Ведь нет нигде kernell32.lib! Его из .dll сделать можно как-то!


Хм... Насколько я тебя понял тебе нужно получить либу для для dll-ки - если так то - в МАСМЕ в папке INCLUDE дол
жна быть тулза INC2L. Она на входе принимает включаемые файлы, а на выходе выдаёт либу. Ну а если же тебе надо непременно
dll в lib, то тогда тебе в поисковик со словом Dll2Lib.

Цитата:
Originally posted by Meatcoins

И ещё почему link /subsystem:windows???


Опция /SUBSYSTEM:WINDOWS говорит линкеру о том что необходимо собрать PE-файл, который может быть запущен только в подсистеме Win32(поле Subsystem заголовка IMAGE_OPTIONAL_HEADER32 равно 2).

Цитата:
Originally posted by Meatcoins


На это мне комп ошибку выдаёт!!!


А какую именно ошибку выдаёт???

Цитата:
Originally posted by Meatcoins

А вот на link32 /subsystem:windows он ошибку не выдаёт, но зато не компилирует - в ходе компиляции ошибки!!!


А я думал что компилирует компилятор(масло масленое)...:)

367
04 марта 2006 года
Meatcoins
303 / / 18.01.2006
Thank to you all a lot!!!
Спасибо вам всем ОГРОМНОЕ!!!
Вот я не въехал! Masm32 под Windows! И без всяких командных строк!!! Assemble&Link!!! Впринципе всё понятно! Но у меня остался ещё вопрос: тут используются всякие вызовы функций, которые, видимо, описаны в прикрепляемых библиотеках, а эти библиотеки ОКАЗЫВАЕТСЯ ВХОДЯТ В СОСТАВ Masm32!!! Но где взять описание функций!???? Там же ведь куча всяких функций и библиотек, а где их описание взять??? И ещё: а можно прерывания как в DOS'е использовать, например, чтоб запищать?
mov ax,0600h
mov dx,0007h
int 21h
Вот мой Hellow World!!!

MB_ICONINFORMATION equ 40h
includelib kernel32.lib
extrn __imp__ExitProcess@4:dword
ExitProcess equ __imp__ExitProcess@4
includelib user32.lib
extrn __imp__MessageBoxA@16:dword
MessageBox equ __imp__MessageBoxA@16

.386
.model flat
.const
Hi db "Window!!!",0
HiHi db "Hellow World!!!",0
.code
_start:
push MB_ICONINFORMATION
push offset Hi
push offset HiHi
push 0
call MessageBox
push 0
call ExitProcess
end _start
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог