DIG1B3- SAP-3-rev

advertisement
11/25/2015
Tahun Akademik 2015/2016
Semester I
DIG1B3 – Konfigurasi Perangkat
Keras Komputer
SAP-3
Mohamad Dani (MHM)
E-mail: [email protected]
Hanya dipergunakan untuk kepentingan pengajaran di lingkungan Telkom Applied Science School
Setelah mengikuti perkuliahan ini
mahasiswa dapat:



Menjelaskan instruksi-instruksi yang ada pada SAP-3.
Membuat program sederhana untuk SAP-3
Dapat menggunakan Simulator 8085 untuk
mensimulasikan program SAP-3 yang dibuat.
1
11/25/2015
Komputer SAP-3
(Simple As Possible Versi 3)




Meski sederhana, SAP sudah mengandung banyak konsep
yang lanjut.
SAP-3 merupakan tahap pengembangan dari komputer
SAP-1 dan 2.
SAP-3 adalah sebuah mikro komputer 8 bit yang
kompatibel dengan mikro prosesor 8085.
Perangkat instruksi SAP-3 mencakup seluruh instruksi
SAP-2 dari bahasan sebelumnya ditambah
dengan
instruksi-instruksi baru yang akan dibahas.
Model Pemrograman:
Register-Register SAP-3 (1)

A
PC
SP
B
PC (Program Counter)

Lebar 16-bit (0000H – FFFFH)

Nilai PC masuk ke MAR

Instruksi dilaksanakan secara berurutan dari alamat
0000 sampai ketemu instruksi HLT.

PC (Program Counter)
C
D
E
H
L
F


Stack Pointer (SP)

Register 16 bit.

Register “baru” ini mengendalikan suatu bagian
memori yang dikenal sebagai tumpukan (stack).
A (Accumulator)

Register 8 bit.

Digunakan untuk operasi aritmatika dan logika.

Untuk menyimpan sementara hasil operasi ALU.

Jangkauan dari bilangan tak bertanda yang dapat
ditangani adalah 0 sampai 255.

Jangkauan dari bilangan komplemen-2
bertanda adalah –128 sampai +127
yang
2
11/25/2015
Model Pemrograman:
Register-Register SAP-3 (2)

A
PC
B
C
SP
D
E

Register 8 bit.

Digunakan untuk operasi aritmatika dan logika.

Jangkauan dari bilangan tak bertanda yang dapat
ditangani adalah 0 sampai 255.

Jangkauan dari bilangan komplemen-2
bertanda adalah –128 sampai +127.
F

H
B (Buffer)
L


yang
C (Counter)

Register 8 bit.

Bisa digunakan untuk menyimpan data dan sebagai
register counter.
D, E, H dan L

Register 8 bit.

Untuk pemrosesan data yang lebih efisien.
F

Register 8 bit.

Menyimpan bit-bit Flag S,Z dan lain-lain
Instruksi MOV dan MVI (1)

Insruksi MOV dan MVI mempunyai prinsip kerja yang sama seperti didalam
SAP-2. Perbedaannya hanya terletak pada jumlah register yang lebih besar
untuk dilibatkan dalam pemindahan data.

Format instruksi :
MOV reg1, reg2

Dengan:

reg1 = A,B,C,D,E,H atau L
reg2 = A,B,C,D,E,H atau L
MVI reg, byte
Dengan:
reg = A,B,C,D,E,H atau L
3
11/25/2015
Instruksi-instruksi Aritmatika

Karena lebar akumulator hanya 8 bit, maka isi yang terkandung
didalamnya terbatas pada representasi bilangan tak Bertanda
dari 0 sampai 255, atau representasi bilangan komplemen –2
bertanda dari –128 sampai +127.

Lepas dari jenis representasi bilangan yang dipakai, pemrogram
perlu medeteksi adanya overflow (pelimpahan) yaitu hasil
jumlahan atau pengurangan yang terletak diluar jangkauan
normal dari akumulator. Untuk hal inilah Carry Flag
diperkenalkan.
Instruksi-instruksi Aritmatika
Set Carry, CY=1, instruksi: STC
Komplemen Carry, instruksi: CMC
Reset Carry, CY=0 dengan instruksi:
STC
CMC

Apabila
SUB=0,
rangkaian
menjumlahkan masukan-masukan A dan
B. Jika operasi ini menghasilkan carry
akhir, CARRY=1 dan CY=1. Jika tidak
ada carry pada akhir operasi, CY=0.

Apabila SUB=1, rangkaian membentuk
komplemen-2 dari masukan B, yang
selanjutnya dijumlahkan dengan A.
Dengan adanya gerbang XOR akhir,
CARRY=1 yang keluar dari Full Adder
terakhir menghasilkan CY=0. Jika tidak
ada carry, CY=1.

CY = CARRY untuk instruksi ADD

CY = CARRY untuk instruksi SUB
4
11/25/2015
Instruksi Aritmatika
Dikerjakan oleh ALU
 Proses aritmatika adalah proses yang didasarkan pada
peraturan aritmatika logika.
 Contoh :
 ADD (Add Accumulator)
 ADC (Add Accumulator with Carry)
 ADI (Add Immediate)
 ACI (Add Immediate with Carry)
 SUB (Sub Accumulator)
 SBB (Sub Accumulator with Borrow)
 SUI (Sub Immediate)
 SBI (Sub Immediate with Borrow)

Instruksi ADD
Instruksi ini menjumlahkan isi dari register yang ditunjuk,
dengan isi akumulator. Hasil penjumlahan disimpan dalam
accumulator dan keadaan Carry Flag (set atau reset),
bergantung pada ada atau tidaknya Carry yang dihasilkan pada
akhir operasi.
Format instruksi :
ADD Reg
Dengan: Reg = A,B,C,D,E,H atau L
Misal : A=1111 0001 dan E = 0000 1000

ADD E
Hasil Penjumlahan
CY = 0
5
11/25/2015
Instruksi ADC

Instruksi ini menjumlahkan isi dari register yang ditunjuk beserta isi Carry
Flag dengan isi accumulator Hasil penjumlahan disimpan dalam accumulator
dan keadaan Carry Flag (set atau reset), bergantung pada ada atau tidaknya
Carry yang dihasilkan pada akhir operasi.

Karena operasi ini melibatkan bendera CY, instruksi ADC memungkinkan
penjumlahan bilangan-bilangan diluar batas bilangan tak bertanda dari 0
sampai 255 atau batas bilangan bertanda –128 sampai +127.
Format instruksi :
ADC Reg
Dengan: Reg = A,B,C,D,E,H atau L
Misal : A=1000 0011, E=0001 0010, CY=1
ADC E
Hasil Penjumlahan
CY = 0
Instruksi ADI
Instruksi ini menjumlahkan data tertentu dengan isi akumulator.
Hasil penjumlahan disimpan dalam accumulator dan keadaan
Carry Flag (set atau reset), bergantung pada ada atau tidaknya
Carry yang dihasilkan pada akhir operasi.
Format instruksi :
ADI byte
Misal : A=1111 0001 dan byte = 0000 1000

ADI 08H
Hasil Penjumlahan
CY = 0
6
11/25/2015
Instruksi ACI

Instruksi ini menjumlahkan data tertentu beserta isi Carry Flag dengan isi
accumulator Hasil penjumlahan disimpan dalam accumulator dan keadaan
Carry Flag (set atau reset), bergantung pada ada atau tidaknya Carry yang
dihasilkan pada akhir operasi.

