Last active
February 10, 2019 16:20
-
-
Save littlefuntik/6cefaf837ad9a44f52bfdc63ae425416 to your computer and use it in GitHub Desktop.
FASM WIN32 example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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