Bahasa Rakitan By Okti Yudhanti Nur K
REGISTER PENGERTIAN REGISTER Dalam pemrograman dengan bahasa Assembly, mau tidak mau anda harus berhubungan dengan apa yang dinamakan sebagai Register. Lalu apakah yang dimaksudkan dengan register itu sebenarnya ?. Register merupakan sebagian memori dari mikroprosesor yang dapat diakses dengan kecepatan yang sangat tinggi. Dalam melakukan pekerjaannya mikroprosesor selalu menggunakan register-register sebagai perantaranya, jadi register dapat diibaratkan sebagai kaki dan tangannya mikroprosesor. JENIS-JENIS REGISTER Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya yang berbeda-beda pula, yaitu :
Segmen Register.
Register yang termasuk dalam kelompok ini terdiri atas register CS,DS,ES dan SS yang masing-masingnya merupakan register 16 bit. Register-register dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen. Register CS(Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, sedangkan register SS(Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. Kedua register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya.
1
Bahasa Rakitan By Okti Yudhanti Nur K
Register DS(Data Segment) biasanya digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan. Umumnya isi dari register ini tidak perlu diubah kecuali pada program residen. Register ES(Extra Segment), sesuai dengan namanya adalah suatu register bonus yang tidak mempunyai suatu tugas khusus. Register ES ini biasanya digunakan untuk menunjukkan suatu alamat di memory, misalkan alamat memory video. Pada prosesor 80386 terdapat tambahan register segment 16 bit, yaitu FS<Extra Segment> dan GS<Extra Segment>.
Pointer dan Index Register.
Register yang termasuk dalam kelompok ini adalah register SP,BP,SI dan DI yang masing-masing terdiri atas 16 bit. Register- register dalam kelompok ini secara umum digunakan sebagai penunjuk atau pointer terhadap suatu lokasi di memory. Register SP(Stack Pointer) yang berpasangan dengan register segment SS(SS:SP) digunakan untuk mununjukkan alamat dari stack, sedangkan register BP(Base Pointer)yang berpasangan dengan register SS(SS:BP) mencatat suatu alamat di memory tempat data. Register SI(Source Index) dan register DI(Destination Index) biasanya digunakan pada operasi string dengan mengakses secara langsung pada alamat di memory yang ditunjukkan oleh kedua register ini. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu ESP,EBP,ESI dan EDI.
General Purpose Register. 2
Bahasa Rakitan By Okti Yudhanti Nur K
Register yang termasuk dalam kelompok ini adalah register AX,BX,CX dan DX yang masing-masing terdiri atas 16 bit. Register- register 16 bit dari kelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagian dimana masing-masing bagian terdiri atas 8 bit, seperti pada gambar 4.1. Akhiran H menunjukkan High sedangkan akhiran L menunjukkan Low.
+AX+ +-+--+--+-+ | AH | AL | +---- +---- +
+BX+ +-+--+--+-+ | BH | BL | +---- +---- +
+CX+ +DX+ +-+--+--+-+ +-+--+--+-+ | CH | CL | | DH | DL | +-----+----+ +-----+-----+
Gambar General purpose Register Secara umum register-register dalam kelompok ini dapat digunakan untuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus dari masing-masing register ini yaitu : Register AX, secara khusus digunakan pada operasi aritmatika terutama dalam operasi pembagian dan pengurangan. Register BX, biasanya digunakan untuk menunjukkan suatu alamat offset dari suatu segmen. Register CX, digunakan secara khusus pada operasi looping dimana register ini menentukan berapa banyaknya looping yang akan terjadi. Register DX, digunakan untuk menampung sisa hasil pembagian 16 bit. Pada prosesor 80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX dan EDX.
Index Pointer Register 3
Bahasa Rakitan By Okti Yudhanti Nur K
Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemory tempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP juga merupakan register 16 bit. Pada prosesor 80386 digunakan register EIP yang merupakan register 32 bit.
Flags Register.
Sesuai dengan namanya Flags(Bendera) register ini menunjukkan kondisi dari suatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja, maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16 keadaan. Adapun flag yang terdapat pada mikroprosesor 8088 keatas adalah :
OF
Jika terjadi OverFlow pada operasi aritmatika, bit ini akan bernilai 1.
SF <Sign Flag> Jika digunakan bilangan bertanda bit ini akan bernilai 1
ZF Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.
CF Jika terjadi borrow pada operasi pengurangan atau carry pada penjumlahan, bit ini akan bernilai 1.
0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00 +-----+-----+------+------+----+-----+-----+-----+----+----+----+----+----+---+----+----+ 4
Bahasa Rakitan By Okti Yudhanti Nur K
| | NT | IOPL |OF | DF | IF | TF | SF | ZF| | AF| | PF | |CF | +-----+-----+------+------+----+-----+-----+-----+-----+---+----+----+----+---+----+----+ Gambar Susunan Flags Register 8088
PF <Parity Flag>.
Digunakan untuk menunjukkan paritas bilangan. Bit ini akan bernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.
DF Digunakan pada operasi string untuk menunjukkan arah proses.
IF CPU akan mengabaikan interupsi yang terjadi jika bit ini 0.
TF Digunakan terutama untuk Debugging, dengan operasi step by step.
AF Digunakan oleh operasi BCD, seperti pada perintah AAA.
NT Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.
IOPL Flag ini terdiri atas 2 bit dan digunakan pada prosesor 80286 dan 80386 untuk mode proteksi.
5
Bahasa Rakitan By Okti Yudhanti Nur K
Adapun susunan dari masing-masing flag didalam flags register dapat anda lihat pada gambar diatas. Pada prosesor 80286 dan 80386 keatas terdapat beberapa tambahan pada flags register, yaitu :
PE Digunakan untuk mengaktifkan mode proteksi. flag ini akan bernilai 1 pada mode proteksi dan 0 pada mode real.
MP <Monitor Coprosesor> Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT.
EM <Emulate Coprosesor> Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387.
TS Flag ini tersedia pada 80286 keatas.
ET <Extension Type> Flag ini digunakan untuk menentukan jenis coprosesor 80287 atau 80387.
RF Register ini hanya terdapat pada prosesor 80386 keatas.
VF Bila flag ini bernilai 1 pada saat mode proteksi, mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada mode proteksi. Register ini hanya terdapat pada 80386 keatas.
6
Bahasa Rakitan By Okti Yudhanti Nur K
Jenis - Jenis Register dan Fungsinya Mikroprosesor 8086/8088 memiliki 4 register yang masing-masingnya terdiri dari 16 bit, ditambah 9 register flag. Tiga set yang menyediakan tempat register adalah General Purpose Register, Pointer dan Index Register, dan Segment Register. 4 Jenis kelompok register tersebut sebagai berikut:
1. General Purpose Register 2. Pointer dan Index Register 3. Register Segment 4. Flag Register 1. General Purpose Register •
Accumulator Register AX 7
Bahasa Rakitan By Okti Yudhanti Nur K
Fungsi: Sebagai akumulator dan berhubungan dengan jenis-jenis operasi khusus seperti Aritmetika, In/Out, Shift,Logic, Rotate, dan operasi desimal berkode biner. •
Base Register BX
Fungsi: Sebagai register base untuk mereferensi alamat memori. Operasi yang dapat dilakukan adalah Rotate, Logic, Shift, dan Aritmetika. •
Counter Register CX
Fungsi: Sebagai pencacah implisit dengan instruksi tertentu, misalnya terhadap perintah Loop dan operasi string. Counter naik jika direction flag bernilai 0, dan counter turun jika direction flag bernilai 1. •
Data Register DX
Fungsi: Menyimpan alamat port I/O selama operasi I/O tertentu, baik alamat port 8 bit maupun 16 bit. Digunakan juga dalam operasi perkalian dan pembagian. 2. Pointer dan Index Register •
Register SP (Stack Pointer, 16 bit)
Fungsi: Digunakan untuk operasi stack seperti menyimpan alamat return saat memanggil subroutine. SP merupakan register yang secara implisit digunakan oleh perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack. •
Register BP (Base Pointer, 16 bit)
Fungsi: Sebagai penunjuk base dalam stack yang disediakan untuk penyimpanan data. BP juga digunakan si dengan bahasa pemrograman misalnya Assembler dan C. •
Register SI dan DI (Source Index dan Destination index, 16 bit)
Fungsi: Menyimpan nilai-nilai offset dalam segment data memori pada saat bersangkutan. •
Register IP (Instruction Pointer, 16 bit)
Fungsi: Register yang berpasangan dengan CS sebagai register utama untuk menunjukkan baris perintah program. Pada saat program dijalankan, IP akan 8
Bahasa Rakitan By Okti Yudhanti Nur K
langsung menunjuk pada awal program. Code Segment dan Instruction Pointer berfungsi sebagai program counter ditulis dengan format CS:IP. Secara umum, kode mesin diletakkan di Code Segment, semua data diletakkan di Data Segment, dan operasi PUSH dan POP dilakukan di Stack Segment. 3.
Register Segment (16 bit) •
Register CS (Code Segment)
Fungsi: Mencatat segment dari kode program atau instruksi, register CS berpasangan dengan register IP (Instruction Pointer) dalam format CS:IP. •
Register DS (Data Segment) Fungsi: Menyimpan alamat dari segment dimana data terletak.
•
Register SS (Stack Segment)
Fungsi: Menyimpan alamat segment memori yang dipergunakan sebagai stack. •
Register ES (Extra Segment)
Fungsi: Menyimpan alamat segment tambahan, misalnya alamat display, alamat sistem operasi, dan sebagainya. 4. Register Flag Mikroprosesor 8086/8088 mempunyai Status Flag 1 bit dan 4 Kontrol Flag yang dikonfigurasikan dalam register 16 bit. Status Flag terdiri dari: •
CF (Carry Flag)
Tugas: Dimana sebuah carry out atau borrow, jika hasilnya adalah bit tertinggi (nilai 1). •
PF (Parity Flag)
Tugas: Menset (nilai 1), jika instruksi menghasilkan sebuah angka genap (even parity). •
AF (Auxiliary Flag) Tugas: Digunakan oleh instruksi pegaturan desimal. 9
Bahasa Rakitan By Okti Yudhanti Nur K
•
ZF(Zero Flag) Tugas: Menset (nilai 1), jika hasil instruksi adalah 0.
•
SF (Sign Flag)
Tugas: Menset (nilai 1), jika hasilnya adalah negatif dan bernilai 0 jika positif. Kontrol Flag terdiri dari: •
OF (Overflow Flag)
Tugas: Menunjukkan sebuah operasi yang tidak benar yaitu merubah hasil daripada tanda bit.. •
IF (Interrupt Enable Flag)
Tugas: Jika diset (nilai 1) dapat melakukan operasi interupsi dan sebaliknya bila bernilai 0, maka interupsi tidak dapat dilakukan. •
DF (Direction Flag)
Tugas: Mengontrol arah dari operasi string. Jika DF=1, maka register SI dan DI nilainya menurun (decrement); jika DF=0, maka register DI dan SI nilai menaik (increment). Register ini digunakan untuk instruksi-instruksi MOVS, MOVSB, MOVSW, CMPS, CMPSB, dan CMPSW. •
TF (Trap Flag) Tugas: Ditempatkan dalam single step mode untuk keperluan debug.
E. 10
Bahasa Rakitan By Okti Yudhanti Nur K
RegisterRegister adalah merupakan sebagian memory dari microprocessor yang nenilikikecepatan sangat tinggi. Dapat juga dianalogikan bahwa register merupakan kakitangan dari microprocessor.Register dibagi menjadi lima bagian besar yaitu :1) Segment Register (16 bit) :Register untuk menunjukkan alamat dari suatu segment.Yang termasuk register segment .a) CS (Code Segment)Menunjukkan alamat segment dari program yang sedang aktif.b) DS (Data Segment) : digunakan untuk menunjukkan tempat segmen dimana data-data pada program disimpan c) SS (Stack Segment) : Menunjukkan alamat segment dari stack yang digunakanprogram.d) ES (Extra Segment) : Merupakan dan register segment cadangan.2) Pointer dan Index RegisterPointer dan Index Register (16 bit) :Register untuk menunjukkan alamat darisuatu offset.Yang termasuk register pointer dan index :a) Register SP (Stack Pointer) yang berpasangan dengan register segment SS(SS:SP)digunakan untuk mununjukkan alamat dari stack b) register BP (Base Pointer)yang berpasangan dengan register SS(SS:BP) mencatatsuatu alamat di memory tempat data. c) DI (Destination Index) :Berpasangan dengan ES (ES : DI): dipakai untuk operasistring.d) SI (Source Index) :Berpasangna dengan DS (DS : SI). Dipakai untuk operasi string. Register SI(Source Index) dan register DI(Destination Index) biasanyadigunakanpada operasi string dengan mengakses secara langsung pada alamat dimemory yangditunjukkan oleh kedua register ini. Pada prosesor 80386 terdapattambahan register32 bit, yaitu ESP,EBP,ESI dan EDI
11
Bahasa Rakitan By Okti Yudhanti Nur K
3) General Purpose Register (16 bit) Register yang termasuk dalam kelompok ini adalah register AX,BX,CXdan DX yang masing-masing terdiri atas 16 bit. Register- register 16 bit darikelompok ini mempunyai suatu ciri khas, yaitu dapat dipisah menjadi 2 bagiandimana masingmasing bagian terdiri atas 8 bit, seperti pada gambar 4.1. Akhiran H menunjukkan High sedangkan akhiran Lm enunjukkan Low.+ A X + + B X + + C X + + D X ++-+--+--+-+ +-+--+--+-+ ++--+--+-+ +-+--+--+-+| AH | AL | | BH | BL | | CH | CL | | DH | DL |+----+----+ +---+----+ +----+----+ +----+----+Secara umum register-register dalam kelompok ini dapat 12
Bahasa Rakitan By Okti Yudhanti Nur K
digunakanuntuk berbagai keperluan, walaupun demikian ada pula penggunaan khusus darimasing-masing register ini yaitu : a) AX –> AH|AL (Accumulator) secara khusus digunakan pada operasi aritmatika terutama dalam operasipembagian dan pengurangan. b) BX –> BH|BL (Base) biasanya digunakan untuk menunjukkan suatu alamat offset dari suatusegmen. c) CX –> CH|CL (Counter) digunakan secara khusus pada operasi looping dimana register inimenentukan berapa banyaknya looping yang akan terjadi. d) DX –> DH|DL (Data) digunakan untuk menampung sisa hasil pembagian 16 bit. Pada prosesor80386 terdapat tambahan register 32 bit, yaitu EAX,EBX,ECX danEDX. 4) Index Pointer Register (16 bit) Register IP berpasangan dengan CS(CS:IP) menunjukkan alamat dimemorytempat dari intruksi(perintah) selanjutnya yang akan dieksekusi. Register IP jugamerupakan register 16 bit. 5) Flags Register (1 bit) Sesuai dengan namanya Flags(Bendera) register ini menunjukkan kondisi darisuatu keadaan< ya atau tidak >. Karena setiap keadaan dapat digunakan 1 bit saja,maka sesuai dengan jumlah bitnya, Flags register ini mampu memcatat sampai 16keadaan.Adapun flag yang terdapat pada mikroprosesor 8088 keatas adalah :- OF . Jika terjadi OverFlow pada operasi aritmatika, bit ini akanbernilai 1.- SF <Sign Flag>. Jika digunakan bilangan bertanda bit ini akan bernilai 1- ZF . Jika hasil operasi menghasilkan nol, bit ini akan bernilai 1.- CF . Jika terjadi borrow pada operasi pengurangan atau carry padapenjumlahan, bit ini akan bernilai 1.- PF <Parity Flag>. Digunakan untuk menunjukkan paritas bilangan. Bit ini akanbernilai 1 bila bilangan yang dihasilkan merupakan bilangan genap.- DF . Digunakan pada operasi string untuk menunjukkan arahproses.IF . CPU akan mengabaikan interupsi yang terjadi jika bitini 0.- TF . Digunakan terutama untuk Debugging, dengan operasi step bystep.- AF . Digunakan oleh operasi BCD, seperti pada perintah AAA.- NT . Digunakan pada prosesor 80286 dan 80386 untuk menjaga jalannya interupsi yang terjadi secara beruntun.- IOPL . Flag ini terdiri atas 2 bit dan digunakan padaprosesor 80286 dan 80386 untuk mode proteksi.- PE . Digunakan untuk mengaktifkan mode proteksi. Flag iniakan bernilai 1 pada mode proteksi dan 0 pada mode real.- MP <Monitor Coprosesor>. Digunakan bersama flag TS untuk menanganiterjadinya intruksi WAIT.- EM <Emulate Coprosesor>. Flag ini digunakan untuk mensimulasikancoprosesor80287 atau 80387. 13
Bahasa Rakitan By Okti Yudhanti Nur K
- TS . Flag ini tersedia pada 80286 keatas.- ET <Extension Type>. Flag ini digunakan untuk menentukan jenis coprosesor80287 atau 80387.- RF . Register ini hanya terdapat pada prosesor 80386 keatas.- VF . Bila flag ini bernilai 1 pada saat mode proteksi,mikroprosesor akan memungkinkan dijalankannya aplikasi mode real pada modeproteksi. Register ini hanya terdapat pada 80386 keatas. Perintah –Perintah Debug • A : Merakit intruksi simbolik (kode mesin) • D : menampilkan isi suatu daerah memori • E : memasukan data ke memori yang dimulai pad lokasi tertentu • G : run executable program ke memori • N : menamai program • P : eksekusi sekumpulan intruksi yang terkait • Q : quit • R : menampilkan isi satu atau lebih register • T : trace isi sebuah intruksi • U : unassembled kode mesin ke kode simbolik • W : menulis program ke disk F. Instruksi Bahasa Assembly Secara fisik, kerja dari sebuah komputer dapat dijelaskan sebagai sikluspembacaan instruksi yang tersimpan di dalam memori. komputer menentukan alamatdari memori program yang akan dibaca, dan melakukan proses baca data dimemori.Data yang dibaca diinterprestasikan sebagai instruksi. Alamat instruksidisimpanoleh komputer di register, yang dikenal sebagai program counter . Instruksiini misalnya program aritmatika yang melibatkan 2 register. 14
Bahasa Rakitan By Okti Yudhanti Nur K
15