Karena operasi ini melibatkan bendera CY, instruksi ACI memungkinkan
penjumlahan bilangan-bilangan diluar batas bilangan tak bertanda dari 0
sampai 255 atau batas bilangan bertanda –128 sampai +127.
Format instruksi :
ACI Byte
Misal : A=1000 0011, byte=0001 0010, CY=1
ACI 12H
Hasil Penjumlahan
CY = 0
Contoh 1:
Dalam representasi bilangan biner tak bertanda, deretan
biner 8-bit dapat mewakili bilangan desimal dari 0
sampai 255, sedangkan 16 bit dapat merepresentasikan
angka dari 0 sampai 65.535. Tunjukkan suatu program
SAP-3 yang menjumlahkan bilangan desimal 700 dan
900, dengan hasil penjumlahannya disimpan dalam
register H dan register L.
Solusi:
70010 = 02BCH = 0000 0010 1011 11002
90010 = 0384H = 0000 0011 1000 01002
700
0000 0010 1011 11002
900+
0000 0011 1000 01002+
1600
0000 0110 0100 00002 = 0640H
7
11/25/2015
Solusi Contoh 1:
Program untuk Melaksanakan
berikut :
Label
penjumlahan kedua bilangan tersebut adalah sebagai
Mnemonik
Komentar
MVI A,00H
; kosongkan akumulator
MVI B,02H
; Simpan byte atas (UB) dari 700
MVI C,BCH
; Simpan byte bawah (LB) dari 700
MVI D,03H
; Simpan byte atas (UB) dari 900
MVI E,84H
; Simpan byte bawah (LB) dari 900
ADD C
; Jumlahkan LB dari 700
ADD E
; Jumlahkan LB dari 900
MOV L,A
; Simpan penjumlahan parsial (Low)
MVI A,00H
; kosongkan akumulator
ADC B
; Jumlahkan UB dari 700 dengan carry
ADD D
; Jumlahkan UB dari 900
MOV H,A
; Simpan penjumlahan parsial (High)
HLT
; Berhenti
Simulasi Contoh 1:
Source Code contoh1.sap3
Bahasa Mesin contoh1.sap3
Hasil Simulasi contoh1.sap3
8
11/25/2015
Instruksi SUB

Instruksi ini akan mengurangkan isi register yang ditunjuk dari isi
akumulator. Jika terjadi pinjaman pada akhir oiperasi ini, bendera CY akan
dipasang (diset). Jika tidak ada pinjaman, bendera CY akan direset.

Dengan kata lain, selama berlangsung operasi pengurangan, bendera CY
berfungsi sebagai bendera pinjaman.
Format instruksi :
SUB Reg
Dengan: Reg = A,B,C,D,E,H atau L
Misal : A=0000 1111, C=0000 0001
SUB C
Di-NOT-kan
CY = 0
Cara Manual
Hasilnya Positif
Cara SAP-3
Instruksi SBB

Instruksi ini akan mengurangkan isi register yang ditunjuk + carry dari isi
akumulator. Jika terjadi pinjaman pada akhir oiperasi ini, bendera CY akan
dipasang (diset). Jika tidak ada pinjaman, bendera CY akan direset.

Dengan kata lain, selama berlangsung operasi pengurangan, bendera CY
berfungsi sebagai bendera pinjaman.
Format instruksi :
SBB Reg
Dengan: Reg = A,B,C,D,E,H atau L
Misal : A=1111 1111, E=0000 0010, CY=1
SBB E
1111 1111
0000 0010
1+
0000 0011
0000 00111111 1100
Hasilnya Positif
9
11/25/2015
Instruksi SUI
Instruksi ini mengurangkan data tertentu dengan isi
akumulator. Hasil pengurangan disimpan dalam accumulator
dan keadaan Carry Flag (set atau reset), bergantung pada ada
atau tidaknya Carry yang dihasilkan pada akhir operasi.
Format instruksi :
SUI byte
Misal : A=1111 0001 dan byte = 0000 1000

SUI 08H
1111 0001
0000 10001110 1001
Hasil Pengurangan
CY = 0
Instruksi SBI

Instruksi ini akan mengurangkan data tertentu + carry dari isi akumulator.
Jika terjadi pinjaman pada akhir oiperasi ini, bendera CY akan dipasang
(diset). Jika tidak ada pinjaman, bendera CY akan direset.

