(module (table $table0 1 1 funcref) (memory $memory (;0;) (export "memory") 2) (global $global0 (mut i32) (i32.const 66864)) (global $input (;1;) (export "input") i32 (i32.const 1072)) (global $__dso_handle (;2;) (export "__dso_handle") i32 (i32.const 1024)) (global $__data_end (;3;) (export "__data_end") i32 (i32.const 1328)) (global $__global_base (;4;) (export "__global_base") i32 (i32.const 1024)) (global $__heap_base (;5;) (export "__heap_base") i32 (i32.const 66864)) (global $__memory_base (;6;) (export "__memory_base") i32 (i32.const 0)) (global $__table_base (;7;) (export "__table_base") i32 (i32.const 1)) (func $__wasm_call_ctors (;0;) (export "__wasm_call_ctors") ) (func $strcmp (;1;) (export "strcmp") (param $var0 i32) (param $var1 i32) (result i32) (local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32) (local $var11 i32) (local $var12 i32) (local $var13 i32) (local $var14 i32) (local $var15 i32) (local $var16 i32) (local $var17 i32) (local $var18 i32) (local $var19 i32) (local $var20 i32) (local $var21 i32) (local $var22 i32) (local $var23 i32) (local $var24 i32) (local $var25 i32) (local $var26 i32) (local $var27 i32) (local $var28 i32) (local $var29 i32) (local $var30 i32) (local $var31 i32) (local $var32 i32) (local $var33 i32) (local $var34 i32) (local $var35 i32) (local $var36 i32) (local $var37 i32) (local $var38 i32) (local $var39 i32) (local $var40 i32) (local $var41 i32) (local $var42 i32) (local $var43 i32) global.get $global0 local.set $var2 i32.const 32 local.set $var3 local.get $var2 local.get $var3 i32.sub local.set $var4 local.get $var4 local.get $var0 i32.store offset=24 local.get $var4 local.get $var1 i32.store offset=20 local.get $var4 i32.load offset=24 local.set $var5 local.get $var4 local.get $var5 i32.store offset=16 local.get $var4 i32.load offset=20 local.set $var6 local.get $var4 local.get $var6 i32.store offset=12 block $label1 loop $label2 local.get $var4 i32.load offset=16 local.set $var7 i32.const 1 local.set $var8 local.get $var7 local.get $var8 i32.add local.set $var9 local.get $var4 local.get $var9 i32.store offset=16 local.get $var7 i32.load8_u local.set $var10 local.get $var4 local.get $var10 i32.store8 offset=11 local.get $var4 i32.load offset=12 local.set $var11 i32.const 1 local.set $var12 local.get $var11 local.get $var12 i32.add local.set $var13 local.get $var4 local.get $var13 i32.store offset=12 local.get $var11 i32.load8_u local.set $var14 local.get $var4 local.get $var14 i32.store8 offset=10 local.get $var4 i32.load8_u offset=11 local.set $var15 i32.const 255 local.set $var16 local.get $var15 local.get $var16 i32.and local.set $var17 block $label0 local.get $var17 br_if $label0 local.get $var4 i32.load8_u offset=11 local.set $var18 i32.const 255 local.set $var19 local.get $var18 local.get $var19 i32.and local.set $var20 local.get $var4 i32.load8_u offset=10 local.set $var21 i32.const 255 local.set $var22 local.get $var21 local.get $var22 i32.and local.set $var23 local.get $var20 local.get $var23 i32.sub local.set $var24 local.get $var4 local.get $var24 i32.store offset=28 br $label1 end $label0 local.get $var4 i32.load8_u offset=11 local.set $var25 i32.const 255 local.set $var26 local.get $var25 local.get $var26 i32.and local.set $var27 local.get $var4 i32.load8_u offset=10 local.set $var28 i32.const 255 local.set $var29 local.get $var28 local.get $var29 i32.and local.set $var30 local.get $var27 local.set $var31 local.get $var30 local.set $var32 local.get $var31 local.get $var32 i32.eq local.set $var33 i32.const 1 local.set $var34 local.get $var33 local.get $var34 i32.and local.set $var35 local.get $var35 br_if $label2 end $label2 local.get $var4 i32.load8_u offset=11 local.set $var36 i32.const 255 local.set $var37 local.get $var36 local.get $var37 i32.and local.set $var38 local.get $var4 i32.load8_u offset=10 local.set $var39 i32.const 255 local.set $var40 local.get $var39 local.get $var40 i32.and local.set $var41 local.get $var38 local.get $var41 i32.sub local.set $var42 local.get $var4 local.get $var42 i32.store offset=28 end $label1 local.get $var4 i32.load offset=28 local.set $var43 local.get $var43 return ) (func $check_flag (;2;) (export "check_flag") (result i32) (local $var0 i32) (local $var1 i32) (local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32) i32.const 0 local.set $var0 i32.const 1072 local.set $var1 i32.const 1024 local.set $var2 local.get $var2 local.get $var1 call $strcmp local.set $var3 local.get $var3 local.set $var4 local.get $var0 local.set $var5 local.get $var4 local.get $var5 i32.ne local.set $var6 i32.const -1 local.set $var7 local.get $var6 local.get $var7 i32.xor local.set $var8 i32.const 1 local.set $var9 local.get $var8 local.get $var9 i32.and local.set $var10 local.get $var10 return ) (func $copy_char (;3;) (export "copy_char") (param $var0 i32) (param $var1 i32) (local $var2 i32) (local $var3 i32) (local $var4 i32) (local $var5 i32) (local $var6 i32) (local $var7 i32) (local $var8 i32) (local $var9 i32) (local $var10 i32) global.get $global0 local.set $var2 i32.const 16 local.set $var3 local.get $var2 local.get $var3 i32.sub local.set $var4 local.get $var4 local.get $var0 i32.store offset=12 local.get $var4 local.get $var1 i32.store offset=8 local.get $var4 i32.load offset=12 local.set $var5 block $label0 local.get $var5 i32.eqz br_if $label0 local.get $var4 i32.load offset=12 local.set $var6 i32.const 8 local.set $var7 local.get $var6 local.get $var7 i32.xor local.set $var8 local.get $var4 local.get $var8 i32.store offset=12 end $label0 local.get $var4 i32.load offset=12 local.set $var9 local.get $var4 i32.load offset=8 local.set $var10 local.get $var10 local.get $var9 i32.store8 offset=1072 return ) (data (i32.const 1024) "xakgK\5cNs>n;jl90;9:mjn9m<0n9::0::881<00?>u\00\00") )
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