Defining strings and data

Data definitions

Each directive defines data of a size: db is a byte, dw a word (2 bytes), dd a doubleword (4), dq a quadword (8). Strings are just lists of bytes:

section .data letter db 'A' word dw 0x1234 number dd 1000000 big dq 1000000000000 name db "NASM", 0

EQU constants

EQU names a constant. It is not a variable: the value is fixed at assembly time and cannot change at run time:

SYS_EXIT equ 60 SYS_WRITE equ 1 BUF_SIZE equ 1024

TIMES padding

TIMES repeats an instruction or a data definition a fixed number of times, which is the usual way to zero a buffer or pad to an alignment:

section .bss buf resb 1024 ; 1024 reserved bytes section .data zeros times 64 db 0 ; 64 zero bytes

Next: Flags and the status register

Article author: Arthur Isaev