Tasm для windows 7 x64

FASM (расшифровывается как Flat Assembler — Ассемблер Плоского Режима) — это крайне необычный транслятор с экзотичными возможностями.
Что же такое FASM?

Это ассемблер с предельно упрощенным синтаксисом, качественным кодогенератором,
мощным макропроцессором и гибкой системой управления за форматом выходных файлов.
Плюсы FASM в том, что он может генерировать очень маленький код, имеет офигенный простой синтаксис(из всех ассемблеров) и вобще по моему ничего круче еще не придумали.
Из недостатков можно выделить несовместимость с MASM/TASM но это по моему не нужно.

Итак, приведем самую простую программу на FASM, которая выводит сообщение: "Fuck you, Windows".

Minimal.asm

format PE GUI 4.0                     ;формат EXE файла
include ‘C:\FASM\include\win32ax.inc’ ;подключаем макросы

.code

  start:                                                                                                                  ;начало метки Start
invoke invoke  MessageBox,HWND_DESKTOP,"Fuck you, Windows","Minimal",MB_OK  ;выводит Message Box с текстом "Fuck you, Windows", заголовком "Minimal" и кнопочкой OK
invoke ExitProcess,0                                                                                              ;завершает прогу

.end start                                                                                                              ;конец метки Start

Попробуем усовершенствовать нашу программу, чтоб она могла посчитать (135+200-56):2 и вывести это в сообщение.

Minimal2.asm

;Итак нам надо чтобы наша программа посчитала (135+200-56):2 и вывела результат.
;Вместо переменных используются регистры процессора или ячейки памяти.
;Код который посчитает нам результат этих вычислений:

format PE GUI 4.0                             ;формат EXE файла
include ‘C:\FASM\include\win32ax.inc’ ;подключаем макросы

.code

  start:                       ;начало метки Start
                                 ;посчитаем выражение (135+200-56):2
        mov eax,135      ;заносим в регистр eax значение 135
        add eax,200       ;прибавляем к eax 200
        sub eax,55         ;отнимаем от результата 56
        mov bl,2            ;заносим делитель в BL
        div bl                 ;делим EAX на BL

        ;Результат получаем в eax.

В ASCII число преобразуем так:
        invoke wsprintf,ebx,szformat,eax

        invoke  MessageBox,HWND_DESKTOP,"Fuck you, Windows","Minimal2",MB_OK    ;выводит Message Box с текстом "Fuck you, Windows", заголовком "Minimal2" и кнопочкой OK
        invoke  MessageBox,HWND_DESKTOP,ebx,"Minimal2",MB_OK                             ;выводит Message Box с числом "140", заголовком "Minimal2" и кнопочкой OK
        invoke  ExitProcess,0                                                                                       ;завершает прогу

.end start                    ;конец метки Start

szformat db "%u",0      ; эта строка нужна чтобы правильно отобразилось число           

Фуух))) Можете спокойно скопировать и наслаждатся своей первой программой на FASM. Можете подставлять различные числа и проверить какое число посчитает прога.
Вобщем, эксперементируйте!!!

FASM Tutorial by Dr.Lithium/minor9k
E-mail: spectrum53@yandex.ru

0

Информатика и вычислительная техника / Организация ЭВМ и систем / 2.4. Трансляция и сборка с помощью TASM.EXE и TLINK.EXE

Сегментом программы называется её часть, состоящая из команд или данных, размеры которой не превосходят 64 Кбайта. Компилятор TASMB.COM позволяет создавать лишь программы, каждая из которых состоит из одного сегмента. Для того чтобы создавать многосегментные программы, применяются компилятор tasm.exe фирмы Borland и компилятор masm.exe фирмы Microsoft. Эти компиляторы создают объектные файлы по заданным текстовым файлам. Затем созданные объектные файлы превращаются в загрузочные модули с помощью сборщиков tlink.exe и link.exe соответственно. Под загрузочным модулем понимается файл, готовый для загрузки и выполнения. Таким образом, программа создается за 2 шага:

Несмотря на то, что мы будем рассматривать компилятор tasm.exe, наши примеры будут состоять из программ, совместимых с masm.exe.

Работать с tasm.exe и tlink.exe лучше в режиме MS DOS.

Желательно создать отдельную папку или использовать дискету, записав в них программы tasm.exe и tlink.exe. Текст программы лучше создавать и редактировать с помощью команды