Dengan kata lain, selama berlangsung operasi pengurangan, bendera CY
berfungsi sebagai bendera pinjaman.
Format instruksi :
SBI Byte
Misal : A=1111 1111, byte=0000 0010, CY=1
SBI 02H
1111 1111
0000 0010
1+
0000 00111111 1100
Hasilnya Positif, CY=0
0000 0011
10
11/25/2015
Contoh 2:
Tunjukkan sebuah program 700 – 900 dan menyimpan
jawabannya dalam register H dan L.
Solusi:
70010 = 02BCH = 0000 0010 1011 11002
90010 = 0384H = 0000 0011 1000 01002
700
0000 0010 1011 1100
0000 0010 1011 1100
900-
0000 0011 1000 0100-
1111 1100 0111 1100+
- 200
1111 1111 0011 1000(FF38H)
Solusi Contoh 2:
Program untuk Melaksanakan pengurangan kedua bilangan tersebut adalah
sebagai berikut :
Label
Mnemonik
Komentar
MVI A,BCH
; Simpan byte bawah (LB) dari 900
SUI 84H
; Kurangkan LB 700 dengan 900
MOV L,A
; Simpan pengurangan parsial (Low)
MVI A,02H
; Simpan byte atas (UB) dari 900
SBI 03H
; Kurangkan UB 700 dan 900 dengan borrow
MOV H,A
; Simpan pengurangan parsial (High)
HLT
; Berhenti
11
11/25/2015
Simulasi Contoh 2:
Source Code contoh2.sap3
Bahasa Mesin contoh2.sap3
Hasil Simulasi contoh2.sap3
Instruksi Increment dan
Decrement

Instruksi increment dan decrement sama dengan instruksi yang telah
dikenal dalam SAP-2.

Instruksi Increment (INR) dan Decrement (DCR) hanya mempengaruhi
Sign dan Zero Flag.
Format instruksi :
INR Reg
DCR Reg
Dengan: Reg = A,B,C,D,E,H atau L
Contoh: A = FFH = 1111 1111, B = 00H = 0000 0000
Mnemonic
Keterangan
INR A
A  A + 1; A = 00H = 0000 0000, S =0, Z=1, CY=0
DCR B
B  B – 1 ; B = FFH = 1111 1111, S =1, Z=0, CY=0
12
11/25/2015
Instruksi Rotate (1)

RAL (Rotate All Left)
 Memutar nilai akumulator ke kiri satu bit
 LSB digeser 1 bit kekiri, CY masuk ke bit LSB yang telah
digeser. MSB masuk ke CY
 Misal A = 0111 0100, CY=1
 Setelah instruksi RAL  CY=0, A=1110 1001

RAR (Rotate All Right)
 Memutar nilai akumulator ke kanan satu bit
 MSB digeser 1 bit kekanan, CY masuk ke bit MSB yang telah
digeser. LSB masuk ke CY.
 Misal A = 0111 0100, CY=1
 Setelah instruksi RAR  CY=0, A=1011 1010
Instruksi Rotate (2)


RLC (Rotate Left with Carry)
 Memutar nilai akumulator ke kiri satu bit.
 CY berisi MSB dari data yang diputar.
 Dapat digunakan untuk operasi perkalian kelipatan 2.
 Misal A = 0111 0100, CY=1
 Setelah instruksi RLC CY=0, A=1110 1000
RRC (Rotate Right with Carry)
 Memutar nilai akumulator ke kanan satu bit
 CY bit LSB dari data yang diputar.
 Dapat digunakan untuk operasi pembagian kelipatan 2.
 Misal A = 0111 0100, CY=1
 Setelah instruksi RAR  CY=0, A=0011 1010
13
11/25/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)
 CMP (Compare the Accumulator)
 CPI (Compare Immediate)

