Bahasa Assembler :
Pengantar
|
Apa sih Bahasa Assembler itu ?
Bahasa Assembler adalah bahasa pemprograman tingkat rendah. Sebelumnya kamu harus
mengerti tentang struktur komputer sehingga akan mempermudah memahami bahasa assembler.
Struktur sederhana sebuah komputer seperti dibawah ini:
System bus (warna kuning) menghubungkan semua komponen dikomputer.
CPU adalah pusat dari semua perintah dijalankan oleh sebuah komputer.
RAM adalah tempat penyimpanan sementara sebuah program pada waktu dijalankan
Didalam CPU
REGISTER SECARA UMUM
8086 CPU mempunyai
8 register secara umum, yang bernama:
- AX- Himpunan register ( dibagi menjadi < B>Ah / AL).
- BX- alamat base register ( dibagi menjadi < B>Bh / BL).
- CX- register acuan ( dibagi menjadi < B>Ch / CL).
- DX- data register ( dibagi menjadi < B>Dh / DL).
- SI- index sumber register.
- DI- index tujuan register.
- BP- base pointer.
- SP- stack pointer.
Despite adalah nama sebuah register, yang menentukan pemakaian untuk masing-masing
tujuan register. Tujuan utama suatu register adalah menyimpan variable. Ukurannya
adalah 16 bit, seperti: 0011000000111001B (format biner), atau 12345
sistim desimal.
4 tujuan umum register (AX, BX, CX, DX) dibuat dari dua regiter 8 bit yang terpisah,
sebagai contoh jika AX= 00110000
00111001b, kemudian
AH=00110000b dan AL=00111001b.
Oleh karena itu, ketika kamu memodifikasi register 8 bit yang lain harus merubahnya
dan dibaharui, atau sebaliknya. Kesamaan untuk 3 register adalah "H" adalah untuk
tinggi dan "L" adalah untuk bagian rendah.
Dikarenakan register terletak di dalam CPU, mereka lebih cepat dibanding memori.
Mengakses suatu lokasi memori memerlukan penggunaan suatu sistem bus, maka memperlambat
pengaksesan. Mengakses data didalam register pada umumnya tidak banyak mengambil
waktu. Oleh karena itu, kamu perlu mencoba untuk menyimpan variabel didalam register.
Ukuran register sangat kecil dan kebanyakan register mempunyai tujuan khusus yang
membatasi penggunaan mereka sebagai variabel, tetapi mereka masih suatu tempat sempurna
untuk menyimpan data kalkulasi sementara.
segment REGISTER
- CS- menunjuk di segment yang berisi program yang berjalan.
- DS- biasanya menunjuk pada bagian dimana variabel yang dituju.
- ES- segment ekstra register, menunjuk pada kodenya pemakaian.
- SS- menunjuk di segment yang berisi stack.
Walaupun mungkin untuk menyimpan data lain didalam segment register, tapi sebenarnya
sangat buruk. Segment register mempunyai suatu tujuan khusus - mengarahkan ke blok memori
yang dapat diakses.
SEGMENT register bekerja sama dengan register umum untuk mengakses nilai memori.
Sebagai contoh jika kita bermaksud mengakses memori di alamat 12345H (hexadecimal),
kita perlu menetapkan Ds= 1230h dan Si= 0045h. Ini adalah yang baik,
sebab lewat dari sini kita dapat mengakses banyak lebih memori dibanding dengan satu
register yang dibatasi hingga 16 bit.
CPU membuat suatu kalkulasi alamat phisik dengan perkalian segment register dengan
10h dan menambahkan ke register umum (1230H* 10h+ 45h= 12345h):
alamat dibentuk dengan 2 register disebut suatu Effective address.
Biasanya Bx, SI dan DI register bekerja dengan Ds
segment register; BP dan Sp bekerja dengan SS segment
register. Register umum lainnya tidak bisa membentuk Effective address!
Walaupun Bx dapat membentuk Effective address, Bh dan Bl tidak bisa!
REGISTER UMUM
- IP - penunjuk instruksi.
- Flag Register - menentukan status dari prosessor.
IP register selalu bekerja sama dengan Cs segmen register dan itu
menunjuk pada instruksi yang sedang dijalankan. Flags Register diperbaharui
secara otomatis oleh CPU setelah perhitungan operasi matematikal, ini mengijinkan
untuk menentukan jenis dari hasilnya, dan untuk menentukan kondisi-kondisi untuk
memindahkan kendali ke bagian lain. Jadi kamu tidak bisa mengakses register secara langsung.
|