Fasm примеры консольных программ

Дескриптор файла – числовой код целого типа, который ос присваивает открытому физическому файлу. Операции ввода – вывода выполняются через дескриптор файла. В операционной системе MS Windows имеется набор системных дескрипторов.

2 – стандартная ошибка CON

3 – порт AUX (COM1)

Для получения дескриптора файла его нужно открыть или создать с помощью соответствующей системной функции. Эти функции приводятся в приложении. При работе с файловыми функциями имена файлов и каталогов задаются в ASCIIZ формате. В таком формате последний код имени файла – 0. Для контроля за работой файловых системных функций используется бит CF регистра флагов процессора. Если значение бита равно 1, то функция отработала с ошибкой. Условный переход по значению бита выполняется с помощью команд JC (CF=1) и JNC (CF=0)

Пример 1.1. Создание файла без атрибутов.

mov CX,0 ;нет атрибутов

mov DX,myfile ;адрес имени файла

push AX ;да, дескриптор в стек

myfile db ‘test.txt’,0

FASM. Установка FASM. Структура программы на ассемблере. Урок 1

2. Запись и чтение данных из файла

2.1. Организация вывода

Занесение данных в файл по известному дескриптору выполняется с помощью функции 40h. Для занесения данных необходимо байты поместить в буфер. При создании текстовых файлов в операционной системе MS Windows строки символов должны замыкаться управляющими кодами LF(10) и CR (13).

Пример 2.1. Программа создания текстового файла из трех строк.

mov AH,3Ch ;создать файл

push AX ;нет, дескриптор в стек

mov AH,40H ;записать строки в файл

pop BX ;дескриптор из стека

mov CX,n ;число байтов строк

mov DX,strings; адрес буфера вывода

myfile db ‘greet.txt’,0 ;файл

db ‘==Hello World !=’,10,13

n=$-strings ;число байтов строк

2.2. Чтение содержания файла

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

Читайте также:
Ssd программа для диагностики авто

Минимальной единицей – блоком данных является 1 – байт. В случае текстового файла это код символа, либо управляющие коды.

Пример 2.2. Программа посимвольного чтения содержания файла, созданного в примере.

mov ah,3dh ;открыть файл

jc all ;файл открыт?

push ax ;да, дескриптор в стек

pop bx ;извлечь дескриптор

go: ;читать байты

mov cx,1 ;читать один байт

mov dx,buffer ;буфер хранения байта

cmp AX,1 ;прочитан один байт ?

jne all ;нет больше байтов

mov ah,02h ;вывести байт на консоль

mov dl,[buffer] ;код байта из буфера

all: ;конец работы

myfile db ‘greet.txt’,0 ;файл с текстом

buffer db 0 ;буфер хранения байта

Результат работы программы показан на рисунке.

Рис.2.1. Вывод содержания файла на экран

Источник: studfile.net

Hello World на Ассемблере (x86)

A+b в ассемблере FASM — ввод с клавиатуры и вывод на экран — Assembler

а как сделать чтоб два значение вводились с клавиатуры и выводились на экран (желательно в консоль) пожалуйста, приведите пример с подробными комментариями, спасибо!

Код к задаче: «A+b в ассемблере FASM — ввод с клавиатуры и вывод на экран»

Листинг программы

format PE console 4.0 include ‘win32a.inc’ start: cinvoke printf, req, 41h ; Вывод на экран cinvoke scanf, tpt, A ; ввод A cinvoke printf, req, 42h ; Вывод на экран cinvoke scanf, tpt, B ; ввод B mov eax,[A] add eax,[B] cinvoke printf, tpo, eax invoke sleep, 5000 ; 5 sec. delay ; выход gtfo: invoke exit, 0 req db ‘Enter %c:’,0 tpo db ‘A + B = ‘ tpt db ‘%d’,0 A dd ? B dd ? ; import data in the same section data import library msvcrt,’MSVCRT.DLL’, kernel32,’KERNEL32.DLL’ import kernel32, sleep,’Sleep’ import msvcrt, puts,’puts’, scanf,’scanf’, printf,’printf’, exit,’exit’ end data

Источник: studassistent.ru

Fasm примеры консольных программ

Установка и настройка Flat Assembler (FASM)

Установка и настройка Flat Assembler (FASM)

Программирование на Ассемблере я начинал с 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». Их, конечно, лучше иметь в бумажном варианте в качестве настольных справочников, но электронные версии тоже вполне подойдут. Книги залиты на файлообменник. Обе книги на русском языке, в хорошем качестве.

Читайте также:
Проект понятие и основные признаки программа портфель проектов привести примеры

Внутреннее устройство Microsoft Windows 2000. Мастер-класс

Внутреннее устройство Microsoft Windows 2000. Мастер-класс

Соломон Д., Руссинович М. — «Внутреннее устройство Microsoft Windows 2000. Мастер-класс», формат файла: PDF, размер архива 34 Мб. Скачать

Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, and Windows 2000

Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, and Windows 2000

Соломон Д., Руссинович М. — «Внутреннее устройство Microsoft Windows: Windows Server 2003, Windows XP, and Windows 2000», формат файла: DjVu, размер архива 27 Мб. Скачать

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

[Help]
path=C:FASMhelpWIN32.HLP

Это же можно сделать и через меню редактора Help — Pick help file. Теперь, если все сделано правильно, достаточно установить в редакторе курсор на название функции API и нажать F1. Справочник сразу откроется на описании этой функции.

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

[Environment]
include=»C:FASMINCLUDE»
music=»C:FASMKEYGENXM_FILES»
ufmod=»C:FASMINCLUDEMUSIC»

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

Code (Assembler) : Убрать нумерациюВыделить код

  1. format PE GUI 4 . 0
  2. entry start
  3. ; В некоторых исходниках встречается подобные строчки:
  4. ; include ‘%fasminc%win32a.inc’
  5. ; После установки переменной %include% более правильная запись будет такая:
  6. include ‘win32a.inc’ ; Путь к файлу берется из %include%
  7. . . .
  8. ; Добавление файлов в секцию данных
  9. section ‘.data’ datareadablewriteable
  10. xm file ‘%music%jamers.xm’ ; Путь к файлу берется из %music%
  11. xm_len = $ — xm
  12. . . .
  13. ; Подключение функций в таблицу импорта
  14. section ‘.idata’ importdatareadablewriteable
  15. library kernel32 , «kernel32.dll» ,
  16. user32 , «user32.dll» ,
  17. shell32 , «shell32.dll» ,
  18. gdi32 , «gdi32.dll»
  19. include «apiakernel32.inc» ; Путь к файлу берется из %include%
  20. include «apiauser32.inc»
  21. include «apiashell32.inc»
  22. include «apiagdi32.inc»
  23. . . .
  24. ; Подключение отдельных файлов
  25. include ‘%ufmod%ufmod.inc’ ; Путь к файлу берется из %ufmod%
  26. . . .

Когда в настройках FASM установлена переменная include, использовать переменную %fasminc% уже не требуется. В крайнем случае ее можно продублировать в FASMW.INI, но делать это нежелательно, лучше просто удалить ее из всех исходников.

Источник: www.manhunter.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru