Сейчас на форуме: ut2004, vsv1 (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Вопрос
Посл.ответ Сообщение

Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2006 04:19
· Личное сообщение · #1

извините конечно за ламерский вопрос, но я только учусь и прошу тапками не кидаца
так вот когда я компилирую прогу на ассемблере создается файл .obj затем я его линкую
link /SUBSYSTEM:WINDOWS ***.obj и линковщик выдает ошибку 1190 . Вопрос как мне пролинковать без ошибок?




Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 18 ноября 2006 06:15
· Личное сообщение · #2

ну ты сказал, парень.. ты хоть объясни.. что линкуешь? библиотека это или файл исполняемый? с ресурсами или без?

исходник приаттачь, в конце концов...

-----
Уважайте других и пишите грамотно.




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2006 07:08
· Личное сообщение · #3

исполняемый файл, без ресурсов, кароч говорю ток начал изучать ассемблер по рассылке калашникова и самая первая прога оттуда не линкуется ни под каким видом вообще ни так LINK.EXE PROG.OBJ /t
ни даж так link /SUBSYSTEM:WINDOWS prog.obj последний вариант в другом месте прочитал, не у калашникова



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 18 ноября 2006 07:08
· Личное сообщение · #4

1190 - это ошибка fixup. Давай исходник - найдем ошибку. Иногда правда бывает, что ДОС-овую прогу пытаются masm32 компилить, т.ч. чем подробнее напишешь, тем луТчше



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 18 ноября 2006 08:34
· Личное сообщение · #5

это и есть досовская прога типа хело ворлд и кстати ml.exe prog.asm /AT туже самую ошибку линковки выдает, может я ваще в корне чего то не понимаю, просто за ассемблер только взялся

CSEG segment
org 100h
Begin:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db 'Hello, world!$'
CSEG ends
end Begin





Ранг: 120.9 (ветеран), 5thx
Активность: 0.080
Статус: Участник
Programmer and reverser

Создано: 18 ноября 2006 11:22
· Личное сообщение · #6

ты чем компилируешь? если masm32, то ты и впрямь это не скомпилишь.
для таких вещей надо TASM или старый MASM (пятой версии вроде).
или поставь что-нить типа emu8086.

-----
Уважайте других и пишите грамотно.





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 18 ноября 2006 19:33
· Личное сообщение · #7

Executioner пишет:
ты чем компилируешь? если masm32, то ты и впрямь это не скомпилишь.
для таких вещей надо TASM или старый MASM


Вобщем CenturioN тебе сюда www.kalashnikoff.ru/Assembler/prog/

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 19 ноября 2006 00:04
· Личное сообщение · #8

MACKLIA пишет:
если masm32, то ты и впрямь это не скомпилишь

Просто линкер из masm32 не делает COM файлы. Нужен либо старенький MASM, либо ипользовать
сторонний линкер - /Bl<linker> Use alternate linker



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 19 ноября 2006 02:18
· Личное сообщение · #9

CenturioN пишет:
это и есть досовская прога типа хело ворлд

CenturioN пишет:
link /SUBSYSTEM:WINDOWS ***.obj и линковщик выдает ошибку 1190 . Вопрос как мне пролинковать без ошибок?

Имхо не надо досовскую прогу компилить под винды линкером.

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 19 ноября 2006 02:27 · Поправил: AlexZ
· Личное сообщение · #10

.model tiny
.code
org 100h
start:
mov ah,9
mov dx,offset Message
int 21h
int 20h
Message db 'Hello, world!$'
end start

ml /c hello.asm


.model small
.stack 100h
.code
org 100h
start:
mov ah,9
mov dx,offset Message
int 21h
int 20h
.data
Message db 'Hello, world!$'
end start

ml /c hello.asm
link hello.obj

Первый компилит в com, второй exe. Забудь ДОС.

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2006 02:38
· Личное сообщение · #11

скачал tasm там почему то тоже не линкуется, может напишете вообще какие параметры передать линковщику чтоб .com файл получить, то чего у калашникова написано ваще не пашет



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2006 02:39
· Личное сообщение · #12

всем спасибо забейте на мой предыдущий пост, стормозил просто



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 19 ноября 2006 04:19
· Личное сообщение · #13

AlexZ пишет:
Первый компилит в com, второй exe. Забудь ДОС.

Тот линкер, который он сначала использовал не понимает tiny и все равно выдаст fixup для small.
Проверено на линкерах из 6 и 7-й студии.



Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2006 08:25
· Личное сообщение · #14

теперь такой вопрос почему при линковке следующей проги

.386
.model flat, stdcall
option casemap :none ; case sensitive
include masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib
.data
MsgBoxCaption db "It's the first your program for Win32",0
MsgBoxText db "Assembler language for Windows is a fable!",0
.code

start:
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
;invoke ExitProcess, NULL
end start

выдаются такие ошибки
1.obj : warning LNK4033: converting object format from OMF to COFF
1.obj : error LNK2001: unresolved external symbol _MessageBoxA@16
LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
1.exe : fatal error LNK1120: 2 unresolved externals



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 19 ноября 2006 10:15
· Личное сообщение · #15

CenturioN пишет:
option casemap :none ; case sensitive

это можешь не писать, а добавь компилеру опцию /cp
CenturioN пишет:
include masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib

Во-первых поставь слэш где надо, во-вторых проверь пути к МАСМ или что это у тебя там.
Масм не любит русские буквы в пути и длинные имена.

-----
Я медленно снимаю с неё UPX... *FF_User*





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 19 ноября 2006 10:32
· Личное сообщение · #16

CenturioN пишет:
теперь такой вопрос почему при линковке следующей проги ...


Какаето у тебя переходы интересные DOS -> WIN и всё за один день

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 1.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 19 ноября 2006 23:26
· Личное сообщение · #17

уж какие есть
просто учебник другой взял..




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 ноября 2006 00:28
· Личное сообщение · #18

Ты бы лучше на www.wasm.ru шел, там люди именно этем профессионально занимаются.

-----
Yann Tiersen best and do not fuck





Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 20 ноября 2006 03:43
· Личное сообщение · #19

PE_Kill пишет:
Ты бы лучше на www.wasm.ru шел, там люди именно этем профессионально занимаются


Профессионально ,никто не спорит,только для новичка большинство статей сложноваты для понимания.

-----
Что один человек сделал , другой всегда сломать может...





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 20 ноября 2006 05:36 · Поправил: PE_Kill
· Личное сообщение · #20

Там есть форум, и есть подфорум для новичков. Сам в нем иногда вопросы задаю.

-----
Yann Tiersen best and do not fuck




Ранг: 1.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 ноября 2006 07:27 · Поправил: Den_Schwarz
· Личное сообщение · #21

.386
.model flat, stdcall
option casemap:none
include masm32includewindows.inc
include masm32includekernel32.inc
includelib kernel32.lib
include masm32includeuser32.inc
includelib user32.lib

.data
MsgCaption db "Iczelion's tutorial no.2",0
MsgBoxText db "Win32 Assembly is Great!",0

.code
start:
invoke MessageBox, NULL,addr MsgBoxText, addr MsgCaption, MB_OK
invoke ExitProcess, NULL
end start

Сохраняем прогу в файле msgbox.asm
Компиляция из командной строки или .BAT-файла:
path=c:masm32in
ml /c /coff /Cp msgbox.asm
link /SUBSYSTEM:WINDOWS /LIBPATH:c:masm32lib msgbox.obj

Это взято из туториалов Iczelion'a, они есть на wasm.ru в русском переводе. Там еще много чего есть. Хороший ресурс, я по нему изучал ASM для Винды.


 eXeL@B —› Вопросы новичков —› Вопрос
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати