Fasm для windows 7 x64

Fasm для windows 7 x64

Программирование на Ассемблере я начинал с Turbo Assembler (TASM) под MS-DOS, сейчас пишу на Flat Assembler (FASM) под Windows. Это очень удобный и мощный пакет для разработки, бесплатный для любого использования. Написан полностью на самом себе, исходники прилагаются. Мне он нравится тем, что позволяет хранить код и описания ресурсов в одном ASM-файле, поддерживает макросы, генерит чистый машинный код без всякой незаявленной самодеятельности, не требует лишней рутинной работы типа прописывания каждой задействованной функции в секцию импорта и еще множество приятных мелочей, облегчающих жизнь программисту. Единственным недостатком является отсутствие достаточного количества готовых исходников, например по сравнению с тем же MASM’ом, а портирование исходников с других платформ на FASM иногда вызывает затруднения. Но на мой взгляд портирование, в отличие от копирования, помогает гораздо лучше изучить язык. Несколько исходников-примеров есть в самом дистрибутиве FASM, еще несколько примеров можно скачать с офсайта или поискать в Интернете. Ответы на многие возникающие вопросы можно найти на официальном форуме FASM. Форум англоязычный, но на нем немало наших соотечественников. К новичкам на форуме относятся хорошо и отвечают даже на самые глупые вопросы.

Для установки Flat Assembler скачайте дистрибутив с офсайта (около 800 килобайт). На момент публикации версия FASM 1.67.27, если ссылка изменится, то можете посмотреть обновление на странице загрузки. Там же можно скачать версии FASM для Linux, Unix и MS-DOS. Бесплатный add-on FASMARM к FASM для работы с ARM можно найти здесь, текущая версия FASMARM 1.12. Инсталлятора нет, программа устанавливается простым извлечением из архива в какое-нибудь удобное для вас место, например C:\FASM. Обязательно скачайте справочник Microsoft Win32 Programmer’s Reference, распакуйте его в папку с FASM’ом. Для удобства можно сделать вложенную папку \help.

Microsoft Win32 Programmer’s Reference

Техническую документацию по FASM на английском языке можно скачать с офсайта, на русском языке есть вот такие мануалы:

Основной мануал Flat Assembler 1.64

Руководство по препроцессору FASM

FASM 1.64: Руководство программиста

Для продвинутых программистов могу порекомендовать справочник Windows NT/2000 Native API Reference на английском языке:

Windows NT/2000 Native API Reference

Ассемблер для процессоров Intel Pentium

Ассемблер для DOS, Windows и Unix

Ассемблер & Win32. Курс молодого бойца

Учебник по основам языка Ассемблера

Учебник по языку Ассемблер в задачах и примерах

Intel Hex Opcodes And Mnemonics

x86 Instruction Set Reference

И напоследок две книги из категории «must have». Их, конечно, лучше иметь в бумажном варианте в качестве настольных справочников, но электронные версии тоже вполне подойдут. Книги залиты на файлообменник. Обе книги на русском языке, в хорошем качестве.

При первом запуске FASM создаст файл настроек FASMW.INI, откройте его для редактирования в Блокноте. В конец файла надо будет добавить две новых секции. Сперва пропишите полный путь к Win32 Programmer’s Reference:

После этого надо установить необходимые переменные окружения и пути для подключаемых файлов. Например у меня прописаны вот такие:

[Environment]
include=»C:\FASM\INCLUDE»
music=»C:\FASM\KEYGEN\XM_FILES»
ufmod=»C:\FASM\INCLUDE\MUSIC»

Переменная include обязательная, остальные для удобства. Теперь при написании программ вместо абсолютных путей можно (и нужно) использовать относительные:

Источник

MASM, TASM, FASM, NASM под Windows и Linux

В данной статье я хочу рассмотреть вопросы, которые могут возникнуть у человека, приступившего к изучению ассемблера, связанные с установкой различных трансляторов и трансляцией программ под Windows и Linux, а также указать ссылки на ресурсы и книги, посвященные изучению данной темы.

Используется для создания драйверов под Windows.

По ссылке переходим на сайт и скачиваем пакет (masm32v11r.zip). После инсталляции программы на диске создается папка с нашим пакетом C:\masm32. Создадим программу prog11.asm, которая ничего не делает.

Произведём ассемблирование (трансляцию) файла prog11.asm, используя ассемблер с сайта masm32.


Ключ /coff используется здесь для трансляции 32-битных программ.
Линковка производится командой link /subsystem:windows prog11.obj (link /subsystem:console prog11.obj)

MASM — один из немногих инструментов разработки Microsoft, для которых не было отдельных 16- и 32-битных версий.

Также ассемблер версии 6. можно взять на сайте Кипа Ирвина kipirvine.com/asm, автора книги «Язык ассемблера для процессоров Intel».

Кстати, вот ссылка на личный сайт Владислава Пирогова, автора книги “Ассемблер для Windows”.

MASM с сайта Microsoft

Открываем этот файл архиватором (например 7zip). Внутри видим файл setup.exe, извлекаем его, открываем архиватором. Внутри видим два файла vc_masm.msi,vc_masm1.cab. Извлекаем файл vc_masm1.cab, открываем архиватором. Внутри видим файл FL_ml_exe_____X86.3643236F_FC70_11D3_A536_0090278A1BB8. Переименовываем его в файл fl_ml.exe, далее, произведём ассемблирование файла prog11.asm, используя ассемблер fl_ml.exe.

MASM в Visual Studio

Также MASM можно найти в папке с Visual Studio (у меня VS 10) вот здесь: C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\ml.exe.

Для того, чтобы запустить на 32- или 64-разрядной системе и создавать программы, работающие как под 32-, так и под 64-разрядной Windows, подходит MASM32 (ml.exe, fl_ml.exe). Для того, чтобы работать на 32- и 64-разрядных системах и создавать программы, работающие под 64-разрядной Windows, но неработающие под 32-разрядной нужен ассемблер ml64.exe. Лежит в папке C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64 и вот здесь — C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\x86_amd64.

Программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. В настоящее время Borland прекратила распространение своего ассемблера.

Скачать можно, например, здесь. Инсталлятора нет, просто извлекаем программу. Вот исходник из книги Питера Абеля (рис. 3.2) «Язык Ассемблера для IBM PC и программирования».

Выполним ассемблирование (трансляцию) файла abel32.asm.

Корректность работы программы можно проверить, произведя линковку (tlink.exe) объектного файла и запустив полученный файл в отладчике.

Как было сказано выше, MASM можно использовать для работы с 16-битными программами. Выполним ассемблирование (трансляцию) программы abel32.asm с помощью ассемблера MASM:

Ключ /coff здесь не используется.
Линковка производится файлом link16.exe

В статье Криса Касперски «Сравнение ассемблерных трансляторов» написано, что «FASM — неординарный и весьма самобытный, но увы, игрушечный ассемблер. Пригоден для мелких задач типа „hello, world“, вирусов, демок и прочих произведений хакерского творчества.»

Скачаем FASM с официального сайта. Инсталлятора нет, просто извлекаем программу. Откроем fasm editor — C:\fasm\fasmw.exe. В папке C:\fasm\EXAMPLES\HELLO есть файл HELLO.asm.

Откроем файл HELLO.asm из fasmw.exe. Изменим строку include ‘win32ax.inc’ на строку include ‘c:\fasm\INCLUDE\WIN32AX.INC’. Запускаем из меню Run → Run.

Вот ссылки на ресурсы, посвященные FASM:

Для того, использовать FASM в Linux (у меня Ubuntu), скачаем соответствующий дистрибутив (fasm-1.71.60.tgz), распакуем его, в папке у нас будет бинарный файл fasm, копируем этот файл в /usr/local/bin для того, чтобы можно было запускать его из консоли, как любую другую команду.Выполним ассемблирование программы hello.asm из папки fasm/examples/elfexe/hello.asm.

Читайте также:  Scarface игра на windows 7

Корректность работы программы можно проверить в отладчике.

Nasm успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером Gas.

Nasm в Linux можно установить его с помощью менеджера пакетов или из командной строки: в дистрибутиве Debian (Ubuntu) командой apt-get install nasm, в дистрибутивах Fedora, CentOS, RedHat командой yum install nasm.

Создадим программу, которая 5 раз выводит сообщение “Hello”. Пример взят из книги Андрея Викторовича Столярова “Программирование на языке ассемблера NASM для ОС UNIX”. Учебник, а также библиотека “stud_io.inc” есть на личном сайте автора.

Выполним ассемблирование и линковку и запустим файл hello.asm.

