рдмреЗрд╢рдХ, рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рдбреЙрд╕ рдпрд╛ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрди рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдореЛрдВ рдХреЗ рддрд╣рдд ASM рдореЗрдВ, рдмреБрджреНрдзрд┐ рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрд╕реНрдкрд╖реНрдЯрддрд╛рдУрдВ (рдЕрд╕реНрдкрд╖реНрдЯрддрд╛, рдпрджрд┐ рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИ) рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдЯрд╛рдЗрдк рдХреБрдХрд░реНрдореА (рдмрд╛рдЗрдЯ ptr, рд╢рдмреНрдж ptr, dword ptr) рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛, ASM рдореЗрдВ Nyx рдХреЗ рддрд╣рдд рд╣рдордиреЗ AT & T рдФрд░ SysV рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред / 386, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрдЬреНрдЮрд╛рдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдмреЗрд╢рдХ, NASM рдЬреИрд╕реЗ рдмреБрджреНрдзрд┐рдорд╛рди рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдЗрд╕ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХреЛрдбрд╛рдВрддрд░рдХреЛрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛ред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛ред рд╣рдо рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред AT & T рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ, рд╕рднреА рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ, рд╕рдВрдЦреНрдпрд╛рдУрдВ, рд╕рд╛рде рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдгреЛрдВ, рдЬреИрд╕реЗ рдкреНрд░рддрд┐рд╢рдд, рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо, рдЕрд╡рдзрд┐, рддрд╛рд░рд╛рдВрдХрди, рдбреЙрд▓рд░ рдЪрд┐рд╣реНрди, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдорд╛рдВрдб: рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЪрд┐рд╣реНрди рдпрд╛ рдЕрдВрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рдФрд░ рдХрд┐рд╕реА рдХреЙрд▓реЛрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрдордд рд╡рд░реНрдгреЛрдВ рдХреЗ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдХреЛ рдПрдХ рдХреЛрдбрд╛рдВрддрд░рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
// hlt
рдпрджрд┐ рдРрд╕рд╛ рдХреНрд░рдо рдкреНрд░рддрд┐рд╢рдд рдЪрд┐рд╣реНрди рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░реЛрд╕реЗрд╕рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ:
pushl %eax // %eax ($), . 0, 10h, qwerty: pushl $0 pushl $0x10 pushl $qwerty
рдпрджрд┐ рдЕрдиреБрдХреНрд░рдо рдПрдХ рдЕрд╡рдзрд┐ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдХреЛрдбрд╛рдВрддрд░рдХ рд╡реНрдпреБрддреНрдкрдиреНрди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
.aling 2
рдЦреИрд░, рдпрджрд┐ рдЕрдиреБрдХреНрд░рдо рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рд▓реЗрдмрд▓ рд╣реИ (рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдбреЙрдХ рдФрд░ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдиреАрдЪреЗ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ)ред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЙрдЯ рд▓реЗрдмрд▓ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ - рдпрд╣ рд▓реЗрдмрд▓, рдЬреИрд╕рд╛ рдХрд┐ рдбреА рдХреЗ рддрд╣рдд acma рдореЗрдВ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдкрддреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
рдПрдЯреА рдПрдВрдб рдЯреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХрдорд╛рдВрдб рдореЗрдВ рдЪрд╛рд░-рдЕрдХреНрд╖рд░ рдХреЗ рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ: рд╕реА, рд╕реНрд░реЛрдд рдХрд╛ рдЖрдХрд╛рд░, рдЯреА, рд░рд┐рд╕реАрд╡рд░ рдХрд╛ рдЖрдХрд╛рд░:
//cbw cbtw //cwde cwtl //cwd cwtl //cdq cltd
рдЬрд╣рд╛рдВ:
b- рдмрд╛рдЗрдЯ
w- рд╢рдмреНрдж
l- рджреЛрд╣рд░рд╛ рд╢рдмреНрдж
рдХреНрд╖- рдЪреМрдкрд╛рдИ рд╢рдмреНрдж
s- 32 рдмрд┐рдЯ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░
рдПрд▓ -64 рдмрд┐рдЯ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░
t- 80bit рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░
рдЕрд╕реЗрдВрдмрд▓рд░реЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рдкреНрд░реАрдорд┐рдпрд░ рдФрд░ рд╕реНрд░реЛрдд рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рдФрд░ рдбреЙрд╕-рдПрдПрд╕рдПрдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпреВрдирд┐рдХреНрд╕ рдореЗрдВ рд╕реНрд░реЛрдд рдСрдкрд░реЗрдВрдб рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ
//mov ax,bx movw %bx,%ax //imul eax,ecx,16 imull $16,%ecx,%eax
рдкрддреЗ рдХреЗ рдкреНрд░рдХрд╛рд░: рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░рдЬрд┐рд╕реНрдЯрд░ рдСрдкрд░реЗрдВрдб рдФрд░ рдбрд╛рдпрд░реЗрдХреНрдЯ рдСрдкрд░реЗрдВрдб% рдФрд░ $ рдкреНрд░реАрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╖реНрдард┐рдд рд╣реИрдВ:
//xor ebx,ebx xorl %ebx,%ebx //mov edx,offset qwerty movl $qwerty,%edx
рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдирдореЙрдбрд┐рдлрд╛рдЗрдб рд╡реИрд░рд┐рдПрдмрд▓ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмреБрджреНрдзрд┐рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдерд╛:
//push dword ptr qwerty
pushl $qwerty
рд╢рд┐рдлреНрдЯ, рдмреЗрд╕ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
//mov eax,base_addr[ebx+edi*4] movl base_addr(%ebx+%edi*4),%eax //lea eax,[eax,eax*4] leal (%eax,%eax*4),%eax //mov ax,word ptr [bp-2] movw -2(%ebp),%ax //mov edx,dword ptr [edi*2] movl (%edi*2),%edx
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдХреЛ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рд╣реА рд▓рд┐рдмрд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдЪреВрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдпрдВ рд╕реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдИ рдлрд╝рдВрдХреНрд╢рди рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЪреВрдВрдХрд┐ рд╕рднреА рдпреВрдирд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЖрдкрдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкреНрд░рд╕рд┐рджреНрдз рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ:
.text .globl main main: pushl $message call puts popl %ebx ret .data message: .string "Hello world!\0"
рдЧреНрд▓рд┐рдмрдХ рдХреЗ рдмрд┐рдирд╛, рдХрд╛рд░реНрдпрдХреНрд░рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
.text .globl _start _start: movl $4,eax xorl %ebx.%ebx incl %ebc movl $message,%ecx movl $mesg_len,%edx int $0x80 xorl %eax,%eax incl %eax xorl %ebx,%ebx int $0x80 hlt .data message: .string "Hello World!\012" mesg_len= .-message
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рд▓рд┐рдЦрдирд╛ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ред рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓% рдИрдПрдХреНрд╕рдПрдХреНрд╕ рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ 4-рдореВрд▓реНрдп рдорд╛рди рд░рдЦрдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рддрд╣рдд рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЯреЗрдмрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдПрдХреНрд╕рд┐рдЯрд┐рдВрдЧ $ 0x80 рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЗрд╕рдХреА рдкреВрд░реНрдгрддрд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ $ 1 рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред