Sabtu, 10 Oktober 2015

Definisi Array di Assembly

Jika programmer mendengar kata array, maka yang ada dipikirannya adalah sebuah variable yang dapat menyimpan satu atau lebih nilai dari variable tersebut dalam ukuran memori tertentu.

Bisa kita lihat jika pemrograman C, pendeklarasian array adalah sebagai berikut:
int nValue[2];
nValue[0] = 20;
nValue[1] = 30;
Bagaimana dengan Assembly? Eeet dah meeen... siap-siap beli bordex atau parahmex.
.data?
  nValue dd ?

.code
  xor ecx, ecx
  lea eax, nValue
  mov dword ptr ds:[eax + 4 * ecx], 20
  inc ecx
  mov dword ptr ds:[eax + 4 * ecx], 30
Dan cara mengaksesnya,
.code
  xor ecx, ecx
  lea eax, nValue
  mov edx, dword ptr ds:[eax + 4 * ecx]
  inc ecx
  mov edi, dword ptr ds:[eax + 4 * ecx]
Yaitu memindahkan nilai pada array pertama ke register EDX. Selanjutnya memindahkan nilai array kedua ke register EDI.

Penjelasan:

syntax "lea eax, nValue" adalah menyalin alamat (address) variable nValue ke register EAX untuk selanjutnya ditulis nilainya dengan syntax "mov dword ptr ds:[eax + 4 * ecx], 20", lalu "inc ecx" menjadikan ecx berubah menjadi nilai 1 untuk mengakses array berikutnya, sehingga ketika ada syntax yang sama "mov dword ptr ds:[eax + 4 * ecx], 30", maka nilai 30 ditempatkan di array yang kedua.

Tidak ada komentar:

Posting Komentar