Anda di halaman 1dari 47

Simple as Possible Computer 2

Instruction Set SAP-1 (2)


° Instruksi-instruksi pada SAP-1 :
• LDA (Load the Accumulator)
- Untuk mengambil data dari memori dan dimasukkan ke
dalam accumulator
- Contoh : LDA AH

• ADD
- Untuk menjumlahkan isi accumulator dengan data
memori
- Contoh : ADD 8H

• SUB
- Untuk mengurangkan isi accumulator dengan isi register
B
- Contoh : SUB DH

2
Arsitektur SAP-2

3
Register Masukan

• SAP-2 memiliki 2 buah register


masukan diberi nomor 1 dan 2
• Dihubungkan dengan keyboard
heksadesimal untuk menuliskan
data & instruksi
• Sinyal Ready dikirim ke jalur 0
register masukan 2 untuk
menunjukkan data pada register
masukan 1 telah benar
• Sinyal IN SERIAL untuk masuk
ke jalur 7 pada register
masukan 2

4
Pencacah Program & MAR
PENCACAH PROGRAM
• Lebar 16-bit (0000 H – FFFF H)
• Nilai pencacah 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
pencacah dengan bus W ada 2
• 1 jalur untuk mengirim nilai
• 1 jalur untuk menerima
jump

MAR
• Menerjemahkan alamat dari PC
untukdiproses ke memori
5
Memori 64 KB

• Lebar data 8-bit


• Penggunaan alamat memori :
• 2KB awal (0000 H - 07FF
H) untuk program monitor
• 0800 H – FFFF H untuk
instruksi dan data

• Program monitor untuk


masukan dari keyboard dan
kondisi yang terjadi selama
proses

6
Memori 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

7
Register Instruksi (IR) & Controller/Sequencer (CS)

REGISTER INSTRUKSI
• Instruksi lebarnya 8-bit (sama
dg prosesor 8080/8085 dari
intel) untuk diteruskan ke
controller/ sequencer
• Jumlah instruksi yang bisa
dimiliki 28 = 256 buah
• SAP-2 hanya punya 42 instruksi

CONTROLLER/SEQUENCER
• Instruksi dari IR akan
diterjemahkan mejadi sinyal
kontrol (CON)

8
Akumulator A & ALU
AKUMULATOR
• Untuk menyimpan sementara
hasil operasi ALU
• Data dari bus W bisa dari
memori atau hasil operasi ALU
• Keluaran data dpt ditransfer ke
register keluaran

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)
9
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 akumulator A

10
Register Keluaran 3 & 4

• Untuk mengkomunikasikan
hasil proses dengan pengguna.
• Pengguna dapat melihat
hasilnya lewat Peraga
Heksadesimal

11
Jalur 2 Arah (1)

(a) JALUR SATU ARAH


(b) JALUR DUA ARAH (satu untuk
IN satu untuk OUT)

12
Contoh Jalur 2 Arah pada Akumulator (2)

• Data bisa mengalir dari Akumulator ke bus W dan


sebaliknya
• Aliran data dikendalikan oleh jalur kendali :
• EN  mengendalikan data dari Akumulator ke bus W
• CK  untuk detak (clock) yang mentrigger proses
• LOAD  untuk mengendalikan data dari bus W ke
Akumulator
• Dengan jalur 2 arah, perusahaan chip tidak perlu
menyediakan banyak jalur ke sebuah register
13
Instruction Set SAP-2
° Instruksi terdiri dari 2 bagian :
• Operational code
• Operand (nilai yang dioperasikan)
° Kebutuhan memori untuk operand tergantung jenis instruksi
° Contoh 3 instruksi dimulai dari alamat 1000 H:
• ADD B  op code 80, tidak butuh memori
• MOV A,18H  op code 3E butuh 1 alamat memori
• STA 4861H  op code 32 butuh 2 alamat memori

14
Operasional Code (1)

15
Operasional Code (2)

16
Operasional Code (3)

17
Operasional Code (4)

18
Jenis-jenis instruksi

Jenis instruksi SAP-2 dapat dikelompokkan :

° Instruksi Mengacu Memori (Memory Reference


Instruction, MRI)

° Instruksi antar Register

° Instruksi Lompat dan Pemanggilan (Jump & Call


Instruction)

° Instruksi Logika (Logic Instruction)

° Instruksi lain-lain

19
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

• Eksekusi
- Melakukan eksekusi berdasarkan sinyal kontrol CON

20
MRI

° Contoh :

• LDA (load the accumulator)

• STA (store the accumulator)

• MOV (move; untuk yang tipe immediate)

° MRI melibatkan pengaksesan memori 2x, yaitu saat


fetch dan eksekusi, sehingga lama.

21
MRI - LDA

° Berfungsi untuk mengambil data memori alamat


tertentu dan dipindahkan ke dalam akumulator

° Format instruksi :

LDA alamat

Contoh :
LDA 1500 H

Instruksi memindahkan data memori alamat


1500H ke akumulator

22
MRI - STA

° Berfungsi untuk mengambil data pada akumulator dan


memindahkannya ke memori alamat tertentu

° Format instruksi :

STA alamat

Contoh :
STA 1501 H

Misal sebelum instruksi isi akumulator 4E H.


