pengertian register

13
 PENGERTIAN REGISTER Dalam pemrograman dengan bahasa Assembly, mau tidak mau anda harus  berhubungan dengan apa yang dinamakan sebagai Register. L alu 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. 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. Arsitektur Mikroprosesor INTEL 8086 Ti nj a uan Umum 8086 merupakan mikroprosesor 16-bit, artinya bagian ALU, register internalnya, dan sebagian besar instruksi-instruksinya dirancang untuk bekerja  pada data 16-bit. 8086 memiliki bus data 16-bit, jadi ia dapat m embaca data dari atau menyimpan data ke memori dan port-port yang ada dalam format 16-bit atau 8-bit . Arsitektur Mikroprosesor INTEL 8086 EXECUTIONUNIT(EU) : FLAG REGISTER 8086 memiliki register bendera dengan panjang 16-bit. Dari 16-bit itu terdapat 9  bendera yang aktif. Dari 9 bendera yang aktif, 6 bendera di a ntaranya (bendera kondisi) digunakan untuk menunjukkan kondisi-kondisi yang dihasilkan oleh  pelaksanaan instruksi yakni bendera CF(carry flag), PF(parity flag), AF(auxiliary carry flag), ZF(zero flag), SF(sign flag), dan OF(overflow flag). Sedangkan 3 bendera lainnya (bendera kontrol) digunakan untuk mengendalikan beberapa operasi prosesor. Bendera-bendera kontrol ini berbeda dengan 6 bendera kondisi dalam hal cara set dan reset-nya. Keenam bendera

Upload: glenjack-glen

Post on 15-Oct-2015

620 views

Category:

Documents


2 download

DESCRIPTION

flag register