edit prog.asm

где prog – произвольное имя.

Компиляция, в случае, когда текст программы состоит из одного файла prog.asm, выполняется с помощью команды

tasm prog

Сборка и превращение объектного файла в загрузочный модуль производится с помощью команды

tlink prog

Запуск полученной программы на выполнение производится с помощью команды

Prog

Текст программы отличается от текста, который готовился в среде TASMB.COM. Теперь он состоит из сегментов, причем после определения сегмента кодов (сегментом кодов называется сегмент, состоящий из машинных команд) указываются имена сегментов, связанных с сегментными регистрами:

имя     SEGMENT

            assume cs:имя, ds:имя2, es:имя3, ss:имя4

            …

имя     ENDS

имя2   SEGMENT

            …

имя2   ENDS

имя3   SEGMENT

            …

имя3   ENDS

имя4   SEGMENT

            …

имя4   ENDS

Директива SEGMENT может иметь параметры.

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

На схеме слева стоят значения адресов сегментов. Сегменту команд (кодов) отводится регистр CS, сегменту данных — DS или ES, сегменту стека – SS. Адрес байта данных вычисляется по формуле

Адрес = 16*DS + смещение

(или Адрес = 16*ES + смещение, если используется сегментный регистр ES). Адрес команды – с помощью счетчика команд:

Адрес = 16*CS+IP.

Адрес стека равен 16*SS+SP.

Пример. Напишем текст уже известной нам программы, которая выводит на экран сообщение «Hello, world». Известный нам текст надо модернизировать, добавив директивы определения начала и конца сегментов и команды установки регистра ds (регистр cs устанавливается автоматически).

С этой целью вводим

edit hello.asm <ENTER>

и набираем текст программы

<1> code SEGMENT

<2>        assume cs:code, ds:data

<3>        mov  ax, data      ; установка

<4>        mov  ds, ax        ; регистра ds

<5>        mov  dx, OFFSET mes ; вывод

<6>        mov  ah, 9         ; сообщения

<7>        int  21h           ; на экран

<8>        mov  ah, 10h       ; подождать нажатия

<9>        int  16h           ; любой клавиши

<10>        mov  ax, 4c00h     ; выход из

<11>        int  21h           ; программы

<12>        code ENDS

<13> data SEGMENT

<14> mes db ‘Hello, world’, 13, 10, ‘$’

<15> data ENDS

<16>        end

Запоминаем текст, выходим из редактора и вводим команду трансляции

tasm /l hello

В результате будут созданы файлы  hello.obj и hello.lst.

Если есть ошибки, то их можно посмотреть в листинге hello.lst, исправить и снова выполнить трансляцию. В данной команде мы применяем ключ /l для создания листинга. Если ошибок нет, то производим сборку

tlink hello

В результате будет создана программа hello.exe, которую можно запускать на счет. Помимо команд установки регистра ds (состоящих из двух команд в силу того, что команда mov ds, data недопустима) мы добавим команду вызова прерывания 16h, для приема символа с клавиатуры.

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

Файлы, участвующие в компиляции и сборке

Процесс разработки программы с помощью tasm.exe и tlink.exe проходит шаги, показанные на следующем далее рис.2.2. В прямоугольниках написаны спецификации (имена и расширения) файлов, а на соединяющих эти прямоугольники стрелках – программы, участвующие в процессе разработки. Имена prog и x могут быть любыми.

В рисунке участвует файл prog.crf. Этот файл может быть включен в листинг. Он состоит из списка имен переменных и номеров операторов (строк), в которых встречаются эти имена. Возможно присоединение библиотечных модулей x.lib, созданных из объектных модулей с помощью программы tlib.exe.

Для того чтобы узнать формат строки и ключи для программы tasm, достаточно ввести команду

tasm <ENTER>

В общем случае для компиляции применяется команда

tasm fileset; …; fileset

где каждая строка fileset представляет собой запись вида

options sources, object, list, cross

В этой записи

· options – набор ключей (опций) компилятора;

· sources – набор имен файлов, содержащих исходные тексты;

· object – имя файла, в который будет записан созданный компилятором объектный модуль;

· list – имя файла, содержащего листинг;

· cross – имя файла с таблицей перекрестных ссылок.

Опции обычно разделяются пробелами, а имена файлов sources – пробелами, или знаком «+». Например, команда

