Вопрос № 66143: s segment
org 100h
start:
mov ah, 09
mov dx, offset string
int 21
int 20
string db 'PRIVET$'
s ends
end start
Программа вроде верно написана
Но вот при линковке(использую MASM под виндоу...Вопрос № 66171: Начал изучать ассемблер по книге Олега Калашникова "Ассемблер?Это просто".Согласно Приложению1 из книги установил MASM 6.1.
Далее ввожу в командной строке:
>ML.EXE PROG.ASM /AT или
>ml.exe Prog01.asm /AT (чтобы ассемблиро...
Вопрос № 66.143
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
В чем дело?
поравьте, если что не так
спасибо
Отправлен: 08.12.2006, 18:33
Вопрос задал: дим (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Вiктор
Здравствуйте, дим!
Компилятор и линкер проглотят и INT 21H, и INT 21.
Но правильнее INT 21H, потому что это нужный номер прерывания. А если задавать просто 21, то когда запустите исполняемый модуль, то он зависнет (если тянет на десятичные номера, пишите 33).
А насчёт "invalid fixup found" - насколько я помню это ругательство на неверный номер. (типа запихнуть 257 в однобайтовую ячейку и т.п.). В коде на первый взгляд проблем нет. Единственное предложение - перенаберите на всякий случай все цифры ещё раз, может там буква "о" вместо нуля где-то.... (или ещё что-то такое, может русская буква вместо латиницы. А ещё посмотрите на номер строки, на которую ругается)
Попробуйте также сделать пустую програму, т.е. начало и сразу выход. Если и дальше будет ругаться, то ошибку будет легче найти (меньше вариантов), а если не будет - то добавляйте нужные строки в уже работающий код (и если заглючит - будете знать, что ошибка в них).
(P.S. сам знаю что ответ плохой, но вдруг поможет?)
--------- ни дня без строчки (но не получается)
Ответ отправил: Вiктор (статус: 10-ый класс)
Ответ отправлен: 09.12.2006, 01:16
Вопрос № 66.171
Начал изучать ассемблер по книге Олега Калашникова "Ассемблер?Это просто".Согласно Приложению1 из книги установил MASM 6.1.
Далее ввожу в командной строке:
>ML.EXE PROG.ASM /AT или
>ml.exe Prog01.asm /AT (чтобы ассемблировать пример из диска к книге)
Но выдаётся сообщение,что ml.exe не является внутренней или внешней командой,исполняемой программой или пакетным файлом.
В чём проблема? (у меня Windows XP)
Отправлен: 08.12.2006, 22:10
Вопрос задал: Andrej11 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Волков Павел Юрьевич
Здравствуйте, Andrej11!
Запускать надо в папке установленного компилятора
(в которой находятся ml.exe, link.exe) или добавить папку (компилятора) в глобальную переменную PATH.
--------- Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 10-ый класс)
Ответ отправлен: 09.12.2006, 03:22