Registers
General-purpose registers
Register Description
EAX Accumulator for operands and results data
EBX Pointer to data in the data memory segment
ECX Counter for string and loop operations
EDX I/O pointer
EDI Data pointer for destination of string operations
ESI Data pointer for source of string operations
ESP Stack pointer
EBP Stack data pointer
Segment registers
Segment Register Description
CS Code segment
DS Data segment
SS Stack segment
ES Extra segment pointer
FS Extra segment pointer
GS Extra segment pointer
Instruction pointer register
EIP keeps track of the next instruction code to execute
Control registers
Control Register Description
CR0 System flags that control the operating mode and states of the processor
CR1 Not currently used
CR2 Memory page fault information
CR3 Memory page directory information
CR4 Flags that enable processor features and indicate feature capabilities of the processor
Sections
.section .data
section for variables declaration
Directive Data Type
.ascii Text string
.asciz Null-terminated text string
.byte Byte value
.double Double-precision floating-point number
.float Single-precision floating-point number
.int 32-bit integer number
.long 32-bit integer number (same as .int)
.octa 16-byte integer number
.quad 8-byte integer number
.short 16-bit integer number
.single Single-precision floating-point number (same as .float)
.equ static variables
.section .rodata
section for constants declaration
.section .bss
buffers
Directive Description
.comm Declares a common memory area for data that is not initialized
.lcomm Declares a local common memory area for data that is not initialized
.section .text
assembly codes
Directive Description
.global _start entry point