Anda di halaman 1dari 25

GURU YANG PALING BAIK ADALAH HATI MU TEMAN YANG PALING BAIK ADALAH HATI MU SESUATU YANG PALING

MENGERTI DIRI MU ADALAH HATI MU JADI JAGALAH HATI MU AGAR DIA MAMPU MENJAGA HIDUP MU KARENA HATI MU TAKKAN MENJERUMUSKAN DIRI MU

BAB III 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. Register digunakan untuk menyimpan instruksi dan data yang sedang diproses oleh CPU, sedangkan instruksi-instruksi dan data lainnya yang menunggu giliran untuk diproses masih tersimpan di main memory. Jadi ada 3 macam ingatan yang dipergunakan di dalam sistem komputer yaitu : 1. REGISTER, dipergunakan untuk menyimpan instruksi dan data yang sedang diproses. 2. MAIN MEMORY, dipergunakan untuk menyimpan instruksi dan data yang akan diproses dan hasil dari pengolahan. 3. EXTERNAL MEMORY (simpanan luar), dipergunakan untuk menyimpan program dan data secara permanen.

CPU
Accumulator

IR ALU PC REGITER

Alat Input / Output

Control Unit

MAR

MDR

Adress bus Control bus Main Memory Data bus

ROM
RAM Hubungan alat pemeroses dalam sistem komputer

1. CONTROL UNIT Bagian ini bertugas mengatur dan mengendalikan semua peralatan yang ada pada sistem komputer, secara umum cara kerjanya adalah : - Mengatur dan mengendalikan alat-alat input dan output. - Mengambil instruksi-instruksi dari main memory. - Mengamabil data dari main memory kalau diperlukan oleh proses. - Mengirim instruksi ke ALU bila ada perhitungan arithmatika atau perbandingan logika serta mengawasi kerja ALU. - Menyimpan hasil proses ke main memory. 2. ARITHMATIC AND LOGIC UNIT Tugas utama adalah melakukan semua perhitungan arithmatika yang terjadi sesuai instruksi program. Tugas lainya adalah melakukan keputusan dari operasi logika sesuai dengan instruksi program. Logical Opration meliputi perbandingan dua buah elemen logika dengan menggunakan operator logika. (= , <>, <, <=, >, >=)

3. REGISTER a. Intruction Register (IR), atau disebut juga program register digunakan untuk menyimpan instruksi yang sedang diproses. Pemrosesan program dilakukan instruksi per instruksi. Instruksi yang mendapat giliran untuk diproses diambil dari main memory dan disimpan di instruction regisster (IR). b. Program Counter (PC), atau disebut Control Counter atau instruction counter adalah register yang digunakan untuk menyimpan alamat (adress) lokasi dari main memory yang berisi instruksi yang sedang diproses. c. Accumulator, adalah register yang diberi nama AX register dan tiga buah yang lainnya untuk operand register, yaitu BX, CX dan DX register.

Operand Register : digunakan untuk menampung data atau operand yang sedang di operasikan.
Accumulator register : digunakan untuk menyimpan hasil dari operasi ariithmatika dan operasi logika yang dilakukan ALU.

JENIS-JENIS REGISTER Register yang digunakan oleh mikroprosesor dibagi menjadi 5 bagian dengan tugasnya yang berbeda-beda pula, yaitu : 1. Segmen Register. Register yang termasuk dalam kelompok ini terdiri atas register CS,DS,ES dan SS yang masing-masingnya merupakan register 16 bit. Registerregister dalam kelompok ini secara umum digunakan untuk menunjukkan alamat dari suatu segmen. a. Register CS (Code Segment) digunakan untuk menunjukkan tempat dari segmen yang sedang aktif, juga suatu bagian dari memori yang memuat kode (program dan prosedur) yang digunakan oleh microprocessor. Register CS mendefinisikan alamat awal dari bagian kode pemuatan memori. Pada operasi model real, CS menetapkan awal dari suatu bagian memory 64 K byte; dalam mode terlindung.CS memilih suatu pendeskripsi yang menggambarkan alamat awal dan panjang dari suatu bagian kode pemuatan memori. Segmen kode panjangnya terbatas sampai 64K byte dalam 8088-80286 dan 4G byte dalam 80386, register ini sebaiknya tidak sembarang diubah karena akan menyebabkan kekacauan pada program anda nantinya.

