Widziałem w życiu wiele przykładów, lepszych i gorszych.
Asembler jest trudny z natury, bo instrukcji dla procesora nie wymyślano aby było łatwo. Wymyślano by było.
Osoby chętne do nauki Asemblera wpisują w wyszukiwarkę “Asembler hello world” i trafiają na przykład który po przez przerwanie procesorowe (zgodne dla DOS’a) wyświetlają napis zakończony znakiem dolara ‘$’.
Problem w tym, że nie ma informacji jak cyfrę wyświetlić, lub też ciąg znaków wygenerowany podczas trwania programu bądź jak wyświetlić znak dolara.
Stwierdziłem, że:
Znajdę taki przykład, w którym proste operacje będą proste.
I oto on:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | format PE console entry start include 'include\win32a.inc' section '.code' code readable executable start: cinvoke printf, print_str,hello_msg cinvoke printf, print_int,dword [_var1] mov eax, -5 sub eax, 4 cinvoke printf, print_int,eax cinvoke getchar invoke ExitProcess, 0 section '.data' data readable writeable hello_msg db 'Hello, world!',0 _var1 dq 65 print_str db "%s",13,10,0 print_int db "%d",13,10,0 section '.idata' import data readable library kernel,'kernel32.dll',\ msvcrt,'msvcrt.dll',\ user,'USER32.DLL',\ kbase,'kbase.dll' import kernel,\ ExitProcess,'ExitProcess' import msvcrt,\ printf,'printf',\ getchar,'_fgetchar' import user,\ wsprintf,'wsprintfA' |
Przykład jest pod Windows opiera się na kompilatorze FASM (flat assembler), a z forum FASM pochodzi ten przykład. Tak, zmieniłem go trochę.
Assembler jest trudny, jeśli chcesz go się uczyć to nie zatrzymuj się na Hello world, bo skompilować gotowca to potrafi nawet chomik. Poważnie.
0 Comments until now
Add your Comment!