Kamis, 14 Januari 2016

Bahasa Assembly

Bahasa Assembly 

Pengertian Bahasa Assembly
Bahasa Assembly adalah bahasa pemrograman tingkat rendah yang digunakan pada berbagai perangkat elektronika dan robotika. Bahasa Assembly bekerja dengan cara diterjemahkan ke dalam bahasa mesin yang hanya bisa dimengerti oleh komputer. Tiap-tiap mesin memiliki bahasa Assemby yang berbeda-beda instruksinya. Ada tiga jenis bahasa Assembly yang terkenal. Yaitu, Assembly x86 yang hanya digunakan untuk CPU berbasis intel, ARM yang digunakan pada ponsel dan sistem embedded, dan MIPS yang digunakan pada beberapa konsol game. Bahasa Assembly yang digunakan untuk membuat OS disini adalah Assembly x86.
 
INSTRUKSI-INSTRUKSI BAHASA ASSEMBLY X86

mov - MOVE, untuk memindah value
add - ADD, untuk menambah bilangan
sub - SUBSTRACT, untuk mengurangi bilangan
mul - MULTIPLY, untuk mengalikan bilangan
div - DIVIDE, untuk membagi bilangan
and - AND, untuk operasi logika dan (^)
or - OR, untuk operasi bilangan atau (v)
call - CALL, untuk memanggil suatu fungsi tertentu
cmp - COMPARE, untuk membandingkan dua value
jmp - JUMP, untuk pergi ke sebuah fungsi (bukan memanggil) je - JUMP IF EQUAL, untuk pergi ke fungsi tertentu jika perbandingan antara kedua value sama
jne - JUMP ID NOT EQUAL, untuk pergi ke fungsi tertentu jika perbandingan antara kedua value tidak sama
jg - JUMP IF GREATER, untuk pergi ke fungsi tertentu jika value pertama lebih besar daripada value kedua
jng - JUMP IF NOT GREATER, untuk pergi ke fungsi tertentu jika value pertama lebih kecil daripada value kedua
int - INTERRUPT, untuk menjalankan instruksi milik mesin
push - PUSH, untuk memasukkan value yang ada di suatu register ke posisi teratas stack
pop - POP, untuk mengeluarkan value terluar di stack ke dalam sebuah register
ret - RETURN, untuk kembali ke posisi kode dimana fungsi dipanggil


Bahasa Assembly memiliki 4 macam register, yaitu register 8-bit, 16-bit, 32-bit dan 64-bit. Register 8-bit antara lain: AL, AH, BL, BH, CL, CH, DL dan DH. Register 16-bit antara lain: AX, BX, CX dan DX. Register 32-bit antara lain: EAX, EBX, ECX dan EDX.

Register AX digunakan pada operasi aritmatika, register BX digunakan untuk mengindeks alamat di memori, register CX digunakan untuk melakukan operasi loop (perulangan) dan DX digunakan sebagai sisa pada operasi pembagian.

CONTOH KODE ASSEMBLY SEDERHANA

mov ax, 26
- memindah angka 26 ke register AX
mov bx, 3
- memindah angka 3 ke register BX
mov ax, 3
mov bx, 5
add ax, bx
- memindah angka 3 ke register AX, lalu memindahkan angka 5 ke register BX, lalu menambahkan AX dan BX, sehingga hasilnya adalah 8. Angka 8 tersimpan di register AX.
mov ax, 10
mov bx, 15
add ax, bx
- memindah angka 10 ke register AX, lalu memindah angka 15 ke register BX, lalu menambahkan AX dan BX, sehingga hasilnya adalab 25. Angka 25 tersebut tersimpan di register AX.
mov ax, 8
add ax, 3 - memindah angka 8 ke register AX, lalu menambahkannya dengan angka 3.
mov ax, 0
cmp ax, 0
je fungsi1
- memindah 0 ke register AX, lalu mambandingkan AX dengan 0. Jika sama, maka kode akan pergi ke fungsi fungsi1.
mov ax, 5
add ax, 3
cmp ax, 8
je fungsi1
- memindahkan 5 ke register AX, lalu menambahkannya dengan 3 (hasilnya 8 dan hasilnya ada di register AX). Lalu AX dibandingkan dengan angka 8. Jika sama, maka kode akan pergi ke fungsi1.
mov dx, 0
mov ax, 6
mov bx, 4
div bx
- memindahkan 0 ke DX, 6 ke AX dan 4 ke BX. Kemudian AX dibagi dengan BX (6 dibagi 4). Hasilnya disimpan di register AX dan sisanya disimpan di register DX. Sekarang, AX bernilai 1 dan DX bernilai 2.
mov dx, 0
mov ax, 25
mov bx, 8
div bx
- memindahkan 0 ke DX, 25 ke AX dan 8 ke BX. Kemudian AX dibagi dengan BX (25 dibagi 8). Hasilnya akan disimpan di register AX dan sisanya akan disimpan di register DX. Dalam hal ini, register AX bernilai 3 dan DX bernilai 1.
mov ax, 1
mov bx, 0
and ax, bx
- memindahkan 1 ke register AX dan 0 ke register BX. Lalu AX diberi operator DAN dengan BX (AX ^ BX). Dalam hal ini, hasilnya adalah 0. Angka 0 ini disimpan di register AX.
mov ax, 0
or ax, 1
- memindahkan 0 ke register AX, lalu register AX diberi operator ATAU dengan BX (AX v BX). Dalam hal ini, hasilnya adalah 1. Angka 1 ini disimpan di register AX.
mov al, 3
mov bl, 4
mul bl
- memindahkan 3 ke register AL dan 4 ke BL. Lalu AL dikali BL, dan hasil ya disimpan di register AL.
mov al, 20
mov bl, 4
mul bl
- memindahkan 20 ke register AL dan 4 ke register BL. Lalu AL dikalikan BL, dan hasilnya disimpan di register AL.
sumber :http://singgihadiwijaya123.blogspot.co.id/2016/01/bahasa-assembly.html

Tidak ada komentar:

Posting Komentar