b. 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. Segmen data ini sebagian besar data yang digunakan oleh program. Data diakses dalam segmen data oleh alamat offset atau isi dari register lain yang mempunyai alamat offset, seperti halnya segmen kode dan segmen yang lain panjangnya dibatasi sampai 64 K byte dalam 8088-80286 dan 4G byte dalam 80386 dan di atasnya.

c. 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>. Segmen ini adalah suatu penambahan segmen data yang digunakan oleh beberapa instruksi string untuk menyimpan data tujuan.
d. Register SS (Stack Segment) menunjukkan letak dari segmen yang digunakan oleh stack. Posisi dari arus masuk dalam segmen stack dibatasi oleh register penunjuk stack. Register BP juga mengamati data dalam segmen stack. e. FS dan GS segmen ini adalah register segmen tambahan yang tersedia pada mikroprocessor 80386,80486, pentium dan pentium pro, yang memungkinkan dua segmen memori tambahan diakses oleh programprogram yang dijalankan.

2. 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.

3. General Purpose Register. 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.

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. EAX : dirujuk sebagai register 32-bit (EAX), sebagai register (akumulator) 16bit (AX), atau 2 register 8-bit (AH dan AL). Akumulator digunakan untuk instruksi-instruksi perkalian, pembagian dan beberapa instruksi penyesuaian. Dalam mikroprocessor 80386 ke atas, register ini juga dapat menyimpan alamat offset sebuah lokasi dalam sistem memori.

EBX : dapat dialamati sebagai EBX, BX, (BH, BL). Register (base index) BX dapat menyimpan alamat offset sebuah lokasi memori dalam sistem memori semua versi mikroprocessor. Dalam mikroprocessor 80386 ke atas, EBX mengalamati data memori.

ECX : merupakan register-register serbaguna yang juga dapat digunakn untuk instruksi perhitungan. Dalam mikroprocessor 80386 ke atas, register ini dapat juga menyimpan alamat offset data memori. Instruksi-instruksi yang menggunakan perhitungan merupakan instruksi string yang diulang (REP/REPE/REPNE); dan instruksi pergeseran, perputaran, dan instruksi LOOP/LOOPD. Instruksi pergeseran dan perputaran menggunakan CL, instruksi string berulang memakai CX, dan instruksi LOOP/LOOPD menggunakan CX atau ECX.
EDX : merupakan register serbaguna yang dapat digunakan untuk (data) menyimpan hasil perkalian dan menyimpan sisa dalam pembagian. Dalam mikroprocessor 80386 ke atas, register ini juga mampu mengalamati data memori. EBP : menunjuk sebuah lokasi memori yang dalam semua versi mikriprocessor digunakan untuk mentransfer data memori, Reister ini dialamati sebagai EBP dan BP.

EDI : Sering mengalamati data tujuan string untuk beberapa instruksi string. Regiated ini juga berfungsi sebagai register serbaguna 32-bit (EDI) atau 16-bit (DI).
ESI : Digunakan sebagai ESI dan sebagai SI. Register Indeks sumber sering mengalamati sumber data string untuk beberapa instruksi string. Seperti EDI, ESI juga berfungsi sebaai register serbaguna. Sebagai register 16-bit dialamati sebagai SI; sebagai register 32-bit dialamati sebagai ESI. EIP : Mengalamati instruksi selanjutnya dalam sebuah bagian memori yang didefinisikan sebagaisegmen kode. Register ini merupakan IP (16-bit) ketika mikroprocessor dioprasikan dalam mode real namun menjadi EIP (32bit) bila mikroprocessor 80386 ke atas ke atas dioperasikan dalam mode terlindung. Penunjuk instruksi, yang menunjuk ke instruksi selanjutnya dalam satu prgram, digunakan oleh mikroprocessor untuk mendapatkan instruksi berurutan berikutnya dalam suatu program yang lokasinya terletak di dalam segmen kode. Penunjuk instruksi dapat dimodifikasi dengan instruksi jump atau call. ESP : mengalamati sebuah lokasi memori yang disebut stack. Memori stack menyimpan data melalui penunjuk ini dan akan dielaskan dengan instruksi yang mengalamati data stack. Register disebut SP juka digunakan sebagai register 16 bit dan disebut register ESP jika digunakan sebagai register 32-bit.

4. Index Pointer Register 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.

5. 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 dan register EFLAG (32-bit) yaitu extended FLAG terdapat dalam mikroprocessor 80386 ke atas . Adapun flag yang terdapat pada mikroprosesor 8088 keatas adalah :

31

21

20

19

18

17

16

14

13

12

11

10

ID

VIF

VIF

AC

VM

RT

NT

IO P1

IO P0

8086 / 8088 / 8018 / 80188 80286 80386 / 80486DX 80486SX PENTIUM EFLAG dan FLAG count register untuk seluruh kerabat mikroprcessor 80x86 dan pentium.

C (carray) : carry menyimpan carry setelah penambahan, atau borrow setelah pengurangan Flag carry juga menunjukkan kondisi error seperti yang diperintahkankan oleh program dan prosedur. P (Paritas) : Paritas merupakan 0 logika untuk parits ganjil dan 1 logika untuk paritas genap. Paritas adalah jumlah angka satu dalam bilangan yang menyatakan genap atau ganjil. Jika sebuah bilangan terdiri 3 bilangan biner bit satu, maka termasuk paritas ganjil. Jika terdiri dari nol bit satu, maka termasuk paritas genap. Flag paritas jarang ditemukan dalam aplikasi pemrograma modern dan telah diimplementasikan dalam mikroprocessor Intel generasi pertama untuk mengecek data dalam komunikasi data. Dewasa ini pengecekan paritas tidak dilakukan oleh mikroprocessor, tetapi oleh perralatan komunikasi data. A (Auxiliary Carry) : Carry tambahan (auxiliary carry) menampung carry (carry tengah) setelah penambahan, atau borrow setelah penggurangan antar posisi bit 3 dan 4. Flag bit khusus ini diuji Oleh instruksi DAA dan DAS untuk menyesuaika nilai AL setelah penambahan atau pengurangan satu BCD. Di luar Itu bit flag A tidak dIgunakan oleh mikroprocessor atau instruksi lain. Z (Zero) : Flag not menunjukkan bahwa jumlah dari suatu operasi arithmatika atau logic adalah nol. Jika Z=1, jumlahnya adalah nol, jika Z=0 maka jumlahnya adalah bukan nol.

S (Sign) : Flag tanda akan menampung tanda arithmatika dari asil setelah instruksi arithmatika atau instruksi logik dieksekusi. Jika S = 1, tanda bit negatif, jika S = 0, tanda bit positif.
T (Trap) : Flag trap memungkinkan trapping melalui suatu chip debugging, (suatu program di debug untuk mencari error atau bug). Jika falag T enabel (=1), mikroprocessor akan menghentikan alur program pada keadaan yang diindikasikan oleh register debug dan register control. Jika flag T nya nol logik, fitur terappingnya (debagging) adaalh disable. Program Code View dapat menggunakan fitur trap dan register debug untuk mendebug kesalahan software.

I (Interrupt) : Flag interrupt ini mengendalikan operasi dari pin input INTR (interrupt request). Jika I = 1 pin INTRnya enabel; jika I = 0 pin INTRnya disable. Kondisi dari bit flag I dikntrol oleh instruksi STI (set I flag) dan CLI ( Clear I Flag).
D (Direction) : Flag arah ini memilih salah satu dari mode penambahan atau pengurangan untuk regiater DI dan/atau register SI selama instruksi string. Jika D = 1, register secara otomatis akan dikurangi; jika D = 0, register secara otomatis akan ditambah. Flag D diset dengan instruksi STD (set direction) dan diclear dengan instruksi CLD (clear direction).

