Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пример из учебника, MASM32 v9.0 
V
    Опции темы
LavYaAll
Дата 2.8.2008, 17:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



Здравствуйте. Решил взяться за Ассемблер. Скачал и устновил для этих целей сам компилятор&линкер - MASM32 v9.0. А также IDE - MASM32 QEditor. Учебников тоже достаточно. Есть еще один небольшой мануал для изучения основ: 
Цитата

Данный справочник составлен с небольшими дополнениями, изменениями и правкой А.Климовым на 
основе рассылок О.Калашникова "Ассемблер? Это просто! Учимся программировать"! (Том I) и 
журнала WASM, созданного Aquila (Том II) на основе переводов на русский язык руководства по 
ассемблеру на MASM32, написанного неким Iczelion. 

Там вроде неплохо все обьясняется, но в конце главы была приведена программа, которая у меня не пашит. Незнаю в чем дело (номера строк естественно не вводил).
Код

(01) CSEG segment
(02) org 100h
(03)
(04) Begin:
(05)
(06)    mov ah,9
(07)    mov dx,offset Message
(08)    int 21h
(09)
(10)    int 20h
(11)
(12) Message db 'Hello, world!$'
(13) CSEG ends
(14) end Begin

Насколько я понимаю, это ведь не EXE файл должен быть на выходе, а COM. Для это применил параметр /AT. Вводил команды прямо в консоли так:
C:\masm32\bin\ml.exe C:\masm32\Hello.asm /AT
Результат:
Код

/z2
"Hello.obj" /t
"Hello.com"
NUL
LINK: warning LNK4044: unrecognized option "z2" ignored
LINK: warning LNK4044: unrecognized option "t" ignored
Hello.obj: warning LNK4033: converting object format from OMF to COFF
Hello.obj: fatal error LNK1190: invalid fixup found, type 0x0001

На этом и останавливается, не создав конечного COM файла.
А если компилю и линкую не через командную строку, а через IDE, то появляется та же ошибка, 
но без варинигов. В чем проблема? Благодарю.  smile 
PM   Вверх
W4FhLF
Дата 2.8.2008, 18:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



Ты пытаешься собрать исходник под dos для masm16 компилятором под windows masm32. 

Простейшая программа для masm32 под windows будет выглядеть так:

Код

.686
.mmx
.model flat,stdcall
option casemap:none

    include    gdi32.inc
    include kernel32.inc
    include    user32.inc
    include    windows.inc

    includelib gdi32.lib
    includelib kernel32.lib
    includelib user32.lib
    
.const

.data?

.data
    sText db "Hello world!",0
    sCaption db "Message",0
.code
start:
    invoke MessageBox, 0, offset sText, offset sCaption, MB_OK or MB_ICONINFORMATION
    invoke ExitProcess, 0
end start


Собирается таким батником:

Код

set cmpl=X:\masm32
%cmpl%\bin\ml /nologo /c /coff /Cp /I %cmpl%\include\ prog.asm
%cmpl%\bin\link /NOLOGO /ALIGN:128 /SUBSYSTEM:WINDOWS /LIBPATH:%cmpl%\lib prog.obj
del *.obj
pause
exit


Используй этот пример как скелет. 
И почаще заглядывай в masm32\examples


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
LavYaAll
Дата 2.8.2008, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



W4FhLF, спасибо. Выходит, что при помощи это компилятора нельзя будет создать COM файл?
А в книжках-то все примеры наничаются с программирования именно под дос.
PM   Вверх
W4FhLF
Дата 2.8.2008, 18:50 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



С помощью этого нельзя. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
LavYaAll
Дата 3.8.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



W4FhLF, при компиляции пишет C:\masm32\Hello.asm(6) : fatal error A1000: cannot open file : gdi32.inc

Добавлено через 1 минуту и 55 секунд
Кстати, в книге Зубкова и пару раз в инете видел, что для того чтоб вызвать 16-битную версию линкера для создания COM надо написать следующее:
Код

Для MASM (команда link должна вызывать 16-битную версию LINK.EXE):
link hello-1.obj,,NUL,,,
exe2bin hello-1.exe hello-1.com

Но не пашит. То же самое...
PM   Вверх
W4FhLF
Дата 3.8.2008, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



Цитата(LavYaAll @  3.8.2008,  11:06 Найти цитируемый пост)
W4FhLF, при компиляции пишет C:\masm32\Hello.asm(6) : fatal error A1000: cannot open file : gdi32.inc


