Skip to content

Instantly share code, notes, and snippets.

@littlefuntik
Last active February 10, 2019 16:20
Show Gist options
  • Save littlefuntik/6cefaf837ad9a44f52bfdc63ae425416 to your computer and use it in GitHub Desktop.
Save littlefuntik/6cefaf837ad9a44f52bfdc63ae425416 to your computer and use it in GitHub Desktop.
FASM WIN32 example
format PE Console
entry start
include 'win32ax.inc'
section '.text' code readable executable
start:
mov eax, 'A'
mov ecx, 26
print_char:
push ecx ; сохраняем счетчик
; Вывод символа. Вариант 1:
;push eax
;cinvoke putchar ; здесь мы не передаем параметры - макрос сам "берет их со стека"
;pop eax
; Вывод символа. Вариант 2. Немного короче, а по производительности одинаков.
; Интерпретатор сам сгенерирует первый вариант:
cinvoke putchar,eax
; Возвращаем счетчик на место.
pop ecx
; Генерируем следующюю "букву алфавита"
inc eax
; Возвращаемся к печати новой "буквы", пока счетчик не равен нулю.
; "loop" сам отнимет единицу от "ecx", поверьте наслово!
; ( хотелось бы и к eax антилуп применить, и скомбинировать с этим лупом, но не за лупом правда!:) )
loop print_char
cinvoke putchar,10 ; new line display
cinvoke system, 'pause'
invoke ExitProcess, 0 ; очищаем голову
section '.idata' import data readable
library\
kernel32, 'kernel32.dll', \
msvcrt, 'msvcrt.dll' ;; C-Run time from MS. This is always on every windows machine
import kernel32, \
ExitProcess, 'ExitProcess'
import msvcrt, \
putchar, 'putchar', \
system, 'system'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment