Kamis, 14 November 2013

METODE PENGALAMATAN



Metode pengalamatan merupakan aspek dari set instruksi arsitekturdi sebagian unit pengolah pusat (CPU) desain yang didefinisikan dalam set instruksi arsitektur dan menentukan bagaimana bahasa mesinpetunjuk dalam arsitektur untuk mengidentifikasi operan dari setiap instruksi.. Sebuah mode pengalamatan menentukan bagaimana menghitung alamat memori yang efektif dari operand dengan menggunakan informasi yang diadakan di registerdan / atau konstanta yang terkandung dalam instruksi mesin atau di tempat lain.

Pada prosesor 8051 terdapat 7 cara pengalamatan, yaitu :
·        - Immediate addressing atau instant addressing atau pengalamatan instan.

·         - Register addressing atau pengalamatan register.

·         - Direct addressing atau pengalamatan langsung.

·        - Indirect addressing atau pengalamatan tidak langsung

- Register Indirect Addressing
- Displacement Addressing
- Stack Addresing 
 
Pada prosesor 8051, secara garis besar ada 3 macam lokasi data, yaitu RAM internal, ROM internal dan SFR. RAM juga biasa disebut data memory atau memory tempat meletakkan data, sedangkan ROM juga biasa disebut code memory atau memory tempat meletakkan kode instruksi. Tetapi biasanya data yang berupa konstanta ditulis pada ROM internal. Berikut ini adalah contoh mode pengalamatan.

1. Immediate Addressing.
MOV   50H,#40H       ;masukkan ke RAM alamat 50H data 40H
Kode instruksi di atas adalah contoh mode pengalamatan instan. MOV adalah kode operasi atau opcode (operation code) untuk menyalin data ke lokasi tertentu. 50H adalah operand pertama, sedangkan 40H adalah operand kedua. Operand adalah data atau lokasi data yang dilibatkan dalam eksekusi instruksi.
Operand pertama ditulis tanpa tanda ‘#’ artinya angka 50H merupakan alamat memory, dalam hal ini RAM, sedangkan operand kedua diawali dengan tanda ‘#’ yang berarti instan, maksudnya data yang akan dilibatkan telah tersedia pada instruksi tsb, yaitu angka 20H. Pada mode pengalamatan instan, biasanya operand kedua berupa konstanta, sedangkan operand pertamanya dapat berupa alamat RAM internal, register atau SFR. Contoh lain untuk mode pengalamatan instan, misalnya :
            MOV   R5,#40H                      ;masukkan data 40H ke R5
            MOV   TMOD,#01010001B   ;masukkan data 01010001 ke register TMOD
            ADD   A,#12                            ;A = A + 12
Keuntungan:
  1. Tidak adanya referensi memori selain dari instruksi yang diperlukan untuk memperoleh operand
  2. Menghemat siklus instruksi sehingga proses keseluruhan akan cepat
Kekurangan:
  1. Ukuran bilangan dibatasi oleh ukuran field alamat

2. Register Addressing.
            MOV   50H,R4            ;salin isi R4 ke RAM alamat 50H.
Kode instruksi di atas merupakan contoh mode pengalamatan register, operand 2 berupa register, dalam hal ini R4. Data yang akan dilibatkan dalam operasi ini berada di dalam R4. Sedangkan operand 1 dapat berupa RAM maupun SFR.
Dalam pemrograman 8051, tidak dimungkinkan penulisan kode program yang melibatkan 2 register. Tetapi karena alamat register dapat diganti dengan alamat RAM internal, maka ada cara lain untuk melibatkan 2 register dalam 1 kode instruksi. Berikut ini adalah beberapa contoh lain mode pengalamatan register.
MOV   04H,R3            ;sama dengan MOV     R4,R3 untuk Register Bank 0
MOV   0BH,R3           ;sama dengan MOV     R4,R3 untuk Register Bank 1
Kelebihan Register Addressing :
  • Diperlukan field alamat berukuran kecil dalam instruksi dan tidak diperlukan referensi memori
  • Akses ke regster lebih cepat daripada akses ke memori, sehingga proses eksekusi akan lebih cepat
Kekurangan Register Addressing : Ruang alamat menjadi terbatas

