section .data hello: db 'Hello world!',10 ; 'Hello world!' plus a linefeed character helloLen: equ $-hello ; Length of the 'Hello world!' string section .text global _start _start: sbb al, [0xabab031b] out dx, eax or bh, bh sbb [ebx + esi*4], 0x1d xchg eax, ecx mov edx, 0xff22efcd sbb [esi], 5 pop ds add eax, 0x19efefcd inc [eax + 0x81d301b] fdivr [ebp - 0x7f00f911] sbb al, [ecx] sbb eax, [edx] int 0xab sbb eax, [0x1e1cabcd] int 0xac push ds mov dl, 0x1f add eax, 0xaecdefcd sbb esp, edi sbb al, 0xc6 stosd es:[edi], eax mov esp, 0x621ec11d stosd es:[edi], eax ficomp [edi] lodsd eax, [esi] stosd es:[edi], eax fild [ebx + 0x1bababbd] add al, 0xcd stosd es:[edi], eax sbb edi, edx sbb al, 0xfa stosd es:[edi], eax mov esp, 0xf11babcd sbb al, 0xc8 stosd es:[edi], eax mov esp, 0x7d1dabab int 0xad sbb edi, edx sbb al, 4 int 0xbc pop ds push 0xabcdbfba sbb al, 0xfd stosd es:[edi], eax lodsb al, [esi] sbb al, 0x64 int 0xac sbb ecx, [edx] sbb al, 0x40 int 0xbc int 0xab sbb esi, ebx sbb al, 0x3a sbb eax, 0xabcdabdc mov esp, 0x41fabab int 0xaf sbb eax, [0xbccd641c] int 0xab sbb eax, [ebx] sbb al, 0x64 int 0xcb int 0xbc sbb eax, 0xcdbdba32 stosd es:[edi], eax pop ds add ecx, ebp iretd sbb eax, [ebx + ebp*4 - 0x35] int 0xac sbb eax, [esi] sbb al, 0xa int 0xbc int 0xbc int 0xbc int 0xbc sbb eax, 0xabbdab7b stosd es:[edi], eax sbb ecx, eax int 0xab int 0xbc pop ds add bl, ah mov edi, 0xbcba731c int 0xab sbb al, 0x3e stosd es:[edi], eax mov esp, 0xffcdabab int 0xaf sbb al, 0x35 stosd es:[edi], eax mov esp, 0xbddc021d int 0xab sbb edi, ecx stosd es:[edi], eax stosd es:[edi], eax sbb al, 0xa int 0xac fmul st:5, st stosd es:[edi], eax lodsb al, [esi] int 0xaf sbb eax, [ecx] stosd es:[edi], eax stosd es:[edi], eax add [eax], 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