tasm /e prog1+prog2, prog; /l prog3

приведет к созданию модуля prog.obj, в котором в силу ключа /e будут эмулироваться операции с плавающей точкой, модуля prog3.obj и prog3.lst. Модуль prog.obj будет результатом компиляции объединения исходных текстов  prog1.asm и prog2.asm.

Команда сборки вводится следующим образом

tlink options objects, exec, map, libraries

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

· options – набор ключей (опций);

· objects – список входных объектных файлов, разделенных знаками «+» или пробелами;

· exec – имя файла, в который будет записан созданный загрузочный модуль;

· map – карта распределения памяти;

· libraries – имена библиотек, содержащих подсоединяемые подпрограммы.

В частности, если указать опцию /t, то будет создан загрузочный модуль в формате COM. Например,

tlink /t mylib+prog

при наличии объектных модулей mylib.obj и prog.obj приведет к созданию файла  prog.com.


This version is for NT based systems from WIN2000 upwards. The oldest recommended Windows version is XP SP3 as many of the binaries in the MASM32 SDK require RGB/A support.

The SDK will run on Win2000 but some of the graphics will not display properly.

You may select any server to download the masm32 SDK but you may get a faster download by selecting one that is closer to where you live.

US Site 1

For American and international programmers from around the world.

US Site 2

For American and international programmers from around the world.

Eastern Europe

Bogdan Ontanu’s site in Romania with information about his Solar_Os and Solar_Asm, an advanced new assembler he is developing.

Western Europe

The CodingCrew site for Programmers in Germany and Western Europe with German language support.

Australia 1

For programmers in Australia, China, South East Asia and the Pacific region.
下载网站从中国的程序员。

For programmers in Australia, China, South East Asia and the Pacific region.
下载网站从中国的程序员。

NOTE on the version of MASM supplied in the MASM32 SDK.

The versions supplied will write code that works correctly on Windows operating systems from Win95 OEM up to the current versions of Windows.

As the Microsoft binaries date from the middle Win98 era, they do not support the later SSE, AVX and AVX2 instruction sets. For the advanced programmer already experienced in using MASM, it is advisable to obtain the appropriate SDK or Visual C/Studio version from Microsoft for the operating system version they are using so that they can use the later instruction sets in advanced code.

Borland Turbo Assembler 5.0

   Очень популярный в нашей стране ассемблер. Во многом это конечно объясняется фирмой изготовителем, но и сам по себе инструмент очень хорош. Наилучший выбор для программистов под DOS, но не совсем удачный под Windows. Скачать…

MASM32 7.0

   Пакет разработчика на ассемблере под Windows. Компилятор и компоновщик, а также компилятор ресурсов и кое-какие инструменты. В отличие от Masm for Microsoft, добавлено множество всяких фичь: инстументы, примеры, хелпы и т.д. При этом, все заточено под Win32. Скачать…

Microsoft Macro Assembler 6.1

   Наиболее распространенный по использованию Ассемблер. Microsoft продолжает поддерживать этот продукт. Позволяет программировать как под Dos так и с Win 32. Скачать…

Turbo Assembler Shell 3.0

   Интегрированная среда для разработки ассемблерных программ. Простота в использовании, легкость в настройке, «неограниченные» пределы применения программы, высокая скорость работы.

Скачать…

Flat Assembler 1.20

   8086-80486/Pentium/MMX/SSE/SSE2 инструкции, 16-bit/32-bit код, макроинструкции, оптимизация кода, MZ и PE output формат. Скачать…

ASM Editor 2.2c

Редактор ассемблерных сырцов. По умолчанию настроено под MASM32

    — подключение различных компиляторов (Ассемблер, Си и другие);
    — настраиваемые схемы подсветки ключевых слов;
    — быстрый переход между процедурами, функциями, метками;
    — возможность подключения файлов помощи (например, win32.hlp) для вызова контекстной справки по выделенному в редакторе слову;
    — работа с исходными кодами в DOS-кодировке без потери символов псевдографики;
    — меню и дополнительные кнопки с функциями, назначаемыми пользователем;
    — настраиваемые «горячие клавиши»; быстрый переход по номеру строки; «закладки»; сохранение позиции курсора и т.д.;
    — не требует инсталляции, не вносит изменений в системные файлы и реестр.

Скачать…

Добавить комментарий

Закрыть меню