٠ا ÙÙ Ù ÙÙ ASMØ
Ù ÙÙ ASM ÙÙ Ø¨Ø±ÙØ§Ù ج Ù ÙØªÙب Ø¨ÙØºØ© Ø§ÙØ¨Ø±Ù جة Ù ÙØ®Ùضة اÙ٠ستÙÙ ÙØ§Ù٠عرÙÙØ© Ø¨Ø§Ø³Ù ÙØºØ© Ø§ÙØªØ¬Ù ÙØ¹. ÙØªÙ استخدا٠٠بشÙ٠أساس٠ÙÙØªØ§Ø¨Ø© Ø§ÙØªØ¹ÙÙ٠ات Ø§ÙØ¨Ø±Ù Ø¬ÙØ© اÙ٠تعÙÙØ© Ø¨Ø§ÙØ£Ø¬Ùزة ٠ث٠بر٠جة ÙØØ¯Ø§Øª Ø§ÙØªØÙÙ Ø§ÙØµØºÙرة. ت٠ت ÙØªØ§Ø¨Ø© Ø§ÙØ¨Ø±Ùا٠ج Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù Ø¨ÙØ§Ø¡ Ø¬Ù ÙØ© ÙØºØ© ØªØ¬Ù ÙØ¹ Ø¨Ø³ÙØ· ÙØªØ¶Ù ٠اÙ٠شغÙÙÙ ÙØ§ÙÙ Ø¹Ø§Ù ÙØ§Øª ÙØªÙÙÙØ° ع٠ÙÙØ§Øª ٠ختÙÙØ©. ØªØªÙ ÙØªØ§Ø¨Ø© Ù ÙÙØ§Øª ASM ÙØªØØ±ÙØ±ÙØ§ Ù٠برا٠ج ØªØØ±Ùر اÙÙØµÙص ÙÙØªÙ تÙÙÙØ°Ùا Ø¨Ø§Ø³ØªØ®Ø¯Ø§Ù Ø¨Ø±ÙØ§Ù ج ٠ج٠ع ٠ث٠HLA Ø£Ù MASM Ø£Ù FASM Ø£Ù NASM Ø£Ù GAS.
ØªÙØ³ÙÙ Ù ÙÙ ASM
تتÙÙÙ Ù ÙÙØ§Øª ASM Ù Ù Ø³ÙØ³ÙØ© Ù Ù Ø§ÙØ¹Ù ÙÙØ§Øª Ø§ÙØªÙ ÙØªÙ تÙÙÙØ°Ùا Ø¨ÙØ§Ø³Ø·Ø© اÙÙ Ø¬Ù ÙØ¹ ÙØ¥Ùشاء ** ر٠ز ÙØ§Ø¦Ù **. ر٠ز اÙÙØ§Ø¦Ù اÙÙØ§ØªØ¬ Ù٠ترج٠ة Ù Ø¬Ù ÙØ¹Ø§Øª Ù Ù ÙÙ Ø§ÙØ¥Ø³ØªØ°Ùار ÙØ£Ù٠اط Ø§ÙØ¹ÙÙÙØ© Ø¥ÙÙ Ù Ø¹Ø§Ø¯ÙØ§ØªÙا Ø§ÙØ¹Ø¯Ø¯ÙØ©.
٠ثا٠عÙÙ ØªÙØ³ÙÙ Ù ÙÙ ASM
ÙÙ٠ا ÙÙ٠٠ثا٠عÙ٠تطبÙÙ ** Hello World ** ÙÙ Ø¹Ù Ø§Ø±ÙØ© x86.
global go
extern _ExitProcess@4
extern _GetStdHandle@4
extern _WriteConsoleA@20
section .data
msg: db 'Hello, World', 10
handle: db 0
written:
db 0
section .text
go:
; handle = GetStdHandle(-11)
push dword -11
call _GetStdHandle@4
mov [handle], eax
; WriteConsole(handle, &msg[0], 13, &written, 0)
push dword 0
push written
push dword 13
push msg
push dword [handle]
call _WriteConsoleA@20
; ExitProcess(0)
push dword 0
call _ExitProcess@4