Ассемблирование без секретов

ассемблирование программ на TASM'е


А нельзя ли ассемблировать нашу программу замечательным (и притом совершенно бесплатным) транслятором FASM? Увы! Различия в синтаксисе FASM'а очень значительные и без капитальной правки листинга здесь не обойтись. Вот только один пример. Широко распространенная конструкция "DB 669h DUP(?)" приводит FASM в состояние замешательства и ее приходится заменять на "rb 669h", что, несомненно, короче, но… это же сколько лишней работы по переносу делать приходится! Отсутствие offset'а мы уже отмечали. Привычных директив тоже нет. Макросредства как бы есть, но совсем не те, что в MASM'е и работают они совсем не так!

Однако, используя MASM, мы льем воду на мельницу Microsoft, а Microsoft это такая четырехсотфунтовая горилла, которая всех ебет. Какое к ней может быть отношения? Ну, отношения на самом деле бывают очень разные! Некоторые даже уверяют, что им это нравится. Дескать, у них с гориллой любовь, взаимность и полное согласие. Некоторые воспринимают горалу как объективную данность и стараются по возможности ее не замечать, ведь она совсем не злобная эта горилла, и ебет деликатно, совсем не маньячит. Другие ебут еще хуже. Но большинство гориллу все-таки ненавидит и хочет ее завалить. Что ж, вполне естественное желание, только в мире не одна горилла и после кончины m$ нас будет ебать кто-то другой... FASM не самый лучший ассемблер, тем не менее, мыщъх его любит и призывает всех его использовать.

После переделки под FASM программа будет выглядеть так:

include 'INCLUDE\win32ax.inc'

.code

start:

       push 0

       push 0

       push s0

       push 0

       call [MessageBox]

      

       push 0

       call [ExitProcess]

.data

s0 db 'hello, world',0

.end start



Содержание раздела