есть такая директива format
MZ — 16-битный формат, основной формат файлов .EXE в DOS.
NE — 16-битный формат, использовался в Windows 3.x[2], OS/2 и MS-DOS
LE — смешанный 16- и 32-битный формат, ранее использовался в OS/2 и Windows (VxD).
LX — 32-битный формат, используется в OS/2.
PE — 32- и 64-битный формат, используется в современных версиях Windows начиная с Windows NT и Windows 95.
COFF, MS COFF, MS64 COFF — объектные файлы.
ELF, ELF64 — исполняемые файлы в UNIX-подобных системах.
ARM — разработка энтузиастов, можно найти на официальном форуме.
Binary — файлы произвольной структуры. Указав смещение 100h (org 100h), можно получить исполняемый файл формата .COM. Также, с помощью format binary можно компилировать файлы данных.
вроди бы всё просто пишешь формат и компилтся тот файл который нужен,
но оказывается что всё савсем не так, эта директива меняет всю структуру построения программы
к примеру, если мы пишем такой формат
Code: Select all
format PE GUI 4.0 DLL at 7000000h on 'stub.exe'
Code: Select all
section '.text' code readable executable
section '.reloc' data discardable fixups
section '.rsrc' data readable resource from 'my.res'
и что это означает
если пишем
Code: Select all
format COFF
Code: Select all
extrn exit
extrn '__imp__MessageBoxA@16' as MessageBox:dword
public main
public start as '_start'
только вот как пользовать эти сегменты ?
как сегменты распределюутся по процессору?
для чего они нужны?
какие у них ограничения?
следующий вопрос по дерективе org
что это за директива, что она делает, почему разные значения этой директивы формируют разнае форматы файлов
что самое интересно если поставить org 100h и запустит .com программу с dos(именно dos не MS-DOS)
то можете забыть про сегментные регистры вообще они нахрен не работают
директивы use16 use32 use64
что эти дерективы делают на сколько мне известно
команды 32 это те же самые комманды что и 16 только дополненые
комманды 64 это уже другие команды
скажите когда и как эти дерективы использовать и что они в конце концов делают
директива alpha
что это за директива что она делает, что означает
переменные
директивы struc, virtual
на сколько я понал эти директи создают вирлуальную модельданнах
то есть у меня есть переменная f_string db 256 dup(0)
в ней первые 4 байта что то означают
потом ещё 2 байта что то означают
потом 8 байт что то означают
и так далее
и для того чтобы я не делал лишних действий
Code: Select all
mov bx, f_string
add bx, 4
мне нужно использовать эти директивы
только вот они не работают если использовать документацию
скажите как мне эти дерективы использовить, для того чтобы грамотно организовать даннае?