Ну и? Тебе это ни о чём не говорит? Проверь пути к инклудам. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
LavYaAll
Дата 3.8.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



Так на месте же они.

Добавлено через 42 секунды
И еще, ты случаем не знаешь, где можно найти ассемблер от WATCOM?

Добавлено через 4 минуты и 9 секунд
А! Все есть.
PM   Вверх
W4FhLF
Дата 3.8.2008, 11:22 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



Цитата(LavYaAll @  3.8.2008,  11:16 Найти цитируемый пост)
Так на месте же они.


Компилятор так не считает smile 


Цитата(LavYaAll @  3.8.2008,  11:16 Найти цитируемый пост)
И еще, ты случаем не знаешь, где можно найти ассемблер от WATCOM?


Перва ссылка в гугле: http://www.google.com/search?q=Watcom+assembler


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
LavYaAll
Дата 3.8.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



Все верно, поменял на это:
Код

include    C:\masm32\include\gdi32.inc
include    C:\masm32\include\kernel32.inc
include    C:\masm32\include\user32.inc
include    C:\masm32\include\windows.inc

includelib C:\masm32\lib\gdi32.lib
includelib C:\masm32\lib\kernel32.lib
includelib C:\masm32\lib\user32.lib

Теперь пашит.

Добавлено через 1 минуту и 16 секунд
Цитата(W4FhLF @  3.8.2008,  13:22 Найти цитируемый пост)
Перва ссылка в гугле: http://www.google.com/search?q=Watcom+assembler 

Ага, пасиб.
PM   Вверх
W4FhLF
Дата 3.8.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



Цитата(LavYaAll @  3.8.2008,  11:22 Найти цитируемый пост)
Все верно, поменял на это


Пути до инклудов указаны в батнике. Если ты верно задал переменную %cmpl%, то полные пути в исходнике указывать не надо. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
LavYaAll
Дата 5.8.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 62
Регистрация: 1.5.2008

Репутация: нет
Всего: 1



W4FhLF
Да не, я просто компилил вручную, без батника.
PM   Вверх
Булочкин
Дата 29.12.2011, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.12.2011

Репутация: нет
Всего: нет



Цитата

W4FhLF, 
Да не, я просто компилил вручную, без батника. 

LavYaAll объясни как ты все сделал 
у меня не работает тоже учусь по учебнику Калашникова
пользуюсь масм 6.14 
путь масма лежит в d:/masm32
файл находится в d:/masm32/bin
туда же и cmd.exe скопировал
код программы точ такой же как в первом примере (в начале темы)
выходит та же ошибка только без " t"
Код

/z2
"prog.obj" /  (без t)
"prog.com"
NUL
LINK: warning LNK4044: unrecognized option "z2" ignored
Hello.obj: warning LNK4033: converting object format from OMF to COFF
Hello.obj: fatal error LNK1190: invalid fixup found, type 0x0001

то что было описано другим кодом тоже делал.  ошибка. правда не особо понял так ли делаю
сделал новый файл перекопировал код то что был здесь описан и сохранил его как proga1.asm в папке d:\masm32\bin
там же создал батник перекопировал исправил место файла и выходит вот такая ошибка
Код

D:\masm32\bin>set cmpl=d:\masm32

D:\masm32\bin>d:\masm32\bin\ml /nologo /c /coff /Cp /I d:\masm32\include\ proga1
.asm
 Assembling: proga1.asm
MASM : fatal error A1000: cannot open file : proga1.asm

D:\masm32\bin>d:\masm32\bin\link /NOLOGO /ALIGN:128 /SUBSYSTEM:WINDOWS /LIBPATH:
d:\masm32\lib prog.obj
LINK : warning LNK4108: /ALIGN specified without /DRIVER or /VXD; image may not
run
prog.obj : warning LNK4033: converting object format from OMF to COFF
prog.obj : fatal error LNK1190: invalid fixup found, type 0x0001

D:\masm32\bin>del *.obj

D:\masm32\bin>pause
Для продолжения нажмите любую клавишу . . .

что  делать?
говорят что он не подходит для создание ком файлов, якобы лучше пользователя с старыми версиями 6.11-.13 
находиля еще линкер с сайта майкрософта 
может в старом масме запустит?

Это сообщение отредактировал(а) Булочкин - 29.12.2011, 18:36
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0893 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.