3. Direct Addressing.
            MOV   50H,40H          ;salin isi RAM alamat 40H ke RAM alamat 50H.
Kode instruksi di atas adalah contoh mode pengalamatan langsung. Data yang akan dilibatkan dalam operasi instruksi berada di dalam RAM internal, dalam contoh ini RAM alamat 40H. Direct address bukan hanya meliputi RAM internal tetapi juga SFR, baik operand pertama maupun operand kedua dapat berupa lokasi RAM maupun SFR. Berikut ini adalah contoh lain pengalamatan langsung,
            MOV   A,P1                ;isi Port 1 disalin ke accumulator
            MOV   40H,TL0          ;low-byte dari Timer 0 disalin ke RAM internal alamat 40H
            MOV   P2,50H            ;menyalin isi RAM internal alamat 50H ke Port 2
Kelebihan:
  • Field alamat berisi efektif address sebuah operand
  • Teknik ini banyak digunakan pada komputer lama dan komputer ecil
  • Hanya memerlukan sebuah referensi memori dan tidak memerlukan kalkulus khusus
Kelemahan:
  • Keterbatasan field alamat karena panjang field alamat biasanya lebih kecil dibandingkan panjang word Contoh: ADD A ; tambahkan isi pada lokasi alamat A ke akumulator

4. Indirect Addressing.
MOV   R1,#40H         ;mengisi R1 dengan nilai 40H
MOV   A, @R1           ;menyalin isi RAM yang alamatnya tersimpan di R1
                                    ;yaitu RAM alamat 40H ke accumulator.
INC     R1                   ;isi R1 ditambah 1
MOV   P1,@R1          ;menyalin isi RAM alamat 41H ke Port 1.

Kode instruksi di atas adalah contoh mode pengalamatan tak langsung, di mana salah satu operandnya berupa RAM internal yang alamatnya tersimpan di R1. Register yang digunakan untuk operasi pengalamatan tak langsung hanyalah R0, R1 dan DPTR.
            Pada contoh di atas, R1 diisi angka 40H, setelah itu isi R1 dijadikan penunjuk alamat RAM internal, sehingga instruksi kedua merupakan perintah untuk menyalin isi RAM internal alamat 40H ke dalam accumulator. Instruksi ketiga adalah instruksi untuk menambah satu isi R1, sehingga sekarang isi R1 adalah angka 41H.
Kelebihan Indirect Addresing : Ruang bagi alamat menjadi besar sehingga semakin banyak alamat yang dapat referensi
Kekurangan Indirect Addresing : Diperlukan referensi memori ganda dalam satu fetch sehingga memperlambat proses operasi.

5. Register Indirect Addressing
Metode pengalamatan register tidak langsung mirip dengan metode pengalamatan tidak langsung  Perbedaannya adalah field alamat mengacu pada alamat register. Letak operand berada pada memori yang dituju oleh isi register.

Kelebihanan dan kekurangan pengalamatan register tidak langsung adalah sama dengan pengalamatan tidak langsung. Keterbatasan field alamat  diatasi dengan pengaksesan memori yang tidak langsung sehingga alamat yang dapat direferensi makin banyak. Dalam satu siklus pengambilan dan penyimpanan, metode pengalamatan register tidak langsung hanya menggunakan satu referensi memori utama sehingga lebih cepat daripada metode pengalamatan tidak langsung.

6. Displacement Addressing
                Displacement Addressing adalah menggabungkan kemampuan pengalamatan langsung dan pengalamatan register tidak langsung. Metode ini mensyaratkan instruksi memiliki dua buah field alamat, sedikitnya sebuah field yang eksplisit. Field eksplisit bernilai A dan field implisit mengarah pada register.
Ada tiga model displacement, yaitu Relative addressingBase register addressing, dan Indexing

7.  Stack Addresing
Stack adalah array lokasi yang linier = pushdown list = last-in-first-outStack merupakan blok lokasi yang terbalik. Butir ditambakan ke puncak stack sehingga setiap saat blok akan terisi secara parsial. Yang berkaitan dengan stack adalah pointer yang nilainya merupakan alamat bagian paling atas stack. Dua elemen teratas stack dapat berada di dalam register CPU, yang dalam hal ini stack pointer mereferensi ke elemen ketiga stackStack pointer tetap berada dalam register. Dengan demikian, referensi-referensi  ke lokasi stack di dalam memori pada dasarnya merupakan pengalamatan register tidak langsung.

