배열은 메모리 상의 연속된 데이터들의 목록을 말한다.
개개의 원소들은 같은 형이며, 메모리 상에서 같은 크기의 바이트를 사용하여야 한다.
그렇기 때문에 배열에서는 index를 통해 원소에 효율적으로 접근할 수 있다.
data세그먼트에서는 db, dw등의 지시어를 사용하여 정의한다.
NASM에서는 TIMES라는 지시어를 제공한다.
bss세그먼트에서는 resb, resw등의 지시어를 사용하여 정의한다.
직접적으로 ESP에 필요한 메모리 바이트 수를 계산하여 빼거나 ENTER 명령을 이용한다.
단 ESP에서 빼지는 더블워드값은 반드시 4의 배수여야 한다.(ESP는 항상 더블워드 경계에 놓여야 한다.)
어셈블리에서는 C에서의 [] 연산자가 없다.
따라서 어셈블리에서는 원소의 주소가 계산되어야 한다.
[ base reg + factor*index reg + constat ]위와 같은 형태로 배열에선 간접 주소 지정도 종종 이용된다.
base reg(베이스 레지스터)는 EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI 중 하나이다.
factor(인수)는 1,2,4,8 중 하나이다.(1이면 생략)
index reg(인덱스 레지스터)는 EAX,EBX,ECX,EDX,EBP,ESI,EDI중 하나이다.(ESP는 안됨)
constant(상수)는 32비트 상수이다. 라벨 혹은 라벨 식(label expression)이 사용될 수 있다.