TRANSCRIPT

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

    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.

    Arsitektur Mikroprosesor INTEL 8086

    Tinjauan Umum

    8086 merupakan mikroprosesor 16-bit, artinya bagian ALU, register

    internalnya, dan sebagian besar instruksi-instruksinya dirancang untuk bekerja

    pada data 16-bit. 8086 memiliki bus data 16-bit, jadi ia dapat membaca data dari

    atau menyimpan data ke memori dan port-port yang ada dalam format 16-bit

    atau 8-bit .

    Arsitektur Mikroprosesor INTEL 8086

    EXECUTIONUNIT(EU) : FLAG REGISTER

    8086 memiliki register bendera dengan panjang 16-bit. Dari 16-bit itu terdapat 9

    bendera yang aktif. Dari 9 bendera yang aktif, 6 bendera di antaranya (bendera

    kondisi) digunakan untuk menunjukkan kondisi-kondisi yang dihasilkan oleh

    pelaksanaan instruksi yakni bendera CF(carry flag), PF(parity flag),

    AF(auxiliary carry flag), ZF(zero flag), SF(sign flag), dan OF(overflow flag).

    Sedangkan 3 bendera lainnya (bendera kontrol) digunakan untuk

    mengendalikan beberapa operasi prosesor. Bendera-bendera kontrol ini berbeda

    dengan 6 bendera kondisi dalam hal cara set dan reset-nya. Keenam bendera

  • kondisi diset dan direset oleh EU, berdasarkan hasil operasi-operasi aritmetika

    atau logika, sedangkan 3 bendera kontrol diset dan direset oleh instruksi-

    instruksi khusus yang ada pada program. Bendera itu adalah TF (trap flag), IF

    (interrupt flag), dan DF (direction flag).

    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.

    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 dan GS.

    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.

    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.

    + A X + + B X + + C X + + D X +

    +-+--+--+-+ +-+--+--+-+ +-+--+--+-+ +-+--+--+-+

    | AH | AL | | BH | BL | | 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

    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

    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

    +-----+-----+------+------+----+-----+-----+-----+----+----+----+----+----+----+----

    +----+

    | | NT | IOPL |OF | DF | IF | TF | SF | ZF| | AF| | PF | |CF |

    +-----+-----+------+------+----+-----+-----+-----+-----+---+----+----+----+----+----

    +----+

    Gambar Susunan Flags Register 8088

    PF .

    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.

  • 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

    Digunakan bersama flag TS untuk menangani terjadinya intruksi WAIT.

    EM

    Flag ini digunakan untuk mensimulasikan coprosesor 80287 atau 80387.

    TS

    Flag ini tersedia pada 80286 keatas.

    ET

    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.

    Register

    Register merupakan alat penyimpanan kecil yang mempunyai kecepatan akses

    cukup tinggi, yang digunakan untuk menyimpan data dan/atau instruksi yang

    sedang diproses, dan dibentuk oleh 16 titik elektronis di dalam chip

    mikroprosessor itu sendiri. Dengan adanya tempat-tempat penampungan data

    sementara ini, proses pengolahan akan bisa dilakukan secara jauh lebih cepat

    dibandingkan apabila data-data tersebut harus diambil langsung dari lokasi-

    lokasi memori.

  • Register yang dibahas di sini adalah register-register yang terdapat pada

    mikroporsesor keluarga Intel dari 80386-80486, yang mana terdiri dari : general

    purpose register (register serbaguna), pointer register (register pointer), index

    register (register indeks), segment register (register segmen), dan flag register

    (register status). Register-register tersebut semuanya menggunakan register 32-

    bit, kecuali register segmen yang hanya memiliki lebar 16-bit. Selain sebagai

    register 32-bit, register lain (selain register segmen) dapat digunakan sebagai

    register 16-bit, dan khusus untuk register serbaguna dapat digunakan untuk

    register 8-bit.

    Pada masa mikroprosesor 16-bit, semua registernya adalah 16-bit, kecuali

    register serbaguna yang dapat berfungsi sebagai register 16-bit dan 8-bit.

    Sedangkan pada masa mikroprosesor 8-bit register-registernya adalah register 8-

    bit, kecuali register status yang lebarnya 16-bit.

    Berikut adalah penjelasan dari masing-masing register di atas.

    1. General Purpose Register

    General purpose register adalah register yang dipakai untuk keperluan-

    keperluan umum pemrograman. Setiap register ini dapat dialamati sebagai

    register 32-bit, register 16-bit, dan register 8-bit.

    Berikut adalah register serbaguna serta fungsi-fungsi khususnya.

    a) Accumulator Register

    Accumulator register merupakan register serbaguna yang berfungsi sebagai:

    a. tempat penyimpanan sementara hasil suatu operasi aritmatika atau logika;

    b. tempat memasukkan nomor layanan interupsi, untuk keperluan pemesanan

    sebuah layanan interupsi;

    c. tempat menyimpan bilangan yang dikalikan dan setengah bagian terkecil dari

    suatu perkalian; dan

  • d. tempat menyimpan setengah bagian terkecil sebuah bilangan yang akan

    dibagi dan hasil bagi suatu pembagian.

    b) Base Register

    Base register adalah register serbaguna yang berfungsi sebagai tempat

    menyimpan alamat offset data yang terletak di memori.

    c) Counter Register

    Counter register adalah register serbaguna yang berfungsi sebagai:

    a. pencacah untuk operasi loop;

    b. pencacah untuk operasi shift dan rotate; dan

    c. pencacah untuk operasi string.

    d) Data Register

    Data register merupakan register serbaguna yang berfungsi sebagai:

    a. tempat menyimpan setengah bagian terbesar hasil suatu perkalian bilangan

    16-bit dan 32-bit;

    b. tempat menyimpan setengah bagian terbesar suatu bilangan yang akan

    dikenai operasi pembagian, serta sisa suatu pembagian.

    2. Pointer Register

    Pointer register ini sebenarnya dapat berfungsi sebagai register serbaguna, akan

    tetapi register ini lebih sering digunakan untuk menunjukkan alamat sebuah data

    di lokasi memori. Penunjukan alamat ini biasanya dibutuhkan pada saat operasi

    perpindahan data dari atau ke memori, operasi stack, dan penunjukan alamat

    suatu instruksi yang akan dieksekusi.

  • Berikut ini adalah register-register yang termasuk dalam kategori pointer

    register beserta fungsi-fungsi khususnya.

    a) Stack Pointer Register (SP dan ESP)

    Berpasangan dengan register SS, ditulis sebagai SS:SP, stack pointer register

    berfungsi untuk:

    a. menunjukkan alamat stack memori pada operasi PUSH dan POP.

    b. menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan

    mengarahkan kembali control unit ketika prosedur yang dipanggil telah selesai

    dieksekusi.

    b) Base Pointer Register (BP)

    Berpasangan dengan register SS, ditulis sebagai SS:BP, base pointer register

    berfungsi untuk menunjukkan alamat sebuah data di suatu lokasi memori.

    c) Instruction Pointer Register (IP)

    Berpasangan dengan register CS, ditulis sebagai CS:IP, yang berfungsi untuk

    menunjukkan alamat instruksi berikutnya.

    3. Index Register

    Sama halnya dengan Pointer Register, Index Register ini dapat digunakan

    sebagai sebuah register serbaguna, akan tetapi lebih sering digunakan untuk

    menunjukkan alamat sebuah data di lokasi memori pada operasi-operasi string.

    Berikut adalah register-register yang termasuk dalam kategori index register.

    a) Source Index (SI)

    Source Index Register biasanya digunakan pada operasi string untuk mengakses

    alamat suatu data di dalam memori secara langsung.

  • b) Destination Index (DI)

    Fungsi dari Destination Index Register juga sama seperti Source Index Register,

    yakni digunakan pada operasi string untuk mengakses alamat suatu data di

    dalam memori secara langsung.

    4. Segment Register

    Terdiri dari 4 register, yaitu code segment, data segment, stack segment, dan

    extra segment. Segment adalah bagian dari ruang memori yang berkapasitas 64

    kilobyte (65536 byte) dan digunakan secara spesifik untuk menempatkan jenis-

    jenis data tertentu. Misalnya code segment digunakan oleh program dan

    instruksi-instruksi (code), data segment dialokasikan untuk data-data, stack

    segment dipakai untuk menyediakan ruang untuk stack, yang berfungsi untuk

    penyimpanan data dan alamat sementara pada saat program utama sedang

    mengerjakan program percabangan, dan extra segment sebagaimana halnya data

    segment juga dipergunakan sebagai penempatan data-data.

    Berikut adalah register-register yang termasuk kategori Segment Register yaitu:

    1. Code Segment (CS)

    Berfungsi untuk menunjukkan alamat instruksi berikutnya.

    2. Data Segment (DS)

    Berfungsi untuk menunjukkan alamat data operasi pemindahan data

    3. Extra Segment (ES)

    Merupakan register segment tambahan yang digunakan pada operasi-operasi

    string.

    4. Stack Segment (SS)

    a. Menunjukan alamat stack memori pada operasi push dan pop

    b. Menyimpan alamat instruksi berikutnya ketika memanggil suatu prosedur dan

    mengarahkan kembali eksekusi ke program utama.

    5. FS dan GS Register

  • Merupakan register segmen tambahan pada 80836-80486 sehingga segmen

    memori yang dapat diakses oleh program menjadi lebih besar.

    6. Flag Register

    Flag Register berfungsi untuk menunjukkan status sesaat dari mikroprosesor.

    Bit-bit pada flag register akan mengalami perubahan, tergantung proses yang

    baru saja berlangsung. Bit-bit tersebut adalah sebagai berikut:

    1. C (carry): mengindikasikan ada/tidaknya bawaan (carry) setelah operasi

    pengurangan. C = 1 berarti ada bawaan, C = 0 berarti tidak ada bawaan. Bit C

    berfungsi mengidentifikasi kesalahan (error) pada beberapa program dan

    prosedur (procedure).

    2. P (parity): mengindikasikan jumlah bit dalam suatu data. P = 0 berarti

    paritasnya ganjil, P = 1 berarti paritasnya genap. Paritas dapat digunakan untuk

    pengecekan kesalahan pengiriman data.

    3. A (auxiliary carry): mengindikasikan ada/tidaknya bawaan (carry) pada bit

    ke-3 dan ke-4 setelah operasi pengurangan. A=1 berarti ada bawaan, A=0

    berarti tidak ada bawaan. Bit A ini relatif jarang digunakan dalam

    pemrograman.

    4. Z (zero) : mengindikasikan apakah hasil suatu operasi aritmatika atau logika

    bernilai nol atau bukan. Bila Z = 1 berarti hasilnya nol dan Z = 0 berarti

    hasilnya bukan nol. Bit Z ini hampir sama dengan bit C, yakni berfungsi untuk

    mengidentifikasi kesalahan dalam suatu program.

    5. S (sign) : mengindikasikan apakah hasil suatu operasi aritmatika atau logika

    positif atau negatif. Bila S = 1 berarti hasil negatif dan S = 0 berarti hasilnya

    positif.

    6. T (trap) : bila di set 1, dimungkinkan melakukan debugging (penelusuran

    kesalahan).

    7. I (interrupt) : mengendalikan operasi interupsi perangkat keras. Bila I = 1

    berarti pin INTR enable (bisa digunakan), bila I = 0 berarti INTR disable (tidak

    bisa digunakan). Untuk mengendalikannya dapat dilakukan dengan instruksi

    STI (mengeset I=1) dan CLI (mereset I=0).

    8. D (direction) : mengendalikan arah pencacahan (increment atau decrement)

    DI dan SI pada operasi string. Bila D = 1 arah pencacahan adalah turun

  • (decrement), bila D = 0 pencacahan naik (increment). Untuk mengendalikannya

    bisa dengan instruksi STD (mengeset D=1) dan CLD (mereset D=0).

    9. O (overflow) : mengindikasikan apakah hasil operasi penjumlahan atau

    pengurangan melampaui kapasitas mesin atau tidak.

    10. IOPL (input-output privilege level) : digunakan untuk operasi protected

    mode untuk memilih tingkat keistimewaan (privilege level) piranti masuk-

    keluaran.

    11. NT (nested task) : mengindikasikan apakah operasi yang sedang dilakukan

    digandeng (nested) dengan operasi lain pada operasi protected mode.

    12. RF (resume) : digunakan saat debugging untuk mengendalikan kelanjutan

    eksekusi.

    13. VF (virtual mode) : memilih operasi virtual mode pada operasi protected

    mode.

    14. AC (alignment check) : untuk mengecek apakah suatu data word atau

    doubleword dialamati ke memori yang bukan data word atau bukan

    doubleword.