Referensi:

SET INSTRUKSI




Set instruksi (instruction set) adalah sekumpulan lengkap instruksi yang dapat di mengerti oleh sebuah CPU, set instruksi sering juga disebut sebagai bahasa mesin (machine code), karna aslinya juga berbentuk biner kemudian dimengerti sebagai bahasa assembly, untuk konsumsi manusia (programmer), biasanya digunakan representasi yang lebih mudah dimengerti oleh manusia.
Sebuah instruksi terdiri dari sebuah opcode, biasanya bersama dengan beberapa informasi tambahan seperti darimana asal operand-operand dan kemana hasil-hasil akan ditempatkan. Subyek umum untuk menspesifikasikan di mana operand-operand berada (yaitu, alamat-alamatnya) disebut pengalamatan
Pada beberapa mesin, semua instruksi memiliki panjang yang sama, pada mesin-mesin yang lain mungkin terdapat banyak panjang berbeda. Instruksi-instruksi mungkin lebih pendek dari, memiliki panjang yang sama seperti, atau lebih panjang dari panjang word. Membuat semua instruksi memiliki panjang yang sama lebih muda dilakukan dan membuat pengkodean lebih mudah tetapi sering memboroskan ruang, karena semua instruksi dengan demikian harus sama panjang seperti instruksi yang paling panjang.

Dua bagian utama arsitektur komputer:
1. Instruction Set Architecture (ISA) / Arsitektur Set Instruksi
ISA meliputi spesifikasi yang menentukan bagaimana programmer bahasa mesin akan berinteraksi oleh komputer.

2. Hardware System Architecture (HSA) / Arsitektur System Hardware
HSA berkaitan dengan subsistem hardware utama komputer (CPU, system memori dan I/O). HSA mencakup desain logis dan organisasi arus data dari subsistem.
Di dalam sebuah instruksi terdapat beberapa elemen-elemen instruksi:
  1. Operation code (op code)
  2. Source operand reference
  3. Result operand reference
  4. Xext instruction preference
Format instruksi (biner):
Misalkan instruksi dengan 2 alamat operand : ADD A,B A dan B adalah suatu alamat register.
Beberapa simbolik instruksi:
ADD               : Add (jumlahkan)
SUB                : Subtract (Kurangkan)
MPY/MUL     : Multiply (Kalikan)
DIV                 : Divide (Bagi)
LOAD             : Load data dari register/memory
STOR              : Simpan data ke register/memory
MOVE             : pindahkan data dari satu tempat ke tempat lain
SHR                : shift kanan data
SHL                : shift kiri data .dan lain-lain

Cakupan jenis instruksi:
Data processing           : Aritmetik (ADD, SUB, dsb); Logic (AND, OR, NOT,    SHR, dsb);     konversidata
Data storage (memory)  : Transfer data (STOR, LOAD, MOVE, dsb)
Data movement              : Input dan Output ke modul I/O
Program flow control    : JUMP, HALT, dsb.

Bentuk instruksi:

-          Format instruksi 3 alamat
Mempunyai bentuk umum seperti : [OPCODE][AH],[AO1],[AO2]. Terdiri dari satu alamt hasil, dan dua alamat operand, misal SUB Y,A,B Yang mempunyai arti dalam bentuk algoritmik : Y := A – B dan arti dalam bentuk penjelasan : kurangkan isi reg a dengan isi reg B, kemudian simpan hasilnya di reg Y. bentuk bentuk pada format ini tidak umum digunakan di dalam computer, tetapi tidak dimungkinkan ada pengunaanya, dalam peongoprasianya banyak register sekaligus dan program lebih pendek.
Contoh:
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
SUB Y, A, B              Y := A – B
MPY T, D, E               T := D × E
ADD T, T, C               T := T + C
DIV Y, Y, T               Y:= Y / T
Memerlukan 4 operasi