Instruksi Logika:
CMP (Compare the Accumulator)
Instruksi ini berfungsi untuk membandingkan isi akumulator
dengan isi register yang ditentukan.
 Instruksi ini mempengaruhi Zero Flag.
 Format instruksi :
CMP Reg
Dengan: Reg = A,B,C,D,E,H atau L
 Contoh:
 Misal nilai akumulator saat ini adalah
A=F8H=1111 1000, D=F8H=1111 1000, Z=0

Setelah instruksi CMP D
A=F8H=1111 1000, D=F8H=1111 1000, Z=1
14
11/25/2015
Instruksi Logika:
CPI (Compare Immediate)
Instruksi ini berfungsi untuk membandingkan isi akumulator
dengan data 8 bit.
 Instruksi ini mempengaruhi Zero Flag.
 Z =1 jika A = data dan Z=0 jika Z<>data
 Format instruksi :
CPI byte


Contoh:
 Misal nilai akumulator saat ini adalah
A=F8H=1111 1000, byte=F8H=1111 1000, Z=0
Setelah instruksi CPI F8
A=F8H=1111 1000, Z=1
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)

JP (Jump if Positive)

JZ (Jump if Zero)

JNZ (Jump if Not Zero)

JC (Jump if Carry Set)

JNC (Jump if No Carry)

JPE (Jump if Parity Even)

JPO (Jump if Parity Odd)
15
11/25/2015
Instruksi Jump : JP (Jump if Positive)
 Adalah
instruksi lompatan bersyarat. Prosesor akan
memeriksa flag sign keluaran dari ALU. Jika Sign 0
(positif) maka lompatan dilakukan.

Format instruksi :
JP Alamat
Instruksi Jump : JC (Jump if Carry)
 Adalah
instruksi lompatan bersyarat. Prosesor akan
memeriksa Carry Flag. Jika Carry Flag=1, maka
lompatan dilakukan

Format instruksi :
JC Alamat
16
11/25/2015
Instruksi Jump :
JNC (Jump if No Carry)
 Adalah
instruksi lompatan bersyarat. Prosesor akan
memeriksa Carry flag. Jika Carry Flag=0 maka
lompatan dilakukan.

Format instruksi :
JNC Alamat
Instruksi Jump :
JPE (Jump if Parity Even)
 Adalah
instruksi lompatan bersyarat. Prosesor akan
memeriksa P Flag. Jika P Flag=1, maka lompatan
dilakukan

Format instruksi :
JPE Alamat
17
11/25/2015
Instruksi Jump :
JPO (Jump if Parity Odd)
 Adalah
instruksi lompatan bersyarat. Prosesor akan
memeriksa P Flag. Jika P Flag=0, maka lompatan
dilakukan

Format instruksi :
JPO Alamat
Instruksi Extended Register

Beberapa instruksi SAP-3 menggunakan pasangan register CPU untuk
memproses data 16-bit. Dengan kata lain, selama eksekusi instruksi-instruksi
tertentu, register-register CPU disusun dalam kaskade (susunan berderet).

Pembentukan pasangan register selalu mengikuti ketentuan sebagai berikut:
B berpasangan dengan C, D dengan E, dan H dengan L.

Semua instruksi tersebut mengandung huruf X di dalamnya, yang
merupakan tanda bagi “extended register” (register yang diperluas) yaitu
pasangan register.
18
11/25/2015
Instruksi Extended Register:
LXI (Load extended immediate)
Instruksi LXI dipakai untuk mengisi pasangan register tertentu
dengan byte rangkap.
 Format instruksi :
LXI B, dble
LXI D, dble
LXI H, dble
Dengan:
B mewakili pasangan BC
D mewakili pasangan DE
H mewakili pasangan HL.
Dble menyatakan byte rangkap (double byte).

Instruksi Extended Register:
DAD (Double Add )
Instruksi DAD menjumlahkan isi dari pasangan register
tertentu dengan isi dari pasangan pasangan register HL. Hasil
penjumlahannya disimpan dalam pasangan register HL
 Format instruksi :