NASM для Windows можно установить, скачав соответствующий дистрибутив с соответствующего сайта.

Ссылки на ресурсы, посвященные Nasm:

Стандартный ассемблер практически во всех разновидностях UNIX, в том числе Linux и BSD. Свободная версия этого ассемблера называется GAS (GNU assembler). Позволяет транслировать программы с помощью компилятора GCC.

Из учебников удалось найти только книгу на английском «Programming from the ground up». На русском удалось найти только одну главу из книги С. Зубкова «Assembler для DOS, Windows и UNIX».

Возьмем пример программы, которая ничего не делает, с сайта. Создадим программу gas.s

Выполним ассемблирование (трансляцию), линковку и запуск программы:

Если в данной программе изменить _start на main, то можно выполнить ассемблирование (трансляцию) и линковку компилятором gcc.

Выполним ассемблирование (трансляцию), линковку и запуск программы:

Выводы: если вы изучаете программирование под Windows, то вы можете остановить свой выбор на Masm; Tasm больше не поддерживается, но для обучения по старым классическим учебникам подойдёт.
Под Linux Gas подойдет тем, кто использует GCC, а тем, кому не нравится синтаксис Gas, подойдёт Nasm.

Источник

FasmWorld Программирование на ассемблере FASM для начинающих и не только

Учебный курс. Часть 1. Необходимые инструменты

Автор: xrnd | Рубрика: Учебный курс | 30-01-2010 | Распечатать запись

Учиться программировать начнем с процессора Intel 8086. Будем писать программы под DOS 🙂 Программирование под Windows и Linux сложнее, а нам надо с чего-то начинать. Поэтому начнем с простого и понятного 16-битного процессора 8086.

Практическая ценность от программирования под DOS в наше время не очень большая, если вы, конечно, не собираетесь тесно работать с этой операционной системой. Но она позволит нам быстро освоить основы ассемблера, а потом мы уже перейдем к программированию под 32-битные системы.

Все программы учебного курса вы сможете запустить под Windows. Конечно, реально они будут работать в эмуляторе DOS, в режиме виртуального процессора 8086. Но для учебных целей это вполне подойдёт.

Для программирования на ассемблере нам прежде всего необходим компилятор. Наиболее известные компиляторы это TASM, MASM и FASM. В моем учебном курсе я буду использовать FASM. Это довольно новый, удобный, быстро развивающийся компилятор ассемблера, написанный на себе самом 🙂 Его преимущества – это поддержка сложных макросов и мультиплатформенность. Есть версии под DOS, Windows и Linux, что меня особенно радует )

С его помощью можно сгенерировать файл любого формата, не обязательно исполняемый файл, так что FASM – это превосходный инструмент для экспериментов и исследований.

Последнюю версию FASM’a можно скачать с официального сайта http://flatassembler.net.

На момент написания этой статьи последняя версия 1.68. Можно скачать с моего сайта (версия под Windows). Все программы учебного курса я буду компилить этой версией. Хотя наверно и другими получится ))) Для установки содержимое архива надо распаковать в какую-нибудь папку. Например, у меня это будет папка C:\FASM.

Для отладки написанных программ будем использовать старый добрый Turbo Debugger из пакета TASM. Скачать можно с моего сайта. Архив также надо распаковать в какую-нибудь папку. У меня это будет
C:\TD.

Также от вас потребуется голова, прямые руки и желание ковыряться в ассемблерных командах! 🙂 Любые вопросы по теме можно писать в комментариях к статьям. Я постараюсь на все ответить. Можете писать мне на почту xrndfasmworld.ru

Желаю удачи, в следующей статье начнем писать нашу первую программу.

Источник

fasm, win 7 64, процессор 64

Процессор для Win 8
Имеется старенький комп: мать EP-4PDA3I-3, процессор Intel Pentium 4 3,0 Ghz, DDR 1 гиг, ОС.

Процессор,проги,win 7?
Привет, у меня возник вопрос. Когда давал на сборку мне новых внутренностей поставили на 4х ядерку.