-          Format instruksi 2 alamat
Mempunyai bentuk umum : [OPCODE][AH],[AO]. Terdiri dari satu alamat hasil merangkap operand, satu alamat operand, missal : SUB Y,B yang mempunyai arti dalam algoritmik : Y:= Y – B dan arti dalam bentuk penjelasan : kurangkan isi reg Y dengan isi reg B, kemudian simpan hasillnya di reg Y. bentuk bentuk format ini masih digunakan di computer sekarang, untuk mengoprasikan lebih sedikit register, tapi panjang program tidak bertambah terlalu banyak.
Contoh :
A, B, C, D, E, T, Y adalah register
Program: Y = (A – B) / ( C + D × E)
MOVE Y, A               Y := A
SUB Y, B                   Y := Y – B
MOVE T, D                T := D
MPY T, E                    T := T × E
ADD T, C                   T := T + C
DIV Y, T                    Y:= Y / T
Memerlukan 6 operasi

-          Format instruksi 1 alamat
Mempunyai bentuk umum : [OPCODE][AO]. Terdiri dari satu alamat operand, hasil disimpan di accumulator, missal : SUB B yang mempunyai arti dalam algoritmik : AC:= AC – B dan arti dalam bentuk penjelasan : kurangkan isi Acc dengan isi reg B, kemudian simpan hasillnya di reg Acc. bentuk bentuk format ini masih digunakan di computer jaman dahulu, untuk mengoprasikan di perlukan satu  register, tapi panjang program semakin bertambah.
Contoh :
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
LOAD D                     AC := D
MPY E                        AC := AC × E
ADD C                       AC := AC + C
STOR Y                      Y := AC
LOAD A                     AC := A
SUB B                        AC := AC – B
DIV Y                                     AC := AC / Y
STOR Y                      Y := AC
Memerlukan 8 operasi

-          Format instruksi 0 alamat
Mempunyai bentuk umum : [OPCODE]. Terdiri dari semua alamat operand implicit, disimpan dalam bentuk stack. Operasi yang biasanya membutuhkan 2 operand, akan mengambil isi stack paling atas dan dibawahnya missal : SUB yang mempunyai arti dalam algoritmik : S[top]:=S[top-1]-S[top] dan arti dalam bentuk penjelasan : kurangkan isi stack no2 dari atas dengan isi stack paling atas, kemudian simpan hasilnya di stack paling atas, untuk mengoprasikan ada beberapa instruksi khusus stack PUSH dan POP.
Contoh :
A, B, C, D, E, Y adalah register
Program: Y = (A – B) / ( C + D × E)
PUSH A                      S[top] := A
PUSH B                      S[top] := B
SUB                            S[top] := A – B
PUSH C                      S[top] := C
PUSH D                      S[top] := D
PUSH E                      S[top] := E
MPY                           S[top] := D × E
ADD                           S[top] := C + S[top]
DIV                             S[top] := (A – B) /S[top]
POP Y                         Out := S[top]
Memerlukan 10 operasi

Set instruksi pada CISC:
Berikut ini merupakan karakteristik set instruksi yang digunakan pada beberapa komputer yang memiliki arsitektur CISC
Perbandingan set instruksi
Beberapa computer CISC (Complex Instruction Set Computer) menggunakan cara implist dalam menentukan mode addressing pada setiap set instruksinya. Penentuan mode addressing dengan cara implicit memiliki arti bahwa pada set instruksi tidak di ada bagian yang menyatakan tipe dari mode addressing yang digunakan, deklarasi dari mode addressing itu berada menyatu dengan opcode. Lain hal nya dengan cara imsplisit, cara eksplisit sengaja menyediakan tempat pada set instruksi untuk mendeklarasikan tipe mode addressing. Pada cara eksplisit deklarasi opcode dan mode addressing berada terpisah.
Data pada tempat deklarasi mode addressing diperoleh dari logaritma basis dua jumlah mode addressing. Jika deklarasi mode addressing dilakukan secara implicit akan menghemat tempat dalam set instruksi paling tidak satu bit untuk IBM 3090 dan 6 bit untuk MC68040. Perubahan satu bit pada set instruksi akan memberikan jangkauan alamat memori lebih luas mengingat range memori dinyatakan oleh bilangan berpangkat dua.

