· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Выравнивание Fasm

. 1 . 2 . 3 . >>

Посл.отвђт Сообщенiе


Дата: Янв 11, 2004 18:52:07

Дело такое пишу свой бут в Fasm'e, при компиляции com получается размером меньше чем 512 байт и гадский WinImage 6.0 отказывается его использовать как бут. Нельзя ли заставить сам фасм дополнять конечный файло до 512, а то с аглицким у меня пока еще хреново в доках понимаю процентов 50. А руками уже задолбало нули вбивать до нужного размера


Дата: Янв 11, 2004 19:05:17

поробуй в конце написать
align 512

это стандартный макрос, часто в фасме юзается


Дата: Янв 11, 2004 19:18:54

Увы как был 50 бутов так и осталси паразит. :-(


Дата: Янв 11, 2004 19:24:20

ну, может поробуешь "дубовый" вариант? в начеле ставишь метку _start, в конце - _size = $ - _start. и потом rb 512 - _size.


Дата: Янв 11, 2004 19:37:55

Наверное, fasm оптимизирует :)
попробуйте:
align 512
org $-1
db 2


Дата: Янв 11, 2004 19:40:25

жаль, фасма нет щас под рукой. неужто простой алигн действительно не пашет?


Дата: Янв 11, 2004 19:40:47

rb 512 - _size
invalid instruction
Хмм Fasmw 1.50


Дата: Янв 11, 2004 19:49:28

S_T_A_S_ и твой вариант тоже в обломе.
А вообче прога такая:
org 0x7c00
use16
xor ax,ax
mov ah, 13h
mov al, 01b
mov bh, 0
mov bl, 15
mov cx, 24
mov dh, 0
mov dl, 0
mov bp, Message
int 10h
ret
Message db "System disk is infected!",0
Это шефу на дискету подарок, а то замучал уже, артефактными вирусами, да еще и дискеты в дисководе бросает.


Дата: Янв 11, 2004 19:51:33

так-с, качнул фасм, написал. вот:
format PE GUI 5.0
entry Main
_start:
Main:
        xor     eax, eax
        ret

_size = $ - _start
times 4096 - _size db 0

пашет. действительно, если в конце сырца стоит деректива резервирования байт (и видимо, не только их), то нолики в файл не добавляются. надо будет потестить :)


Дата: Янв 11, 2004 20:01:13 · Поправил: dz 3BePIOra

Grenader,
S_T_A_S_
Ваши варианты не работают в фасме 1.50...
зато работает такой:
посмотреть сколько весит файл, а затем дописать rb... иначе не получилось... Если после org 100h написать align 512 создастся файл около 260б (две инструкции по 2б). Почему так получается, я не понял...
Похоже, что смещение 100h тоже записывается в файл...


Дата: Янв 11, 2004 20:08:54

Grevgeny
Вот, работает

Добавте
times 0x7c00+512-$ db 1


Дата: Янв 11, 2004 20:09:58 · Поправил: S_T_A_S_

dz 3BePIOra
Да, мой вариант дает 513 байтов, причем и при org $-10 :(


Дата: Янв 11, 2004 20:16:36 · Поправил: Grenader

dz 3BePIOra
а ты проверял? вот, только что компилил, фасм 1.50:
org 100h
_start:
        xor     eax, eax
        ret

_size = $ - _start
times 4096 - _size db 0

на выходе - com-файл, ровно 4096 байт.

S_T_A_S_
похоже org в фасме работет только для строк вида "org 100h", а вот для игр со счетчиком он не пригоден


Дата: Янв 11, 2004 20:27:28

Grenader
Извиняюсь, не заметил последней строчки... Действительно, с ней работает!


Дата: Янв 11, 2004 20:30:37

Grenader
Мда.. действительно.. а я так на это расчитывал :(( Буду искать другие пути. Или возвращаться на masm

. 1 . 2 . 3 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.042