Maka nilai 4E H ini akan disalin ke memori
alamat 1501 H 23
MRI – MOV (untuk yg mov immediate)

° Berfungsi untuk transfer data yang memindahkan 8 bit


data ke dalam register. Operand yang terlibat adalah
register A, B, C.

° Format instruksi :
MOV register, byte
Contoh :
MOV A, 45 H
MOV B, 5E H
MOV C, F3H
Setelah 3 instruksi dijalankan, maka nilai
register A = 45H, B=5EH, C = F3H
24
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)

25
Instruksi antar Register – MOV (move register)

° Berfungsi untuk transfer data yang memindahkan 8 bit


data ke dalam register. Operand yang terlibat adalah
register A, B, C.

° Format instruksi :
MOV register, register
Contoh :
MOV A, B
MOV B, C
MOV C, A

26
Instruksi antar Register – ADD & SUB

° Berfungsi untuk menambah atau mengurangi nilai


akumulator dengan nilai register tertentu dan hasilnya
disimpan di akumulator. Register yang terlibat adalah
register B dan C.

° Format instruksi :
ADD register
SUB register
Contoh :
ADD C
SUB B

27
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 :
INR A  nilai A = A + 1
DCR B  nilai B = B - 1

28
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)

29
Instruksi Jump – JMP

° Adalah instruksi lompatan tidak bersyarat yang


mengakibatkan prosesor mengalihkan eksekusi
program sesuai dengan alamat tujuan lompatan

° Format instruksi :

JMP alamat
Contoh :
JMP 2500 H

Instruksi ini memberitahu prosesor untuk


menjalankan instruksi di 2500 H. PC  2500H
30
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

SUB B; A = A – B = 45H – 10 H = 35 H Hasil SUB +, tdk dilakukan


JM 1000 H; jump ke 1000 H
SUB C; A = A – C Hasil SUB -, dilakukan jump
JM 2600 H; ke 2600 H

31
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 :
JZ 2500 H

Instruksi ini memberitahu prosesor untuk


lompat ke instruksi di 2500 H jika zero flag 1
32
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 :
JNZ 2500 H

Instruksi ini memberitahu prosesor untuk


lompat ke instruksi di 2500 H jika zero flag 0
33
Instruksi CALL & RET (return)

° Konsep sub rutin memudahkan pembagian tugas


utama yang diselesaikan oleh program utama dan sub-
program.

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

34
Instruksi CALL & RETURN

° CALL adalah instruksi untuk memanggil subrutin.


RETURN untuk mengakhirinya.

° Format instruksi :

CALL alamat

Contoh :
Misal kita punya subrutin faktorial di alamat
4000H sampai 4500 H . Untuk memanggil
subrutin faktorial tersebut dilakukan
pemanggilan berikut :
CALL 4000 H
35
Contoh CALL & RETURN di SAP-2

36
Contoh CALL & RETURN di SAP-2

Ketika terjadi call yang terletak di alamat 1001H – 1003H,


alamat terakhir (1004H) akan disimpan pada akhir memori.

Alamat FFFE H dan FFFF H dialokasikan untuk alamat


kembali.

37
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)
• XRI (xor immediate)

38
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

39
Instruksi Logika – ANA (and the accumulator)

° Instruksi ini berfungsi melakukan operasi AND isi


akumulatir dengan isi register. Register operand adalah
register B, C

° Format instruksi :
ANA register

Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
B = 00011001
Setelah instruksi ANA B = 00001000

40
Instruksi Logika – ORA (or the accumulator)

° Instruksi ini berfungsi melakukan operasi OR isi


akumulatir dengan isi register. Register operand adalah
register B, C

° Format instruksi :
ORA register

Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
B = 00011001
Setelah instruksi ORA B = 00111101

41
Instruksi Logika – XRA (xor the accumulator)

° Instruksi ini berfungsi melakukan operasi XOR isi


akumulatir dengan isi register. Register operand adalah
register B, C

° Format instruksi :
XRA register

Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
B = 00011001
Setelah instruksi XRA B = 00110101

42
Instruksi Logika – ANI (and immediate the accumulator)

° Instruksi ini berfungsi melakukan operasi AND isi


akumulatir dengan suatu nilai 8-bit. Register operand
adalah register B, C

° Format instruksi :
ANI byte

Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi ANI 00110010 atau ANI 32H
A = 00100000

43
Instruksi Logika – ORI (or immediate the accumulator)

° Instruksi ini berfungsi melakukan operasi OR isi


akumulatir dengan suatu nilai 8-bit.

° Format instruksi :

ORI byte

Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi ORI 00110010
A = 00111110

44
Instruksi Logika – XRI (xor immediate the accumulator)

° Instruksi ini berfungsi melakukan operasi XOR isi


akumulatir dengan suatu nilai 8-bit. Register operand
adalah register B, C

° Format instruksi :
XRI byte

Contoh :
Misal nilai akumulator saat ini adalah A = 00101100
Setelah instruksi XRI 00110010
A = 00011110

45
Instruksi lain-lain (1)
° Contoh :
• 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

46
Instruksi lain-lain (2)
° Contoh :
• RAL (Rotate the accumulator left)
- Memutar nilai akumulator ke kiri satu bis
- 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

47

Anda mungkin juga menyukai