Page 2 of 10
Re: ряд вопросов по FASM
Posted: Sat Dec 17, 2011 4:51 pm
by Insolor
scuter, по поводу форматов файлов, сначала определись под какую платформу ты будешь писать?
Если под дос, то это MZ для экзешников или с org 100h в начале если для ком-файлов, если под виндовс, то это PE, если под Linux - то ELF, если под KolibriOS, то скачиваешь колибри сдк с официального сайта и смотришь как выглядят примеры программ.
Форматы NE, LE, LX тебе скорее всего не понадобятся, COFF может понадобиться для написания динамических библиотек под Колибри.
Далее ищешь учебник по ассемблеру и примеры конкретно под выбранную платформу. Обычно изучение начинают с доса, хотя можно и с колибри, тогда опять же в сдк есть примеры и мануалы.
Вообще не стоит начинать изучение с flat assembler programmer's manual, это скорее справочник, а не учебник. Там все написано максимально полно (про те же форматы файлов), а не упрощенно для понимания.
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 10:48 pm
by scuter
Mario wrote:scuter
Так не катит?
Code: Select all
align 4
vesa_block VESAInfoBlock
;-----------------------------------------------------------------------------
mov eax, [vesa_block.VESASignature]
или
mov eax, vesa_block.VESASignature
cmp [eax],byte 'V'
и не забываем про нужные include
такое дело не срабатывает,
пишет ундефайнд симбол(Undefined symbol)
может дело в это инклюде(include) который
Mario wrote:и не забываем про нужные include
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 10:52 pm
by SoUrcerer
scuter, ты вообще читаешь, что тебе пишут? Фигурные скобки нужны.
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:00 pm
by scuter
SoUrcerer wrote:scuter, ты вообще читаешь, что тебе пишут? Фигурные скобки нужны.
ты про какие скобки говоришь,
все посты несколько раз прочитал
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:08 pm
by SoUrcerer
Блин, туплю. Наоборот. Либо убирать фигурные скобки, либо ставить точки перед именами в определении структуры.
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:26 pm
by scuter
Insolor wrote:Вообще не стоит начинать изучение с flat assembler programmer's manual, это скорее справочник, а не учебник. Там все написано максимально полно (про те же форматы файлов), а не упрощенно для понимания.
flat assembler programmer's manual
это не мануал, это просто приписка(типа мы ето умеем)
и в принципе не стоит говорить такие фразы как (почетай учебник, посмотри мануал и т.п.)
вопросы были заданы максимально конкретным образом, и не относятся к мануалу
я в дейтсмительности очень благодарен
Mario IgorA за ихние ответы, они очень помогли,
а вот посты от
mike.dld только раздражать могут.
SoUrcerer wrote:Блин, туплю. Наоборот. Либо убирать фигурные скобки, либо ставить точки перед именами в определении структуры.
то есть мне надо писать структуру без скобок что бы использовать переменные через точку
то есть так
Code: Select all
struct SIZE
cx dd ?
cy dd ?
ends
mov eax, SIZE.cx
оно не работает
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:33 pm
by mike.dld
Я знаю таких людей как ты. Пока не напишешь им решение, не отстанут. А попытки заставить поработать головой ни к чему не приводят, не смотря на уверения в том, что это таки обязательно условие.
Вот тебе два примера, которые "работае":
Code: Select all
include 'struct.inc'
; ...
struct SIZE
cx dd ?
cy dd ?
ends
; ...
mov eax, SIZE.cx
Code: Select all
; ...
struc SIZE
{
.cx dd ?
.cy dd ?
}
virtual at 0
SIZE SIZE
end virtual
; ...
mov eax, SIZE.cx
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:46 pm
by scuter
Code: Select all
struc rsn
{
s db 'practes'
r db 'video'
rl = $-r
}
struc rsr
{
zs db 256 dup (?)
zr db 256 dup (?)
}
virtual at 0
rn rsn
rz rsr
end virtual
mov si, rn.s
это не работает,
ни тот ни другой пример.
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:53 pm
by scuter
Code: Select all
struc VESAInfoBlock
{
VESASignature db 'VESA' ;VESA сигнатура
VESAVersion dw ? ;версия VESA (0100h, 0102h или 0200h)
OemStringPtr dd ? ;указатель на строку с именем производителя (заканчивается "0")
Capabilities db 4 dup (?) ;флаги графических возможностей
VideoModePtr dd ? ;указатель на список видеорежимов
TotalMemory dw ? ;размер видеопамяти в 64-Кбайт блоках
; Дополнительно в VBE 2.0 добавлены поля:
OemSoftwareRev dw ? ;номер версии реализации VBE
OemVendorNamePtr dd ? ;указатель на строку с именем поставщика
OemProductNamePtr dd ? ;указатель на строку с названием продукта
OemProductRevPtr dd ? ;указатель на строку с версией продукта
Reserved db 222 dup (?) ;зарезервировано; область расширения блока
OemData db 256 dup (?) ;область данных для строк производителя
}
virtual at 0
VESA VESAInfoBlock
end virtual
mov eax, VESAVersion
вот это работает
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:55 pm
by Mario
Ты когда пишешь что не работает - пиши на что тебе FASM ругается. Скриншот сделай в крайнем уж случае. Все-же ситуации разные бывают.
Re: ряд вопросов по FASM
Posted: Mon Dec 19, 2011 11:59 pm
by mike.dld
Я человек терпеливый (иногда), даже когда меня пытаются сравнивать с дебилом, но это уже переходит границы. Объясняю последний раз то, что должно было бы уже быть давно понято.
`struc` - это ключевое слово ассемблера. При объявлении структур с его использованием, необходимо предварять имя каждого члена структуры точкой (`.`) и обрамлять список членов фигурными скобками (`{` и `}`).
`struct` - это макрос, объявленный в файле struct.inc из стандартной поставки ассемблера. При объявлении структур с его использованием, имя каждого члена структуры предварять точкой (`.`) не нужно, а заканчивать список членов нужно ещё одним макросом, `ends`.
Что из этого тебе непонятно? Внимательно ли ты прочитал мой предыдущий пост, чтобы заметить в примерах то, что я сейчас объясняю на пальцах?
Re: ряд вопросов по FASM
Posted: Tue Dec 20, 2011 12:10 am
by scuter
Mario wrote:Ты когда пишешь что не работает - пиши на что тебе FASM ругается. Скриншот сделай в крайнем уж случае. Все-же ситуации разные бывают.
scuter wrote:пишет ундефайнд симбол(Undefined symbol)
в ином случае пишет
include 'struct.inc'
error:file not found.
или
error: unexpected characters.
Re: ряд вопросов по FASM
Posted: Tue Dec 20, 2011 12:13 am
by scuter
mike.dld wrote:Я человек терпеливый (иногда), даже когда меня пытаются сравнивать с дебилом, но это уже переходит границы. Объясняю последний раз то, что должно было бы уже быть давно понято.
`struc` - это ключевое слово ассемблера. При объявлении структур с его использованием, необходимо предварять имя каждого члена структуры точкой (`.`) и обрамлять список членов фигурными скобками (`{` и `}`).
`struct` - это макрос, объявленный в файле struct.inc из стандартной поставки ассемблера. При объявлении структур с его использованием, имя каждого члена структуры предварять точкой (`.`) не нужно, а заканчивать список членов нужно ещё одним макросом, `ends`.
Что из этого тебе непонятно? Внимательно ли ты прочитал мой предыдущий пост, чтобы заметить в примерах то, что я сейчас объясняю на пальцах?
спасибо теперь понял.
mike.dld wrote:Я человек терпеливый (иногда), даже когда меня пытаются сравнивать с дебилом.
прошу прощение за аскарбление,
просто уже много времени просидел за этим делом, а результата так и не добился
спрашиваю на форуме и тут мне говорят что в мануале всё написано, а я на него уже 3-й месяц смотрю
скоро буду знать эго как "отче наш".
Re: ряд вопросов по FASM
Posted: Tue Dec 20, 2011 12:16 am
by SoUrcerer
scuter wrote:пишет ундефайнд симбол(Undefined symbol)
в ином случае пишет
include 'struct.inc'
error:file not found.
Nuff said.
Spoiler:
Всем добра в этом треде.
Re: ряд вопросов по FASM
Posted: Tue Dec 20, 2011 12:20 am
by mike.dld
Что касается ошибки "file not found", то на русский язык она переводится как "файл не найден", что в пояснении не нуждается. FASM ожидает обнаружить в кавычках полный путь к файлу ("C\abc\def.inc" или "/abc/def.inc") или же относительный путь (который не начинается со спецификации диска или символа "/"). В последнем случае, FASM пытается найти файл относительно расположения исходного файла, содержащего директиву `include`, или же, если не получилось, относительно директории, в которой был запущен сам ассемблер (то есть, рабочей директории на момент его запуска).