ELEMEN-ELEMEN DARI INSTRUKSI MESIN (SET INSTRUKSI)
* Operation Code (opcode) : menentukan operasi yang akan dilaksanakan
* Source Operand Reference : merupakan input bagi operasi yang akan dilaksanakan
* Result Operand Reference : merupakan hasil dari operasi yang dilaksanakan
* Next instruction Reference : memberitahu CPU untuk mengambil (fetch) instruksi berikutnya setelah instruksi yang dijalankan selesai. Source dan result operands dapat berupa salah satu diantara tiga jenis berikut ini:
  • Main or Virtual Memory
  • CPU Register
  • I/O Device
DESAIN SET INSTRUKSI
Desain set instruksi merupakan masalah yang sangat komplek yang melibatkan banyak aspek, diantaranya adalah:
  1. Kelengkapan set instruksi
  2. Ortogonalitas (sifat independensi instruksi)
  3. Kompatibilitas : – Source code compatibility – Object code Compatibility
Selain ketiga aspek tersebut juga melibatkan hal-hal sebagai berikut:
  1. Operation Repertoire: Berapa banyak dan operasi apa saja yang disediakan, dan berapa sulit operasinya
  2. Data Types: tipe/jenis data yang dapat olah Instruction Format: panjangnya, banyaknya alamat, dsb.
  3. Register: Banyaknya register yang dapat digunakan 4.Addressing: Mode pengalamatan untuk operand

FORMAT INSTRUKSI 
* Suatu instruksi terdiri dari beberapa field yang sesuai dengan elemen dalam instruksi tersebut. Layout dari suatu instruksi sering disebut sebagai Format Instruksi (Instruction Format).

OPCODE OPERAND REFERENCE OPERAND REFERENCE JENIS-JENIS OPERAND 
* Addresses (akan dibahas pada addressing modes)
* Numbers : – Integer or fixed point – Floating point – Decimal (BCD)
* Characters : – ASCII – EBCDIC
* Logical Data : Bila data berbentuk binary: 0 dan 1

JENIS INSTRUKSI 
* Data processing: Arithmetic dan Logic Instructions
* Data storage: Memory instructions
* Data Movement: I/O instructions
* Control: Test and branch instructions

TRANSFER DATA 
* Menetapkan lokasi operand sumber dan operand tujuan.
* Lokasi-lokasi tersebut dapat berupa memori, register atau bagian paling atas daripada stack.
* Menetapkan panjang data yang dipindahkan.
* Menetapkan mode pengalamatan.
* Tindakan CPU untuk melakukan transfer data adalah :
a. Memindahkan data dari satu lokasi ke lokasi lain.
b. Apabila memori dilibatkan :
1. Menetapkan alamat memori.
2. Menjalankan transformasi alamat memori virtual ke alamat memori aktual.
3. Mengawali pembacaan / penulisan memori

Operasi set instruksi untuk transfer data :
* MOVE : memindahkan word atau blok dari sumber ke tujuan
* STORE : memindahkan word dari prosesor ke memori.
* LOAD : memindahkan word dari memori ke prosesor.
* EXCHANGE : menukar isi sumber ke tujuan.
* CLEAR / RESET : memindahkan word 0 ke tujuan.
* SET : memindahkan word 1 ke tujuan.
* PUSH : memindahkan word dari sumber ke bagian paling atas stack.
* POP : memindahkan word dari bagian paling atas sumber

ARITHMETIC
Tindakan CPU untuk melakukan operasi arithmetic :
  1. Transfer data sebelum atau sesudah.
  2. Melakukan fungsi dalam ALU.
  3. Menset kode-kode kondisi dan flag.
Operasi set instruksi untuk arithmetic :
1. ADD : penjumlahan 5. ABSOLUTE
2. SUBTRACT : pengurangan 6. NEGATIVE
3. MULTIPLY : perkalian 7. DECREMENT
4. DIVIDE : pembagian 8. INCREMENT