O (Overflow) : Overflow terjadi ketika billangan bertanda ditambah atau dikurang. Suatu overflow menunjukkan hasilnya melebihi kapasitas dari mesin. Contohnya jika 7Fh (+127) ditambah, dengan menggunakan penambahan 8 bit, mka pada O1h (+1) hasilnya adalah 80h (-128). Hasil ini meunjukkan suatu kondisi overflow yang ditunjukkan oleh flag overflow untuk penambahan bertanda. Untuk operasi tak bertanda, flag overflow diabaikan.
IOPL (I/O Privilege Level) : IOPL digunakan dalam operasi untuk memilih tingkatan operasi istimewa untuk piranti I/O. Jika arus tingkatan istimewa lebih tinggi atau lebih menjamin daripada IOPL, eksekusi I/O berjalan tanpa gangguan. Jika IOPL lebih rendah dari tingkatan istimewa sekarang, terjadi suatu interrupt yang menyebabkan eksekusi tertunda. Perlu diperhatikan bahwa IOPL 00 paling tinggi atau paling menjamin, sedangkan IOPL 11 adalah yang paling rendah atau paling tak terpercaya. NT (Nested Task) : Flag NT menandakan bahwa task yang dilasanakn bersarang dalam task yang lain dalam operasi mode terlindung. Flag ini diset ketika task di nest oleh perangkat lunak. RF (Resume) : Flag resume digunakan bersama dengan bugging untuk mengontrol kelanjutan eksekusi setelah instruksi berikutnya.

VM (Virtual Mode) : Bit flag VM memilih operasi mode virtual dalam suatu sistem. Suatu sistem mode virtual memngkinkan partisi memori dari DOS yang panjangnya 1 MB hadir bersamaan dalam sistem memori. Pada dasarnya, model ini memampukan program sistem mengeksekusi lebih dari satu program DOS. AC (Aligment Check) : Bit flag AC aktif jika suatu word atau doubleword dialamatkan pada batas suatu nonword atau nndoubleword. Hanya mikroprocessor 80486SX berisi bit AC yang umum digunakan oleh processor numerik 80486SX pendampingnya untuk sinkronisasi. VIF ( Virtual Interrupt Flag) : VIF adalah suatu salinan bit flag interrupt yang digunakan pada procesor Pentium atau pentium Pro. VIP (Virtual Interrupt Pending) : VIP menyediakan informasi tentang suatu interrupt mode interrupt virtual untuk mikroprocesssor Pentium. Ini digunakan dalam pemakaian multitasking untuk memberikan flag virtual intrerrupt pada sistem operasi. ID (Indentification) : Flag ID menunjukkan bahwa mikroprocessor pentium mendukung instruksi CPUID. Instruksi CPUID memberikan informasi tentang mikroprocessor, sesuai dengan versi dan nomor seri dari pabriknya, pada sistem.

SEGMEN DAN OFFSET


Kombinasi dari alamat segmen dan alamat offset mengakses lokasi memori pada mode real. Semua alamat memori mode real terdiri dari alamat segmen dan offset Alamat segmen berada dalam satu register segmen, menetapkan alamat awal dari segmen memori 64k byte.

Alamat offset memilih sembarang lokasi yang memiliki segmen memori 64 Kb.
Dapat di asumsikan register segmen berisi suatu alamat 1000h, tetapi ketika dikonversi alamat ini memiliki segmen awal pada lokasi 1000h. Dalam model real masing-masing register segmen diberi tanda 0h di bagian akhir sebelah kanan. Sebagai contoh : Alamat relatif : 1357h:2468h 1356h:2478h

Alamat absolut :

13570 2468 ------159D8h

13560 2478 ------159D8h

Kombinasi alamat segmen dan offset 16 bit default untuk mikroprocessor 8086 pentium, dirangkum dalam tabel berikut : Register segmen
CS SS DS

Offset
IP SP atau BP BX, DI, SI, bilangan 8 bit atau 16 bit

Tujuan
Alamat Instruksi Alamat Stack Alamat Data

ES

DI untuk instruksi string

Alamat Tujuan string

