از آرایه ها برای تعریف یک مجموعه منظم از عناصر داده ای مشابه استفاده می شود.
بد افزارها گاهی اوقات از آرایه برای اشاره به رشته هایی که محتوی چندین hostname که بعنوان گزینه هایی برای ارتباط استفاده می شود, استفاده می کنند.
دو آرایه در مثال زیر تعریف شده که هر دو در هنگام تکرار حلقه تنظیم می شوند.
آرایه a بصورت محلی و آرایه b بصورت عمومی تعریف شده که این تفاوت را در کد دیس اسمبل شده مشاهده خواهید کرد.
int
b[5] = {123,87,487,7,978};
void
main()
{
   int i;
   int a[5];
 
   for(i = 0; i<5; i++)
   {
      a[i] = i;
      b[i] = i;
   }
}
توی اسمبلی آرایه ها
با استفاده از آدرس مبنا بعنوان یک نقطه ی شروع قابل دستیابی هستند.سازه هر عنصر
همیشه واضع نیست اما آنرا میتوان با توجه به چگونگی تنظیم شدن اندیس آرایه متوجه
شد.
00401006        mov   
 [ebp+var_18], 0
0040100D        jmp    
short loc_401018
0040100F
loc_40100F:
0040100F        mov    
eax, [ebp+var_18]
00401012        add    
eax, 1
00401015        mov    
[ebp+var_18], eax
00401018
loc_401018:
00401018        cmp    
[ebp+var_18], 5
0040101C        jge    
short loc_401037
0040101E        mov    
ecx, [ebp+var_18]
00401021        mov    
edx, [ebp+var_18]
00401024        mov    
[ebp+ecx*4+var_14], edx 1(1)
00401028        mov    
eax, [ebp+var_18]
0040102B        mov    
ecx, [ebp+var_18]
0040102E        mov    
dword_40A000[ecx*4], eax 2(2)
00401035        jmp    
short loc_40100F
در اینجا آدرس مبنای آرایه b برابر است با dword_40A000
و آدرس مبنای آرایه a برابر با var_14 میباشد.بخاطر
اینکه هر دو آرایه عددی هستند, هر عنصر 4 بایت سایز دارد.
هر چند دستورات (1) و (2) برای دسترسی به دو آرایه متفاوت هستند در هر دو مورد
ecx
بعنوان اندیس استفاده شده است, که در 4 ضرب می شود تا سایز هر عنصر حساب شود.
مقدار نتیجه به آدرس مبنای آرایه برای دسترسی به عنصر آرایه مدنظر جمع می شود.