Nomor 5 sampai 8 merupakan instruksi operand tunggal. LOGICAL
* Tindakan CPU sama dengan arithmetic
* Operasi set instruksi untuk operasi logical :
1. AND, OR, NOT, EXOR
2. COMPARE : melakukan perbandingan logika.
3. TEST : menguji kondisi tertentu.
4. SHIFT : operand menggeser ke kiri atau kanan menyebabkan konstanta pada ujung bit.
5. ROTATE : operand menggeser ke kiri atau ke kanan dengan ujung yang terjalin.

CONVERSI
Tindakan CPU sama dengan arithmetic dan logical.
* Instruksi yang mengubah format instruksi yang beroperasi terhadap format data.
* Misalnya pengubahan bilangan desimal menjadi bilangan biner.
* Operasi set instruksi untuk conversi :
1. TRANSLATE : menterjemahkan nilai-nilai dalam suatu bagian memori berdasrkan tabel korespodensi.
2. CONVERT : mengkonversi isi suatu word dari suatu bentuk ke bentuk lainnya.

INPUT / OUPUT 
* Tindakan CPU untuk melakukan INPUT /OUTPUT :
1. Apabila memory mapped I/O maka menentukan alamat memory mapped.
2. Mengawali perintah ke modul I/O
* Operasi set instruksi Input / Ouput :
1. INPUT : memindahkan data dari pernagkat I/O tertentu ke tujuan
2. OUTPUT : memindahkan data dari sumber tertentu ke perangkat I/O
3. START I/O : memindahkan instruksi ke prosesor I/O untuk mengawali operasi I/O
4. TEST I/O : memindahkan informasi dari sistem I/O ke tujuan TRANSFER CONTROL
* Tindakan CPU untuk transfer control : Mengupdate program counter untuk subrutin , call / return.
* Operasi set instruksi untuk transfer control :
1. JUMP (cabang) : pemindahan tidak bersyarat dan memuat PC dengan alamat tertentu.
2. JUMP BERSYARAT : menguji persyaratan tertentu dan memuat PC dengan alamat tertentu atau tidak melakukan apa tergantung dari persyaratan.
3. JUMP SUBRUTIN : melompat ke alamat tertentu.
4. RETURN : mengganti isi PC dan register lainnya yang berasal dari lokasi tertentu.
5. EXECUTE : mengambil operand dari lokasi tertentu dan mengeksekusi sebagai instruksi
6. SKIP : menambah PC sehingga melompati instruksi berikutnya.
7. SKIP BERSYARAT : melompat atau tidak melakukan apa-apa berdasarkan pada persyaratan
8. HALT : menghentikan eksekusi program.
9. WAIT (HOLD) : melanjutkan eksekusi pada saat persyaratan dipenuhi
10. NO OPERATION : tidak ada operasi yang dilakukan.

ADDRESSING MODES
Jenis-jenis addressing modes (Teknik Pengalamatan) yang paling umum:
* Immediate
* Direct
* Indirect
* Register
* Register Indirect
* Displacement
* Stack

CONTROL SYSTEM 
* Hanya dapat dieksekusi ketika prosesor berada dalam keadaan khusus tertentu atau sedang mengeksekusi suatu program yang berada dalam area khusus, biasanya digunakan dalam sistem operasi. * Contoh : membaca atau mengubah register kontrol.

JUMLAH ALAMAT (NUMBER OF ADDRESSES) 
* Salah satu cara tradisional untuk menggambarkan arsitektur prosessor adalah dengan melihat jumlah alamat yang terkandung dalam setiap instruksinya.
* Jumlah alamat maksimum yang mungkin diperlukan dalam sebuah instruksi :
1. Empat Alamat ( dua operand, satu hasil, satu untuk alamat instruksi berikutnya)
2. Tiga Alamat (dua operand, satu hasil)
3. Dua Alamat (satu operand merangkap hasil, satunya lagi operand)
4. Satu Alamat (menggunakan accumulator untuk menyimpan operand dan hasilnya)

Macam-macam instruksi menurut jumlah operasi yang dispesifikasikan
1. O – Address Instruction
2. 1 – Addreess Instruction.
3. N – Address Instruction
4. M + N – Address Instruction

Macam-macam instruksi menurut sifat akses terhadap memori atau register
1. Memori To Register Instruction
2. Memori To Memori Instruction
3. Register To Register Instruction