Kombinasi alamat segmen dan offset 32 bit default untuk mikroprocessor 8086-pentium, yang dirangkum dalam tabel berikut : Register segmen
CS SS DS

Offset
EIP ESP atau EBP EBX,EDI,ESI, bilangan 8 bit atau 32 bit EDI untuk instruksi string Tanpa default Tanpa default

Tujuan
Alamat Instruksi Alamat Stack Alamat Data

ES FS GS

Alamat Tujuan string Alamat umum Alamat umum

Untuk mempresentasikan mode pengalamatan data, maka kita pilih instruksi MOV sebagai landasan dasar untuk menerangkan mode pengalamatan data, sebagai berikut :
Tipe Register Immediate Direct Register tidak langsung Base-plus index Instruksi Mov AX,BX Mov CH,3AH Sumber Register BX Data 3AH Regiater AX Register CL Register BP DSx10H+DISP 10000+1234H DSx10H+BX 10000H+0300H DSx10H+BX+SI 10000H+0300H+ 0200h DSx10H+BX+4 10000H+0300H+ 4 DSx10H+Array+ BX+SI 10000H+1000H+ 0300H+0200H DSx10H+EBX+2x ESI
10000+000003000H +00000400H

Pembangkit alamat

Tujuan Regiater AX Register CH Alamat memori 11234H Alamat memori 10300H Alamat memori 10500H

Mov [1234H],AX
Mov [BX],CL

Mov [BX+SI],BP
Mov CL,[BX+4]

Register relatif

Alamat memori 10304H


Register DX

Registe CL
Alamat memori 11500H

Base realtif plus index

Mov Array[BX+SI],D X
Mov [EBX+2xESI],AX

Index berskala

Register AX

Alamat memori 10700H

RINGKASAN
1. Model pemrograman pada mikroprocessor 8086 sampai 80286 terdiri dari register 8-bit dan register 16-bit. Model pemrograman pada mikroprocessor 80386 dan versi diatasnya terdir dari register 8-bit, register 16-bit, dan register 32-bit serta register segmen 16-bit tambhan :FS dan GS. Register 8-bit adalah AH,AL,BH,BL,CH,CL,DH dan DL. Regiater 16-bit adalah AX.BX,CX,DX,SP,BP,DI DAN SI. Register segmen adalah CS,DS,ES,SS,FS dan GS. Register 32 bit extend adalah EAX,EBX,ECX,EDX,ESP,EBP,EDI,dan ESI. Di samping itu, mikroprocessor memiliki sebuah petunjuk instruksi (IP/EIP) dan register flag (FLAGS dan EFLAGS). Semua alamat memori mode real merupakan dari sebuah alama segmen ditambah sebuah alamat offset. Lokasi awal dari sebuah segmen ditentukan oleh bilangan 16-bit dalam register yang ditambah dengan nol heksadesimal pada digit yang paling kanan. Alamat offset merupakan bilangan 16-bit ditambah dengan alamat segmen 20-bit untuk membentuk alamat memori mode real. Semua instrusi (kode) diakses oleh kombinasi dari CS (alamat segmen) ditambah IP atau EIP (alamat offset).

2.

3.

4.

5. Data secara normal dirujuk melalui kombinasi dari DS (segmen data), dan alamatoffset atau isi regster yang terdiri dari alamat offset. 8086 sampai pentium II menggunakan BX, DI dan SI sebagai register offset default untuk data jika register 16-bit dipilih 8036 dan versi diatasnya dapat menggunakan register 32-bit EAX,EBX,ECX,EDX, dan ESI sebagai register offset default dari data.

DALAM DIRI TERDAPAT SIFAT YANG MEMUNGKINKAN UNTUK BERUBAH HANYA ADA DUA PERUBAHAN BAIK ATAU BURUK BELAJAR UNTUK MEMBUAT FILOSOF DALAM HIDUP MU AGAR KAMU TAHU MAKNA HIDUP MU DIANTARA BERJUTA MAKHLUK CIPTAAN TUHAN

CC FILE BY @MAN_TO_FRIENDS

Anda mungkin juga menyukai