11/20/2015
Tahun Akademik 2015/2016 Semester I
DIG1B3 – Konfigurasi Perangkat Keras Komputer
SAP-2 Mohamad Dani (MHM) E-mail:
[email protected]
Hanya dipergunakan untuk kepentingan pengajaran di lingkungan Telkom Applied Science School
Setelah mengikuti perkuliahan ini mahasiswa dapat:
Memahami Arsitektur SAP-2. Menjelaskan cara kerja SAP-2. Menjelaskan instruksi-instruksi yang ada pada SAP-2. Membuat program sederhana untuk SAP-2.. Dapat menggunakan Logisim dan ISIS Proteus untuk mensimulasikan cara kerja SAP-2 untuk program yang diload ke RAM SAP-2.
1
11/20/2015
Komputer SAP-2 (Simple As Possible Versi 2)
Perancangan komputer SAP bertujuan untuk memperkenalkan semua ide penting dibalik operasi komputer tanpa harus tenggelam dalam kerumitan yang tidak perlu. Meski sederhana, SAP sudah mengandung banyak konsep yang lanjut. SAP-2 merupakan tahap pengembangan dari komputer SAP-1 yang memiliki jumlah instruksi yang lebih banyak dengan kapasitas memori yang lebih banyak dengan fitur yang lebih lengkap.
ARSITEKTUR SAP-2 Bus W ACKNOWLEDGE
8
Hexadecimal Keyboard encoder 8
Input Port 2
8
PC
16
8
Accumulator
8
ALU
8
TMP
8
B
8
C
8
Input Port 1
2
FLAGS
8
Hexadecimal Display
8
16
MAR 16
0
SERIAL IN 7
Address
64K Memory 8
Data
MDR
8
IR
8
8
Output Port 3
8
Output Port 4
0 7
SERIAL OUT ACKNOWLEDGE
8
READY
Controller/ Sequencer
2
11/20/2015
ARSITEKTUR SAP-2: Input Port
SAP-2 memiliki 2 buah input port yaitu input port 1 dan 2.
Dihubungkan dengan keyboard heksadesimal untuk menuliskan data & instruksi.
Sinyal Ready dikirim ke jalur 0 Input Port 2 untuk menunjukkan data pada Input Port 1 telah benar.
Sinyal SERIAL IN untuk masuk ke jalur 7 pada Input Port 2.
Bus W ACKNOWLEDGE
8
Hexadecimal Keyboard encoder
READY
0
SERIAL IN
7
Input Port 1
8
Input Port 2
8
ARSITEKTUR SAP-2: PC dan MAR Bus W ACKNOWLEDGE
8
Hexadecimal Keyboard encoder
0
SERIAL IN 7
8
Input Port 2
8
PC
16
MAR 16
READY
Input Port 1
Address
16
PC (Program Counter) Lebar 16-bit (0000 H – FFFF H) Nilai PC masuk ke MAR Instruksi dilaksanakan secara berurutan dari alamat 0000 sampai ketemu instruksi HLT Dapat diisi nilai 16-bit dari instruksi jump Jalur yang menghubungkan PC dengan bus W ada 2: 1 jalur untuk mengirim nilai 1 jalur untuk menerima jump MAR (Memory Address Register) Menerjemahkan alamat dari PC untuk diproses ke memori.
3
11/20/2015
ARSITEKTUR SAP-2: 64K Memory Bus W
16
MAR 16
Address
64K Memory 8
Data
Lebar data 8-bit. Penggunaan alamat memori : 2KB awal (0000H - 07FFH) untuk program monitor. 0800H – FFFFH untuk instruksi dan data. Program monitor untuk masukan dari keyboard dan kondisi yang terjadi selama proses
ARSITEKTUR SAP-2: MDR (Memory Data Register)
Untuk menyimpan sementara data yang dibaca atau akan dimasukkan ke dalam memori.
Saat operasi baca data masuk ke MDR untuk diteruskan ke Bus W.
Saat operasi tulis, data dari bus W akan diteruskan ke memori.
Bus W
64K Memory 8
MDR
8
4
11/20/2015
ARSITEKTUR SAP-2: IR (Instruction Register) & Controller/Sequencer (CS) Bus W
IR
Instruksi lebarnya 8-bit (sama dengan prosesor 8080/8085 dari Intel) untuk diteruskan ke controller/sequencer.
Jumlah instruksi yang bisa dimiliki 256 buah.
SAP-2 hanya punya 43 instruksi.
8
8
IR (Instruction Register)
Controller/ Sequencer
CS (CONTROLLER/SEQUENCER)
Instruksi dari IR akan diterjemahkan mejadi sinyal kontrol (CON).
ARSITEKTUR SAP-2: Accumulator dan ALU
Accumulator
Untuk menyimpan sementara hasil operasi ALU.
Data dari bus W bisa dari memori atau hasil operasi ALU
Keluaran data dapat ditransfer ke output port.
Bus W
8
8
Accumulator
ALU
2
FLAGS
8
ALU
Untuk menyelesaikan operasi aritmetika & logika
Lebar 8-bit (jadi SAP-2 adlh prosesor 8-bit)
Terdapat 2-bit FLAG :
1 bit untuk sign flag (1 hasil ALU negatif, 0 positif).
1 bit untuk zero flag (1 hasil bukan 0, 0 hasil 0).
5
11/20/2015
ARSITEKTUR SAP-2: Register TMP, B dan C
Untuk menyimpan sementara nilai yang akan dioperasikan atau hasil operasi.
Khusus register TMP menyimpan data yang akan dioperasikan oleh ALU.
Lebih banyak register untuk menyimpan data sementara akan lebih baik.
Data sementara tidak hanya disimpan di Accumulator A.
Untuk mengkomunikasikan proses dengan pengguna.
Pengguna dapat melihat hasilnya lewat Hexadesimal Display.
Bus W
ALU
8
TMP
8
B
8
C
8
8
ARSITEKTUR SAP-2: Output Port 3 dan 4 hasil
Bus W
8
Output Port 3
8
Output Port 4
8
Hexadecimal Display SERIAL OUT ACKNOWLEDGE
6
11/20/2015
Jalur 2 Arah Bus W ACKNOWLEDGE
Hexadecimal Keyboard encoder
n
8
(a) 8
0
READY
SERIAL IN 7
Input Port 2
8
PC
16
MAR
16
(b)
Accumulator
(a) JALUR SATU ARAH
8
Input Port 1
n
ALU
8
TMP
2
FLAGS
(b) JALUR DUA ARAH (satu untuk IN satu untuk
8
8
16
OUT)
B
8 Address
64K Memory
C
8
8
Data
8
IR
8
8
Output Port 3
8
Output Port 4
8 0 7
Hexadecimal Display SERIAL OUT ACKNOWLEDGE
8
MDR
Controller/ Sequencer
Instruction Set SAP-2 (1)
Instruksi terdiri dari 2 bagian :
Operational code (Opcode)
Operand (nilai yang dioperasikan)
Kebutuhan memori untuk operand tergantung jenis instruksi.
Terdapat 43 Instruksi pada SAP-2
Contoh 3 instruksi dimulai dari alamat 1000H:
ADD B op code 80, tidak butuh memori
MVI A,18H op code 3E butuh 1 alamat memori
STA 4861H op code 32 butuh 2 alamat memori
7
11/20/2015
Instruction Set SAP-2 (2)
Instruction Set SAP-2 (3)
8
11/20/2015
Siklus Instruksi
Secara garis besar, instruksi pada SAP-2 diselesaikan jadi 3 tahap : Fetch Siklus Fetch sama dg SAP-1 di mana akhir dari siklus adalah op code ada di IR.
Penerjemahan (decode) Siklus penerjemah dilakukan di controller/sequencer. hasil penerjemahan dikeluarkan oleh CON dan digunakan pada tahap eksekusi.
Execute Melakukan eksekusi berdasarkan sinyal kontrol CON.
Jenis-Jenis Instruksi SAP-2 Instruksi
Mengacu Memori (Memory Reference Instruction, MRI) Instruksi antar Register Instruksi Lompat dan Pemanggilan (Jump & Call Instruction) Instruksi Logika (Logic Instruction) Instruksi lain-lain
9
11/20/2015
MRI (Memory Reference Instruction) Yang termasuk ke MRI: LDA (load the accumulator) STA (store the accumulator) MVI (move immediate)
MRI melibatkan pengaksesan memori 2x, yaitu saat fetch dan eksekusi, sehingga lama.
MRI : LDA Berfungsi
untuk menyalin data memori pada alamat tertentu ke dalam akumulator.
Format instruksi : LDA Alamat Contoh: Mnemonic LDA 1500H
Keterangan A [1500H]
Instruksi memuat data dari alamat memori 1500H ke akumulator
10
11/20/2015
MRI : STA Berfungsi
untuk menyalin data dari akumulator ke memori pada alamat tertentu.
Format instruksi : STA Alamat Contoh: Mnemonic STA 1500H
Keterangan [1500H] A
Misal sebelum instruksi isi akumulator BFH. Maka nilai BFH ini akan disalin ke memori alamat 1500H.
MRI : MVI Berfungsi
untuk transfer data yang menyalin data 8 bit ke dalam register. Operand yang terlibat adalah register A, B, C.
Format instruksi : MVI Register, byte Contoh: Mnemonic
Keterangan
MVI A, 12H
A 11H
MVI B, 34H
B 34H
MVI C, 56H
C 56H
Setelah 3 instruksi dijalankan, maka nilai Register A = 11H, B = 34H, C = 56H
11
11/20/2015
Contoh 1: Buatlah
mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang memasukkan data ke accumulator dengan 40H, Register B dengan 41H, Register C dengan 42H dan kemudian program menyimpan data Accumulator A ke lokasi memori 6285H!. Lokasi awal program di 2000H.
Solusi: Alamat
Mnemonic
Bahasa Mesin
Keterangan
2000H
MVI A, 40H
3E 40
A 40H
2002H
MVI B, 41H
06 41
B 41H
2004H
MVI C, 42H
0E 42
C 42H
2006H
STA 6285H
32 85 62
[6285H] A
2009H
HLT
76
STOP
Instruksi Antar Register Proses
perpindahan data tidak menggunakan memori. Terjadi antar register secara langsung. Lebih cepat daripada MRI. Contoh : MOV (move; untuk move register) ADD SUB INR (Increment) DCR (Decrement)
12
11/20/2015
Instruksi Antar Register : MOV (Move Register) Berfungsi
untuk transfer data yang menyalin data 8 bit dari satu register ke register lain. Operand yang terlibat adalah register A, B, C.
Format instruksi : MOV Register Tujuan, Register Asal Contoh: Mnemonic MOV A, B MOV B, C MOV C, A
Keterangan AB BC C A
Instruksi Antar Register : ADD & SUB Berfungsi
untuk menambah atau mengurangi nilai accumulator dengan nilai register tertentu dan hasilnya disimpan di accumulator. Register yang terlibat adalah register B dan C.
Format instruksi : ADD Register SUB Register Contoh: Mnemonic ADD C SUB B
Keterangan A A + C A A - B
13
11/20/2015
Instruksi Antar Register : INR & DCR Berfungsi
menambahkan nilai 1 (INR) atau mengurangkan nilai 1 (DCR) pada register. Register yang terlibat sebagai operand adalah A, B, C.
Format instruksi : INR Register DCR Register Contoh: Mnemonic INR A DCR B
Keterangan A A + 1 BB-1
Contoh 2:
Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang menjumlahkan 2 bilangan heksadesimal 10H yang disimpan di accumulator dan 20H yang disimpan di Register B dan hasil penjumlahannya disimpan di lokasi memori 5600H dan kemudian hasil penjumlahannya dinaikkan dengan 1 dan disimpan ke Register C. Lokasi awal program di 2000H. Solusi: Alamat
Mnemonic
Bahasa Mesin
Keterangan
2000H
MVI A, 10H
3E 10
A 10H
2002H
MVI B, 20H
06 20
B 20H
2004H
ADD B
80
A A+B
2005H
STA 5600H
32 00 56
[5600H] A
2008H
INR A
3C
A A + 1
2009H
MOV C,A
4F
C A
200AH
HLT
76
STOP
14
11/20/2015
Instruksi Jump Berfungsi untuk memungkinkan prosesor mengeksekusi instruksi tidak secara berurutan. Nilai PC dapat diubah sesuai dengan kondisi dan instruksi lompat atau pemanggilan. Contoh : JMP (Jump) JM (Jump if Minus) JZ (Jump if Zero) JNZ (Jump if Not Zero)
Di antara keempat instruksi, JMP termasuk instruksi lompatan tidak bersyarat (uncoditional jump) dan JM, JZ, JNZ adalah lompatan bersyarat (conditional jump)
Instruksi Jump : JMP Adalah
instruksi lompatan tidak bersyarat yang mengakibatkan prosesor mengalihkan eksekusi program sesuai dengan alamat tujuan lompatan.
Format instruksi : JMP Alamat Contoh: Mnemonic JMP 3000H
Keterangan
Instruksi ini memberitahu prosesor untuk menjalankan instruksi di 3000H. PC 3000H
15
11/20/2015
Instruksi Jump : JM (Jump if Minus) Adalah
instruksi lompatan bersyarat. Prosesor akan memeriksa flag sign keluaran dari ALU. Jika Sign 1 (negatif) maka lompatan dilakukan.
Format instruksi : JM Alamat Contoh: Asumsi nilai reg A = 45H, B = 10H, C = 60H Mnemonic
Keterangan
SUB B
A A – B = 45H – 10H = 35H
JM 1000H
Lompat ke alamat 1000H jika Nilai Sign Flag 1 (-)
SUB C
A A – C = 35H – 60H
JM 2600H
Lompat ke alamat 2600H jika Nilai Sign Flag 1 (-)
Instruksi Jump : JZ (Jump if Zero) Adalah
instruksi lompatan bersyarat. Prosesor akan memeriksa zero keluaran dari ALU. Jika flag Zero 1 (nol) maka lompatan dilakukan
Format instruksi : JZ Alamat Contoh: Asumsi nilai reg A = 45H, B = 10H, C = 35H Mnemonic
Keterangan
SUB B
A A – B = 45H – 10H = 35H
JZ 1000H
Lompat ke alamat 1000H jika Nilai Zero Flag 1
SUB C
A A – C = 35H – 35H = 00H
JZ 2600H
Lompat ke alamat 2600H jika Nilai Zero Flag 1
16
11/20/2015
Instruksi Jump : JNZ (Jump if Not Zero) Adalah
instruksi lompatan bersyarat. Prosesor akan memeriksa zero keluaran dari ALU. Jika flag Zero 0 (hasil ALU tidak 0) maka lompatan dilakukan.
Format instruksi : JNZ Alamat Contoh: Asumsi nilai reg A = 45H, B = 10H, C = 35H Mnemonic
Keterangan
SUB B
A A – B = 45H – 10H = 35H
JNZ 1000H
Lompat ke alamat 1000H jika Nilai Zero Flag 0
SUB C
A A – C = 35H – 35H = 00H
JNZ 2600H
Lompat ke alamat 2600H jika Nilai Zero Flag 0
Instruksi CALL & RET (return) (1) Konsep
sub rutin memudahkan pembagian tugas utama yang diselesaikan oleh program utama dan subprogram. Bagian yang sering dieksekusi tidak harus terus menerus ditulis dalam program utama. Bagian ini dapat ditulis secara terpisah pada alamat tertentu, disebut subrutin atau prosedur. CALL adalah instruksi untuk memanggil subrutin. RETURN untuk mengakhirinya. Format Instruksi: CALL Alamat
17
11/20/2015
Instruksi CALL & RET (return) (2) Misal
kita punya subrutin faktorial di alamat 4000H sampai 4500H. Untuk memanggil subrutin faktorial tersebut dilakukan pemanggilan berikut : CALL 4000H
Contoh CALL & RETURN di SAP-2
18
11/20/2015
Contoh CALL & RETURN di SAP-2
Ketika terjadi call yang terletak di alamat 1001H – 1003H, alamat terakhir (1004H) akan disimpan pada akhir memori. Alamat FFFEH dan FFFFH dialokasikan untuk alamat kembali.
Flag
19
11/20/2015
Contoh 3:
Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang mengalikan bilangan desimal 12 dengan 10 dan simpan hasilnya disimpan di Register A dan alamat 1000H. Lokasi awal program di 800H. Solusi: Alamat
Mnemonic
Bahasa Mesin
Keterangan
0800H
MVI A, 00H
3E 00
A 00H
0802H
MVI B, 0CH
06 0C
B 0CH
0804H
MVI C, 0AH
0E 0A
C 0AH
0806H
ADD B
80
A A + B
0807H
DCR C
0D
CC-1
0808H
JNZ 0806H
C2 06 08
C <>0, JMP 0806H
080BH
STA 1000H
32 00 10
[1000H] A
080EH
HLT
76
STOP
Contoh 4:
Buatlah mnemonic dan bahasa mesin SAP-2 untuk sebuah program yang mencari perkalian 2 x 3 x 4, hasil perkalian ketiga bilangan tersebut disimpan di alamat 1000H. Operasi perkaliannya dibuat dalam Subrutin dan disimpan di alamat 900H. Lokasi awal program di 800H. Solusi:
20
11/20/2015
Instruksi Logika Dikerjakan
oleh ALU Proses logika adalah proses yang didasarkan pada peraturan aljabar logika Contoh : CMA (complement the accumulator) ANA (and the accumulator) ORA (or the accumulator) XRA (xor the accumulator) ANI (and Immediate) ORI (or immediate) XRI (xor immediate)
Instruksi Logika: CMA (complement the accumulator) Instruksi
ini berfungsi melakukan komplemen isi akumulator, yaitu mengubah setiap bit dalam akumulator dengan nilai kebalikannya. Format instruksi : CMA Contoh:
Misal nilai akumulator saat ini adalah A = 00101100 Setelah instruksi CMA A = 11010011
21
11/20/2015
Instruksi Logika: ANA (and the accumulator) Instruksi
ini berfungsi melakukan operasi AND isi akumulator dengan isi register lain bit per bit. Register operand adalah register B, C. Format instruksi : ANA Register Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan B = 10110001 Setelah instruksi ANA B A = 00100000
Instruksi Logika: ORA (or the accumulator) Instruksi
ini berfungsi melakukan operasi OR isi akumulatir dengan isi register lain bit per bit. Register operand adalah register B, C. Format instruksi : ORA Register Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan B = 10110001 Setelah instruksi ORA B A = 10111101
22
11/20/2015
Instruksi Logika: XRA (or the accumulator) Instruksi
ini berfungsi melakukan operasi XOR isi akumulatir dengan isi register lain bit per bit. Register operand adalah register B, C. Format instruksi : XRA Register Contoh: Misal nilai akumulator saat ini adalah A = 00101100 dan B = 10110001 Setelah instruksi XRA B A = 10011101
Instruksi Logika: ANI (and immediate) Instruksi
ini berfungsi melakukan operasi AND isi akumulator dengan suatu nilai 8 bit. Format instruksi : ANI byte Contoh:
Misal nilai akumulator saat ini adalah A = 00101100 dan data = 11111110 Setelah instruksi ANI FEH A = 00101100
23
11/20/2015
Instruksi Logika: ORI (or immediate) Instruksi
ini berfungsi melakukan operasi OR isi akumulator dengan suatu nilai 8-bit. Format instruksi : ORI byte Contoh:
Misal nilai akumulator saat ini adalah A = 00101101 dan data = 10101010 Setelah instruksi ORI AAH A = 10101111
Instruksi Logika: XRI (xor immediate) Instruksi
ini berfungsi melakukan operasi XOR akumulator dengan suatu nilai 8-bit. Format instruksi : XRI byte
isi
Contoh:
Misal nilai akumulator saat ini adalah A = 00101101 dan data = 10101010 Setelah instruksi XRI AAH A = 10000111
24
11/20/2015
Instruksi Lain-Lain (1)
NOP (no operation)
Prosesor tidak melakukan apa-apa.
Digunakan sebagai jeda
Sering digunakan pada proses pipeline, yaitu upaya peningkatan kecepatan proses dengan melaksanakan beberapa instruksi secara bersamaan
IN (input)
Untuk memindahkan data dari register masukan ke akumulator
Format instruksi : IN byte (IN 100001101)
HLT (HALT)
Sebagai tanda akhir dari program
OUT (output)
Memindahkan data dari akumulator ke register keluaran
Instruksi Lain-Lain (2)
RAL (Rotate the accumulator left) Memutar nilai akumulator ke kiri satu bit Misal A = 11001000 Setelah instruksi RAL A = 10010001
RAR (Rotate the accumulator right) Memutar nilai akumulator ke kanan satu bit Misal A = 11001000 Setelah instruksi RAR maka nilai A = 01100100
25
11/20/2015
Daftar Pustaka Albert Paul Malvino, Ph.D., Digital Computer Electronics, 3rd Edition
26