26.09.2018, 05:01 [+3 UTC]
в нашей команде: 2 976 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.50 (13.09.2018)

Общие новости:
24.09.2018, 16:49

Форум:
21.09.2018, 12:18

Последний вопрос:
25.09.2018, 18:19

Последний ответ:
25.09.2018, 15:34

Последняя рассылка:
25.09.2018, 16:45

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
31.12.2010, 11:51 »
корляков иван алексеевич
Поздравляю всех с Новым 2011 годом!!! Спасибо!!! за ваше внимание, понимание, своевременные ответы на все вопросы!!! крепкого вам здоровья и всего самого доброго!!!!

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 496
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 93
Kdsfofwe21
Статус: 1-й класс
Рейтинг: 44

Перейти к консультации №:
 

Консультация онлайн # 66143
Раздел: • Assembler
Автор вопроса: дим
Отправлена: 08.12.2006, 18:33
Поступило ответов: 1

s segment
org 100h
start:

mov ah, 09
mov dx, offset string
int 21
int 20

string db 'PRIVET$'

s ends
end start

Программа вроде верно написана
Но вот при линковке(использую MASM под виндоус) пишет следующее

asmmmmmm.obj:fatal error LNK1190: invalid fixup found, type 0x0001
_
Link Error

В чем дело?

поравьте, если что не так
спасибо

Состояние: Консультация закрыта

Ответ # 130701 от Вiктор

Здравствуйте, дим!
Компилятор и линкер проглотят и INT 21H, и INT 21.
Но правильнее INT 21H, потому что это нужный номер прерывания. А если задавать просто 21, то когда запустите исполняемый модуль, то он зависнет (если тянет на десятичные номера, пишите 33).
А насчёт "invalid fixup found" - насколько я помню это ругательство на неверный номер. (типа запихнуть 257 в однобайтовую ячейку и т.п.). В коде на первый взгляд проблем нет. Единственное предложение - перенаберите на всякий случай все цифры ещё раз, может там буква "о" вместо нуля где-то.... (или ещё что-то такое, может русская буква вместо латиницы. А ещё посмотрите на номер строки, на которую ругается)
Попробуйте также сделать пустую програму, т.е. начало и сразу выход. Если и дальше будет ругаться, то ошибку будет легче найти (меньше вариантов), а если не будет - то добавляйте нужные строки в уже работающий код (и если заглючит - будете знать, что ошибка в них).
(P.S. сам знаю что ответ плохой, но вдруг поможет?)


Консультировал: Вiктор
Дата отправки: 09.12.2006, 01:16

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 66143

Посетитель

ID: 21133

# 1

= общий = | 08.12.2006, 18:55 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

Единственное, к чему придерусь: INT 21H и INT 20h, всё-таки подразумевались шестнадцатеричные номера прерываний. TASM+TLINK реагирует вполне нормально (Warning: no stack)


Посетитель

ID: 27945

# 2

= общий = | 08.12.2006, 19:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

если их исправить на INT 21H и INT 20h ничего не изменится пробовал несколько раз не знаете что означает эта ошибка? invalid fixup found


Посетитель

ID: 520

# 3

= общий = | 09.12.2006, 01:26 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

ох, кажется сильно ошибся. Если компилирует нормально и выдаёт obj, то в тексте наверно ошибок нет. Ошибки при линковке, а я проглядел.... Проверьте какой линкер и ассемблер вы используете, может быть они разных типов, 16 и 32-битные? И ещё, проверьте - вы задаёте именно скомпилированный ассемблером obj-файл, а не какой-нибудь переименованный в obj некомпилированный текстовый файл? (Простите если несправиедливо подозреваю вас в ошибке, но мне кажется что если бы линкеру задать текстовый файл, то он ругался бы подобным образом). И ещё одна бредовая идея- проверьте одинаковй ли формат у obj-файлов. Вроде бы есть COFF-формат и ещё какой-то, и они несовместимы. Если вдруг ассемблер и линкер настроены на разные форматы, то я думаю линкер ругался бы подобным образом.


Посетитель

ID: 20205

# 4

= общий = | 09.12.2006, 03:16 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

>не знаете что означает эта ошибка? >invalid fixup found http://msdn2.microsoft.com/en-us/library/ha0f0278.aspx Error Message: invalid fixup found, type type Solution: The object file is corrupt. Recompile. Т.е. это сообщение говорит об испорченом объектном модуле (*.obj), может возникнуть при ошибке в библиотеках (*.lib) линковщика. Посмотрите ответы на вопрос № 18207 http://rusfaq.ru/info/question/18207 PS: исправил номера прерываний и TASM 4.1 "проглатил": tasm /m9 a.asm tlink /t a.asm


Посетитель

ID: 419

# 5

= общий = | 14.12.2006, 18:13 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

установите формат объектног офайла один и тот же для ассемблера, и для связного

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13441 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.50 от 13.09.2018