Win 10 Грузит Процессор на 100%
Привет,я уже весь ютуб обшарил но ответа не нашел в чем проблема. У меня стоит вин 10 про х64 (При.

Как установить win 7 на новый биус с процессор I7 7700HQ
Добрый день ребята, кто знает как поставить вин 7 на новый биус с процессором I7 7700HQ купил ноут.

фасм может генерировать код следующих разрядностей: 16, 32, 64.

информацию найдете в книге Р. Аблязова «Программирование на ассемблере на платформе x86-64»

http://www.intel.com/content/w. anual.html
В основном всё те же команды, расширеные до обработки 4 слов (64 бит) в т.ч. сканирование строк, пересылка оных и пр. хуерга. исчезли команды PUSHAD, POPAD
Азы.
http://pirogov-vju.livejournal.com/1128.html]

Удобная прога для написания кода с болванками в т.ч. под 64 бита
http://asmworld.ru/instrumenty/fasm-editor-2-0/

Про регистры их половинки, четвертушки, осьмушки. К примеру у новых регистров R8-R15 нет старших осьмушек типа AH, BH и т.д. а есть просто осьмушки R8d, R9d и т.д.
http://www.cracklab.ru/faq/Регистр

Куда уж Intel до логичности и простоты системы комманд PDP-11/VAX-11, к примеру. Там одни режимы адресации многого стоят. И пересылка память-память была всегда.

Добавлено через 4 минуты

Добавлено через 4 минуты

Разве что микроконтроллеры MSP430 от TI есть. Душу греет.

Добавлено через 3 минуты

Полный 30h, дело даже не в том, что 32 или 64 бита. Нет в системе комманд X86-64 хорошей структурированности, система комманд негибкая и состоит из сплошных исключений и умолчаний с договорённостями.

Полный 30h, что скажешь?

Добавлено через 1 минуту
как я уже писал плюса только два: 64 битные числа и неограниченное пространство памяти.

Добавлено через 8 минут
дескриптор сегмента занимает 8 байт. реально из него используется только 13 бит(!). совместимость.

Добавлено через 4 минуты
Оо, еще один идиотизм вычитал: по идее установить грацу сегмента в лонг моде нельзя. но для регистров FS и GS можно. И зачем они там нужны?

Добавлено через 8 минут
все драйверы в вин64 должны быть 64 битными. собственно переписывать все равно придется. совместимости нету, да еще и вызов процедур изговняли.

Источник

Мануал по flat assembler

перевод выполнили Paranoik и Mikl___

Вложения

FASM.PDF (505.8 Кб, 929 просмотров)

Неофициальная разработка Flat assembler версии 2.0.0
Разработчик Flat assembler’a Tomasz Grysztar в одном из блогов сообщил о разработке новой.

Flat assembler ругается на PROC
Доброго времени суток. Есть программа, собственно вот что она делает: «На экране инициализировать.

Как подключить include к flat компилятору
Здравствуйте,как подключить include к flat компилятору?Требуется подключить include ‘win32a.inc’ к.

Flat Assembler
Со временем задачи стали нерешаемыми из-за ужасно медленной скорости. Уже давно хочу перейти на.

Читайте также:  Acdsee photo manager для windows 10

Решение

Эта глава содержит всю важнейшую информацию, которая понадобится вам, чтобы начать использовать flat assembler (FASM). Если у вас уже есть опыт программирования на ассемблере, вам достаточно прочитать лишь первую главу перед использованием этого компилятора.

FASM написан на самом себе, обладает небольшими размерами и очень высокой скоростью компиляции, имеет богатый и емкий макро-синтаксис, позволяющий автоматизировать множество рутинных задач. Поддерживаются как объектные форматы, так и форматы исполняемых файлов. Это позволяет в большинстве случаев обойтись без линкера. В остальных случаях нужно использовать сторонние линкеры, поскольку линкер вместе с FASM не распространяется.

Этот документ описывает также IDE версию, разработанную для операционной системы Windows, которая использует графический интерфейс взамен консольного и обладает встроенным текстовым редактором. С точки зрения компиляции она обладает в точности такой же функциональностью как и все консольные версии, и дальнейшие части (начиная с 1.2) этого документа являются общими для всех версий компилятора. Исполняемый файл IDE версии называется fasmw.exe, в то время как консольная версия называется fasm.exe.

Вложения

FASM.PDF (505.8 Кб, 209 просмотров)

Все версии требуют для своей работы 32-битного процессора архитектуры x86 (как минимум 80386), хотя могут также генерировать программы и для 16-битных процессоров. Консольная версия компилятора требует для работы любую Win32 совместимую операционную систему, в то время как версия с графическим интерфейсом требует Win32 GUI операционную систему версии 4.0 и выше, так что компилятор будет работать на любой системе начиная с Windows 95 и выше.

Исходные коды программ-примеров поставляемые с этой версией компилятора для успешной компиляции требуют, чтобы переменная окружения INCLUDE хранила полный путь к папке include, которая является частью пакета. Если такая переменная уже существует в вашей системе и содержит пути используемые другой программой, достаточно добавить к ней новый путь (разные пути разделяются точкой с запятой). Если вы не хотите определять такую переменную в системе, или не знаете как это сделать, то для IDE версии вы можете установить её редактированием файла fasmw.ini в папке с исполняемым файлом компилятора (этот файл создаётся компилятором fasmw.exe при запуске, но может также быть создан вручную). В этом случае вам необходимо добавить значение Include в секцию Environment. Например, если вы распаковали файлы FASM’а в папку c:\fasmw, вы должны добавить следующие строки в файл c:\fasmw\fasmw.ini:

Если вы не определите переменную окружения INCLUDE правильно, вам придется вручную указывать полный путь к заголовочным файлам Win32 в каждой программе, которую вы хотите скомпилировать.

Для того, чтобы начать работать с FASM’ом, просто запустите файл fasmw.exe, или перетащите иконку исходного файла на ярлык программы fasmw.exe в проводнике. Также вы можете открывать новые исходные файлы с помощью команды Open в меню File, или перетаскивая файлы в окно редактора. В редакторе могут быть открыты несколько файлов одновременно, каждый из них представляется закладкой в нижней части окна редактора. Выбрать файл для редактирования можно щёлкнув левой кнопкой мыши на соответствующей закладке. По умолчанию компилятор работает с редактируемым в данный момент файлом, но вы можете принудить его работать с конкретным файлом щёлкнув на соответствующей закладке правой кнопкой мыши и выбрав в контекстном меню пункт Assign. Одновременно к компилятору может быть привязан только один файл.

Когда ваш исходный файл готов, вы можете выполнить компиляцию выбрав команду Compile из меню Run. Если компиляция пройдет успешно, компилятор отобразит окно результатов компиляции; иначе он выведет информацию о произошедших ошибках. Окно результатов компиляции содержит информацию о количестве проходов, длительности компиляции и количестве байт записанных в результирующий файл. Оно также содержит текстовое поле называемое Display, в котором отображаются все сообщения от директив display в исходном коде (см. 2.2.3). Сводка ошибок содержит как минимум сообщение об ошибке и текстовое поле Display, того же назначения. Если ошибка связана с конкретной строкой исходного кода, сводка содержит также текстовое поле Instruction, которое содержит препроцессированную форму инструкции вызвавшей ошибку если ошибка произошла после стадии препроцессора (иначе поле пустое) и список Source, который показывает расположение всех строк исходного кода связанных с этой ошибкой, если вы выберете строку из этого списка, она одновременно выбрана в окне редактора (если соответствующий файл не открыт, он будет автоматически загружен).

Команда Run также выполняет компиляцию, и в случае успешного её завершения запускает скомпилированную программу в том случае, если она относится к одному из форматов, запускаемых в среде Windows, иначе выводится сообщение о том, что такой тип файла не может быть запущен. Если при компиляции возникают ошибки, выводится сводка по ошибкам, как для команды Compile.

Если компилятору не хватает памяти, вы можете увеличить используемый её объём, открыв окно Compiler Setup из меню Options. В нем вы можете указать объём памяти в килобайтах который компилятор должен использовать и также задать приоритет потока компилятора.

Перемещение курсора по тексту программы:
Left перейти на один символ назад
Right перейти на один символ вперед
Up перейти на одну строку выше
Down перейти на одну строку ниже
Ctrl+Left перейти на одно слово назад
Ctrl+Right перейти на одно слово вперед
Home перейти на первый символ строки
End перейти на последний символ строки
PageUp перейти на один экран вверх
PageDown перейти на один экран вниз
Ctrl+Home перейти на первую строку экрана
Ctrl+End перейти на последнюю строку экрана
Ctrl+PageUp перейти на первую строку программы
Ctrl+PageDown перейти на последнюю строку программы

Each of the movement keys pressed with Shift selects text.

Редактирование:
Insert переключение режима вставка/замена
Alt+Insert переключение между вертикальными/горизонтальным выделением
Delete удалить текущий символ
Backspace удалить предыдущий символ
Ctrl+Backspace удалить предыдущее слово
Alt+Backspace отменить предыдущее действие (также Ctrl+Z)
Alt+Shift+Backspace повторить отмену предыдущего действия (также Ctrl+Shift+Z)
Ctrl+Y удалить текущую строку
F6 дублировать текущую строку

Операции с выделенными фрагментами:
Ctrl+Insert Копировать выделенный фрагмент в Буфер Обмена (также Ctrl+C)
Shift+Insert Вставить содержимое Буфера Обмена в заданное место (также Ctrl+V)
Ctrl+Delete Удалить выделенный фрагмент
Shift+Delete «Вырезает» выделенный фрагмент и помещает его в Буфер Обмена (также Ctrl+X)
Ctrl+A Выделить весь текст программы

Поиск:
F5 перейти на заданную строку (также Ctrl+G)
F7 поиск (также Ctrl+F)
Shift+F7 поиск следующего (также F3)
Ctrl+F7 замена (также Ctrl+H)

Компиляция:
F9 компилировать и запустить
Ctrl+F9 только компилировать
Shift+F9 сделать выбранный файл основным для компиляции
Ctrl+F8 компиляция с добавлением отладочной информации

Другие клавиши:
F2 сохранить текущий файл
Shift+F2 сохранить файл под новым именем
F4 загрузить файл
Ctrl+N создать новый файл
Ctrl+Tab переключиться на следующий файл
Ctrl+Shift+Tab переключиться на предыдущий файл
Alt+5 переключиться на файл с заданной вкладки
Esc закрыть текущий файл
Alt+X закрыть все файлы и выйти из программы
Ctrl+F6 вызвать калькулятор
Alt+Left arrow scroll left
Alt+Right arrow scroll right
Alt+Up arrow scroll up
Alt+Down arrow scroll down

Специфические клавиши:
F1 поиск ключевого слова в выбранной справочной системе
Alt+F1 вызов контекстной помощи

1.1.4 Настройка IDE

В меню Options также содержится список опций редактора, который может быть включен или выключен в зависимости от текущего состояния редактора. В этом разделе описываются эти опции.

Secure selection ― Это вариант, когда вы включаете, выделенный фрагмент никогда не будет удален, если вы начинаете набирать текст на клавиатуре. Когда вы делаете любой текстовый-операцию изменения, выбор будет отменен, ни в коем случае, влияющие Это был текст выбран, и тогда команда выполняется. Когда эта опция выключена, и вы начинаете набирать, текущее выделение отбрасывается, просто Также клавиша Del удаляет выделенный блок (когда выбор будет на безопасной Вы должны использовать Ctrl + Del).

Автоматические скобки ― когда вы набираете открытую скобку любого типа, закрыв один будет автоматически переведен только после вставки.

Автоматические отступы ― При нажатии Enter, чтобы начать новую строку, каретка перемещается в новую строку в том же положении, в предыдущей строке, где первый непустой символ помещается. Если вы нарушаете строку, и были некоторые непустые символы после вставки, когда вы нажимаете Enter, они перемещаются в новую строку в положении отступа, ни пробелов, которые между кареткой и их игнорируются.

Смарт табуляция ― при нажатии Tab, он перемещает вас в положение чуть ниже следующей последовательности символов, кроме пробелов в указанном выше начиная с позиции чуть выше, где вы были строка. Если такой последовательности не найдена в строке выше, стандартный размер табуляции 8 символов используется.

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

«Оживление мертвых клавиш» ― когда эта опция включена, она отключает окна редактора так называемые «мертвые ключи» (ключи, которые не сразу генерируют символ, но ждать следующего нажатия клавиши, чтобы решить, какой знак надо поставить ― как правило, вы вводите символ мертвого ключа при нажатии на клавишу пробела после него). Это может быть полезно, если ключ для ввода некоторых персонажей, которые вам нужно ввести часто в источнике сборки мертвый ключ и вам не нужно эту функцию для написания программ.

Как было сказано выше, после успешной компиляции FASM выводит на экран сводку о проделанной работе. Она включает информацию о том, сколько было сделано проходов, сколько времени это заняло, и сколько байт записано в файл-адресат.
Вот пример такой сводки:

В случае ошибки во время компиляции, программа выведет на экран сообщение об ошибке. Например, когда компилятор не может найти файл ввода, он покажет следующее сообщение:

Если ошибка связана с определенной частью кода, будет выведена строка, которая её вызвала. Также, чтобы помочь вам найти эту ошибку, будет показано место этой строки в коде, например:

Это значит, что в третьей строке файла «example.asm» компилятор встретил неопознанную инструкцию. Если строка, вызвавшая ошибку, содержит макрос, также будет выведена строка в формулировке макроса, которая сгенерировала ошибочную инструкцию:

Это значит, что макрос в шестой строке файла «example.asm» создал неопознанную инструкцию в первой строке своей формулировки.

По умолчанию, если в исходнике нет директивы «format», flat assembler направляет сгенерированный код на вывод, создавая таким образом простой двоичный файл. По умолчанию он создает 16-битный код, но вы всегда можете переключить его в 32-битный или 16-битный режим, используя директивы «use32» или «use16». Выбор некоторых форматов файла-адресата автоматически переключает компилятор в 32-битный режим. Подробнее читайте о форматах, которые можете выбрать, в 2.4.
Весь сгенерированный код в файле-адресате всегда идет в том же порядке, что и написанный в исходнике.

Таблица 1.1 Размеры операторов
Оператор Биты Байты
byte 8 1
word 16 2
dword 32 4
fword 48 6
pword 48 6
qword 64 8
tbyte 80 10
tword 80 10
dqword 128 16
xword 128 16
qqword 256 32
yword 256 32
zword 512 64
Таблица 1.2 Регистры
Тип Биты Регистры
General 8 al cl dl bl spl bpl sil dil ah ch dh bh r8b r9b r10b r11b r12b r13b r14b r15b
16 ax cx dx bx sp bp si di r8w r9w r10w r11w r12w r13w r14w r15w ip
32 eax ecx edx ebx esp ebp esi edi r8d r9d r10d r11d r12d r13d r14d r15d eip
64 rax rcx rdx rbx rsp rbp rsi rdi r8 r9 r10 r11 r12 r13 r14 r15 rip
Segment 16 es cs ss ds fs gs
Control 32 cr0 cr2 cr3 cr4
Debug 32 dr0 dr1 dr2 dr3 dr6 dr7
FPU 80 st0 st1 st2 st3 st4 st5 st6 st7
MMX 64 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7
SSE 128 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15
AVX 256 ymm0 ymm1 ymm2 ymm3 ymm4 ymm5 ymm6 ymm7 ymm8 ymm9 ymm10 ymm11 ymm12 ymm13 ymm14 ymm15
AVX2 512 zmm0 zmm1 zmm2 zmm3 zmm4 zmm5 zmm6 zmm7 zmm8 zmm9 zmm10 zmm11 zmm12 zmm13 zmm14 zmm15
Таблица 1.3 Директивы данных
Приоритет Операторы
+
1 * /
2 mod
3 and or xor
4 shl shr
5 not
6 rva

Операнд любого перехода или инструкция вызова может предваряться не только операторами размера, но также одним из операторов, определяющих тип перехода: «near» или «far». Например, если ассемблер в 16-битном режиме, инструкция «jmp dword [0]» станет далеким переходом, а если ассемблер в 32-битном режиме, она станет близким переходом. Чтобы заставить эту инструкцию обрабатываться по-разному, используйте формы «jmp near dword [0]» или «jmp far dword [0]».
Если операнд близкого перехода это немедленное значение, ассемблер, если возможно, сгенерирует кратчайший вариант этой инструкции перехода (но не будет создавать 32-битную инструкцию в 16-битном режиме или 16-битную инструкцию в 32-битном режиме, если оператор размера точно её не определит). Заданием оператора размера вы можете заставить ассемблер всегда генерировать длинный вариант (например, «jmp word 0» в 16-битном режиме или «jmp dword 0» в 32-битном режиме) или всегда создавать короткий вариант и завершаться с ошибкой, когда это невозможно (например «jmp byte 0«).

Эта глава содержит детальную информацию об инструкциях и директивах, поддерживаемых FASMом. Директивы определения констант и меток уже описаны в 1.2.3, все остальные директивы будут описаны ниже в этой главе.

Источник

Поделиться с друзьями
Советы экспертов и специалистов
Adblock
detector