DAD B
DAD D
DAD H
Dengan:
B mewakili pasangan BC
D mewakili pasangan DE
H mewakili pasangan HL.

19
11/25/2015
Instruksi Extended Register:
INX dan DCX
INX berarti penambahan angka satu pada isi pasangan register
(inclement the extended register). Dan DCX menyatakan
penurunan angka satu dari isi pasangan register (descrement
the extended register).
 Instruksi INX dan DCX tidak mempengaruhi flag.
 Format instruksi :
INX B
DCX B
INX D
DCX D
INX H
DCX H
Dengan:
B mewakili pasangan BC
D mewakili pasangan DE
H mewakili pasangan HL.

Instruksi-instruksi Tak Langsung

PC berfungsi sebagai penunjuk instruksi (Instruction Pointer)

Agar dapat menyimpan dan mengambil data di lokasi memori tertentu
secara tidak langsung, digunakan register HL sebagai penunjuk data (data
pointer).

Pengesetan alamat memori dilakukan secara tak langsung melalui register
HL. Pengalamatan ini disebut pengalamatan tak langsung.
20
11/25/2015
Instruksi-instruksi Tak Langsung:
Pembacaan Tak Langsung
Instruksi ini mengisi register tertentu dengan data yang
alamatnya ditunjukkan oleh HL. Setelah eksekusi instruksi
tersebut , register itu akan berisi MHL.
 Setelah eksekusi instruksi tersebut, register itu akan berisi MHL.

 Format
instruksi :
MOV reg, M
Dengan reg = A,B,C,D,E,H atau L
M = MHL
Instruksi-instruksi Tak Langsung:
Penulisan Tak Langsung
Instruksi ini akan mengisi lokasi memori yang alamatnya
ditunjuk oleh HL dengan isi dari register tertentu.
 Setelah eksekusi instruksi tersebut, kita akan mendapatkan MHL

= reg
 Format
instruksi :
MOV reg, M
Dengan reg = A,B,C,D,E,H atau L
M = MHL
21
11/25/2015
Instruksi-instruksi Tak Langsung:
Instruksi Segera Tak Langsung

Kadang-kadang kita ingin menuliskan data segera (immediate
data) ke dalam lokasi memori yang dialamatkan oleh penunjuk
HL.
 Format
instruksi :
MVI M, byte
Dengan M = MHL
Instruksi-instruksi Tak Langsung:
Instruksi-instruksi penunjuk yang lain

Kadang-kadang kita ingin menuliskan data segera (immediate
data) ke dalam lokasi memori yang dialamatkan oleh penunjuk
HL.
ADD M
ADC M
SUB M
SBB M
INR M
DCR M
ANA M
ORA M
XRA M
CMP M
M = MHL
22
11/25/2015
Contoh 3:
Misalkan ada 256 byte data yang tersimpan dalam memori
pada alamat dari 2000H sampai 20FFH. Tunjukkan sebuah
program yang akan menyalin 256 byte data ini untuk
ditempatkan pada alamat 2100H sampai 21FFH!
Solusi Contoh 3:
LXI H, 1FFFH ; Inisialisasi penunjuk
LOOP: INX H
; Naikkan isi penunjuk
MOV B,M ; Baca byte
MOV A,H ; Isikan 20H ke dalam akumulator
ADI 01H ; Tambahkan ofset 01H untuk mendapatkan 20H
MOV H,A ; Pasang penunjuk H dengan ofset.
MOV M,B ; Tuliskan byte dalam lokasi baru
SUI 01H ; Kurangkan offset
MOV H,A ; Mengembalikan H pada kedudukan semula
MOV A,L ; Siapkan pembandingan
CPI FFH ; Periksa apakah sama dengan 255
JNZ LOOP ; Jika belum, ambil byte berikutnya
HLT
23
11/25/2015
Simulasi Contoh 3:
Bahasa Mesin contoh3.sap3
Hasil Simulasi contoh3.sap3
24
Download