Assalamualaikum Wr.Wb
Pada tugas kedua ini akan dibahas seputar register. Register-register pada mikroprosesor intel 8088 dapat dikelompokkan menjadi 3 bagian, yaitu :
- General Purpose Register
- Pointer dan Index Register
- Segment Register
- Flag Register
——————————————————————–
Pertama saya akan coba membahas tentang General Purpose Register. General Purpose Register Register terdiri dari AX, BX, CX, dsn DX. Huruf X merepresentasikan 16 bit register. X dapat berupa H yang merepresentasikan High Order 8 bit register atau L yang merepresentasikan Low Order 8 bit register seperti pada table berikut :
16 Bit Register | High Order 8 Bit Register | Low Order 8 Bit Register |
AX | AH | AL |
BX | BH | BL |
CX | CH | CL |
DX | DH | DL |
Adapun fungsi dari register AX, BX, CX, dan DX adaah sebagai berikut :
A) Register AX
Merupakan Accumulator Register. Secara singkat, fungsi dari Accumulator Register yaitu :
- Membangkitkan kode mesin terpendek
- Berperan dalam operasi input dan output
- Berperan dalam manipulasi string
- Berperan dalam aritmatika, logika, dan data transfer
- Berperan dalam perkalian serta pembagian
B) Register BX
Merupakan Base Address Register. Sebagai register base untuk menunjukkan alamat memory. BX Register biasanya mengandung data pointer yang akan digunakan untuk :
- Based
- Based Indexes
- Register Indiriect Addressing
Adapun operasi yang dapat dilakukan antaralain merotasikan/rotate, menggeser/shift, serta berperan dalam aritmatika dan logika.
C) Register CX
Merupakan Counter Register. Register ini dapat juga digunakan untuk :
- Memanipulasi string
- Berperan juga dalam instruksi Shift dan Rotate
- Berperan dalam segmen kode yang iterative/pengulangan menggunakan instruksi LOOP
- Berperan dalam operasi repetitive pada string dengan memakai command REP
- Dapat menghitung bit/counting khususnya pada register CL untuk me-rotate atau men-shift
- Sebagai counter implisit dengan instruksi tertentu seperti yang disebutkan sebelumnya yaitu loop dan operasi string.
D) Register DX
Merupakan Data Register. Register ini berfungsi :
- Dapat digunakan sebagai nomor port pada operasi I/O input output tertentu
- Pada instruksi multiplikasi (MUL) dan pembagian (DIV) integer 32 bit, DX register akan menyimpan high order word dari bilangan awal atau bilangan hasil.
————————————————————
Kedua, saya akan membahas tentang Pointer-pointernya yang terdiri dari SI, DI, BP, SP, dan IP. Berikut penjelasan dan fungsi dari pointer-pointer tersebut:
A) SI (Source Index Register) dan DI (destination index register)
Source Index (SI) dan DI (Destination Index) biasanya digunakan untuk menyimpan nilai-nilai offset dalam segment data memori. Register ini digunakan untuk komputasi alamat memori atau stack untuk tujuan general data storage. Tujuan utama dari register ini adalah menyimpann offset atau displacement. Komputasi pengalamatan memori, tergantung dari tiga factor yaitu mode pengalamatan, isi dari Data Segment (DS) dan index register. Selain itu, register ini digunakan sebagai pointer address dari data. Untuk kasus SI, offset addresnya berhubungan dengan DS sedangkan untuk DI, maka offset addresnya berhubungan dengan ES.
B) BP (Base Pointer)
BP register dapat menyediakan akses-tak langsung pada data di stack. BP juga dapat digunakan sebagai general purpose data storage. BP (Base Pointer) digunakan sebagai penunjuk base dalam stack yang disediakan untuk penyimpanan data. Base Pointer juga digunakan dengan bahasa pemrograman misalnya Assembler dan C. Kegunaan lainnya yaitu untuk mengakses parameter yang telah lolos melalui stack offset address yang berhubungan dengan SS.
C) SP (Stack Pointer)
SP digunakan untuk menunjuk alamat teratas dari stack yang mengandung offset address. Pada instruksi PUSH, POP, CALL, dan RET, alamat staknya ditentukan setelah menambahkan isi dari stack segment register (SS), setelah melakukan left-shift sebanyak 4 bit, ke SP (Stack Pointer). SP (Stack Pointer) berperan dalam operasi stack misalnya penyimpanan return address saat memanggil subroutine. SP adalah register yang dipakai oleh perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack. Stack Pointer ini selauu menunjuk susunan teratas dari stack offset address yang berhubungan dengan SS, juga selalu menunjuk word (byte pada address genap). Stack yang kosong akan berisi SP=FFFEh
D) IP (Index Pointer)
Pada umumnya, IP digunakan sebagai program counter. Ini diperlukan untuk kalkulasi alamat memori dari instruksi yang akan dieksekusi/. Register ini menyimpan offset dari instruksi. Isi dari IP secara otomatis akan meningkat selama eksekusi dari instruksi tetap berlagsung. Alamat dari instruksi selanjutnya akan di dikalkulasi setelah menambahkan isi IP ke code segment register setelah melakukan left-shift sebanyak 4 bit. IP (Index Pointer) ini pasangannya CS (Code Segment) sebagai register primer guna menunjukkan baris perintah program. Ketika program dieksekusi, IP pointernya akan menunjuk baris awal program. CS dan IP berperan sebagai program counter, yang ditulis dengan ketentuan/format CS:IP. Umumnya, kode-kode mesin diletakkan pada CS, data-data diletakkan pada DS, sedangkan operasi PUSH dan POP dilakukan di SS.
———————————————————
Ketiga, saya akan membahas tentang segment-segmentnya yang terdiri CS, DS, ES, dan SS. Berikut penjelasan dan fungsi semua segment tersebut:
A) CS (Code Segment)
CS register digunakan untuk pengalamatan lokasi di memori di code segment dari memori dimana program disimpan untuk dieksekusi.
B) DS (Data Segment)
DS register berfungsi menunjuk ke data segment pada memori dimana data disimpan.
C) ES (Ekstra Segment)
Ekstra segment ini merupakan segment yang dapat digunakan sebagai tambahan dari data segment pada memori, dimana ekstra segmen ini juga menyimpan data.
D) SS (Stack Segment)
Stack Segment Register digunakan unuk pengalamatan Stack Segment dari memori dimana data stack disimpan. CPU akan menggunakan stack untuk menyimpan sementara datanya, seperti isi dari semua general purpose register yang nantinya akan digunakan.
————————————————————————
Keempat, saya akan membahas tentang Flag-flagnya yang terdiri dari CF, PF, AF, ZF, SF, OF, DF, IF, dan TF. Berikut penjelasan dan fungsi dari Flag-flag tersebut:
A) CF
CF (Carry Flag) diset ke 1, jika setelah operasi penjumlaha muncul sebuah carry, atau peminjaman muncul pada pengurangan. Saat tidak muncul keduanya, maka Carry Flag akan direset menjadi 0.
B) PF
PF (Parity Flag) diset ke angka satu jukalau instruksi menghasilkan angka genap.
C) AF
AF (Auxilary Flag) diset ke 1 apabila ada carry-out dari lower-nibble ke higher-nible dari operasi 9-bit. Digunakan pada operasi BCD.
D) ZF
ZF (Zero Flag) diset ke 1 jika hasil dari operasi aritmatika atau logika adalah 0.
E) SF
SF (Sign Flag) diset ke 1 jika MSB dari hasil operasi aritmatika atau logika ternya bernilai 1. Angka 0 mengindikasikan bilangan positif begitupun sebaliknya.
F) OF
OF (overflow Flag) diset ke 1 apabila hasil yang merupakan bilangan signed, didak dapat diekspresikan dalam jumlah bit pada operand yang dilakukan.
G) DF
DF (Direction Flag) diset ke 1 maka string bytes dapat diakses dari alamat memori dengan pengurutan menurun. Jika diset 0 maka dapat diakses dengan pengurutan naik.
H) IF
IF (Instruction Flag) diset ke 1 maka prosesor akan mengaktifkan fungsi maskable interrupt, artinya prosesor akan mengenali permintaan inerupt dari luar.
I) TF
TF (Trap Flag) diset ke 1 maka single-set interrupt muncul setelah eksekusi dari setiap instruksi dan program dapat dieksekusi dalam mode single-step. TF hanya dapat di cleared oleh single-step interupt
———————————————————————–
Demikianlah tugas membuat artikel tentang fungsi-fungsi register di mikroprosesor intel 8088 dengan penyesuaian bahasa sendiri. Mudah-mudahan bermanfaat bagi pembaca.
Sekian dan Terimakasih,
Wassalamualaikum Wr.Wb.
Referensi :
http://vheeamalia-sukron.blogspot.co.id/2011/11/jenis-jenis-register-dan-fungsinya.html
Leave a Reply