add al,0x10 add BYTE PTR, [eax+eax*1],ah add BYTE PTR, [eax],al and al,0x34 add BYTE PTR, [eax],al add BYTE PTR, [eax],al add BYTE PTR, [eax],al add BYTE PTR, [ebx+edi*4-0xc],dh xchg edi,eax hlt add BYTE PTR, [eax+ebx*1],al push esp ficom WORD PTR, [ecx+edi*1] stos DWORD PTR, es:[edi],eax add al,0x1f sti mov eax,0x2f12a058 xor dh,BYTE PTR, [ecx] push edx xor esi,DWORD PTR, [edx+0x35] xchg edx,eax aaa add al,0xdd (add BYTE PTR, fs:[ebp+edx*1+0x44],ah) add BYTE PTR, [edi+edi*1-0x5c],ah add BYTE PTR, [ecx+0x74d874ff],bh jecxz 0x77 push ebx pop ds (bad) fnstcw WORD PTR, [eax-0x392f55a8] pop eax rcl BYTE PTR, [edi-0x69b31999],1 fnstcw WORD PTR, [eax-0x54d8b9d] test DWORD PTR, [ebx+0x153dd74],eax inc esi pusha inc ebx add al,dh fnstcw WORD PTR, [eax+0x6fc6d059] shl BYTE PTR, [eax-0x560fa748],1 add al,0x51 mov eax,0x96f01063 jge 0x8e adc al,dh xchg esi,eax jge 0x93 adc al,dh and eax,DWORD PTR, ds:0x37a98bd4 pop ss mov eax,0xf237605a mov WORD PTR, [edi],ss aaa aaa add esi,esi out 0x99,al stc mov al,ds:0xb2745bb8 add al,0xad mov eax,0x96f0105b lods eax,DWORD PTR, ds:[esi] sbb BYTE PTR, [eax],dl lock xchg esi,eax lods eax,DWORD PTR, ds:[esi] sbb BYTE PTR, [eax],dl lock add ecx,DWORD PTR, [eax+0x7ea4ade6] mov eax,0x37dd7462 xor al,bh lock mov bl,0x17 mov bl,0x7 pop es mov al,ds:0x2089d396 add al,0xd3 mov al,0xff add al,0x58 lock (bad) rcl DWORD PTR, [edi],cl xchg esi,eax mov edx,0x82b0df99 add al,0xd3 test DWORD PTR, [ebp-0x7c0fa748],edx je 0x96 jmp 0xa422241b add BYTE PTR, [bx+si],al
Write, Run & Share Assembly code online using OneCompiler's Assembly online compiler for free. It's one of the robust, feature-rich online compilers for Assembly language. Getting started with the OneCompiler's Assembly compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as Assembly
and start coding.
Assembly language(asm) is a low-level programming language, where the language instructions will be more similar to machine code instructions.
Every assembler may have it's own assembly language designed for a specific computers or an operating system.
Assembly language requires less execution time and memory. It is more helful for direct hardware manipulation, real-time critical applications. It is used in device drivers, low-level embedded systems etc.
Assembly language usually consists of three sections,
Data section
To initialize variables and constants, buffer size these values doesn't change at runtime.
bss section
To declare variables
text section
_start
specifies the starting of this section where the actually code is written.
There are various define directives to allocate space for variables for both initialized and uninitialized data.
variable-name define-directive initial-value
Define Directive | Description | Allocated Space |
---|---|---|
DB | Define Byte | 1 byte |
DW | Define Word | 2 bytes |
DD | Define Doubleword | 4 bytes |
DQ | Define Quadword | 8 bytes |
DT | Define Ten Bytes | 10 bytes |
Define Directive | Description |
---|---|
RESB | Reserve a Byte |
RESW | Reserve a Word |
RESD | Reserve a Doubleword |
RESQ | Reserve a Quadword |
REST | Reserve a Ten Bytes |
Constants can be defined using
CONSTANT_NAME EQU regular-exp or value
%assign constant_name value
%define constant_name value
Loops are used to iterate a set of statements for a specific number of times.
mov ECX,n
L1:
;<loop body>
loop L1
where n specifies the no of times loops should iterate.
Procedure is a sub-routine which contains set of statements. Usually procedures are written when multiple calls are required to same set of statements which increases re-usuability and modularity.
procedure_name:
;procedure body
ret