Assembly Basic Syntax
sumber : https://www.tutorialspoint.com/assembly_programming/assembly_basic_syntax.htm
https://en.wikipedia.org/wiki/X86_instruction_listings
An assembly program can be divided into three sections :
- The
datasection - The
bsssection - The
textsection
The data Section
The data section is used for declaring initialized data or constants. This data does not change at runtime. You can declare various constant values, file names, or buffer size, etc., in this section.
section.data
The bss Section
The bss section is used for declaring variables.
section.bss
The text section
The text section is used for keeping the actual code. This section must begin with the declaration global _start, which tells the kernel where the program execution begins.
section.text
global _start
_start:
Syntax
[label] mnemonic [operands] [;comment]
section .text
global _start ;must be declared for linker (ld)
_start: ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!', 0xa ;string to be printed
len equ $ - msg ;length of the string
nasm -f elf hello.asm
ld -m elf_i386 -s -o hello hello.o
./hello
section .data : tempat nyimpan data
text db "Hello world", 10 :
- nama memory address 'text'
- defining bytes 'db'
- berisi "Hello world" dan '10' / newline