You are on page 1of 9

JOBSHEET PRAKTIKUM 3

ARITMATIKA DAN LOGIKA

Mata Kuliah : Arsitektur Sistem Komputer


Prodi/Jurusan/PT : S1-Teknik Elektro / Teknik Elektro/UNNES
Pengampu : Nur Iksan, ST., M.Kom

A. Tujuan
1. Dapat menjalankan operasi aritmatika dan logika serta mengecek isi setiap register yang
digunakan
2. Dapat menjelaskan tentang jenis-jenis status flag

B. Bahan dan Alat


1. Simulator Mikroprosesor 8085 (GNUSim8085)

C. Dasar Teori

Register Flags (Register Bendera)


Register flag merupakan register pembantu terhadap operasi aritmatik dan operasi logika.
Register Flag berisi status program yang baru saja di laksanakan. Register Flag meliputi : Zero
(Z), Carry (CY), Sign (S), Parity (P), dan Auxilarry Carry (AC). Posisi bit mereka dalam
register bendera ditunjukkan pada Gambar.

Dengan adanya operasi aritmatik atau logika, maka kejadian dari register F dapat dibuat tabel
sebagai berikut:
Flag sangat penting dalam proses pengambilan keputusan mikroprosesor. Kondisi (set atau
reset) dari bendera diuji melalui instruksi perangkat lunak. Sebagai contoh, instruksi JC (Jump
if Carry) dilaksanakan untuk mengubah urutan dari program ketika CY flag diatur.

Pemahaman menyeluruh bendera sangat penting dalam menulis program bahasa assembly.
Status atau kondisi yang diterangkan melalui register flag dinyatakan melalui kondisi bit-bit
tertentu, yaitu:

Sign : yaitu polaritas suatu angka, apakah data yang baru saja diolah adalah
data negatip atau positip. Sign suatu data ditentukan oleh bit MSB-nya
(bit ke-8) dari data tersebut. Bila bit tersebut berlogika 1 berarti data
tersebut negatip, bila nol berarti positip. Contoh : data “EFh” adalah
negatip dan “7Eh” adalah positip.
Zero : bit yang menerangkan bahwa data hasil pelaksanaan suatu perintah
adalah “00” (nol). Bila bit ini bernilai 1 berarti data hasil adalah “00”
(nol) dan bila bernilai 0 berarti data tidak “00”.
Parity : menerangkan jumlah bit data yang bernilai 1 berjumlah genap atau
ganjil. Bila bit-bit data memiliki nilai 1 yang berjumlah ganjil maka bit
parity ini akan direset menjadi 0 dan bila jumlah bit data yang bernilai 1
adalah genap maka bit parity akan diset 1.
Contoh :
“7F” adalah data dengan parity ganjil
“3F” adalah data dengan parity genap
“40” adalah data dengan parity ganjil

Auxiliary carry atau half carry: adalah bit yang menunjukan terjadinya carry dari hasil
penjumlahan bit ke- 3 pada accumulator dengan bit ke-3 data lainnya.
Contoh :
MVI A, 08 program singkat ini adalah menjumlahkan accumulator
ADI 88 dengan data 88, prosesnya:

Tanda panah menunjukkan adannya carry dari hasil penjumlahan bit


ke-3 dari kedua data tersebut yang di sebut dengan half carry atau
auxiliary carry.
Carry atau borrow : bit pada reg. flag yang menunjukkan informasi adanya bit simpanan
(carry) atau terjadinya bit pinjaman (borrow) dari hasil pelaksanaan
suatu perintah aritmatika. Seperti biasannya bit carry ini di anggap
berada sebelah kiri data (di kiri bit MSB). Jadi bit carry atau borrow ini
di anggap sebagai bit ke-9 dari suatu data hasil.
Contoh :
Pada contoh di atas diperlihatkan bahwa penjumlahan terjadi half carry
dan juga carry. Proses ini juga menunjukkan adannya status zero karena
hasil yang di dapat adalah 00 (nol).
Contoh :

Pada contoh pengurangan di atas di perlihatkan adannya borrow dan


pada contoh ini juga menunjukkan adanya status sign = 1 atau data hasil
adalah bilangan negatip dan juga paritinya genap.

Operasi Aritmatika
Fungsi aritmatika yang dimiliki oleh mikroprosessor 8085 ini hanyalah proses penjumlahan
dan pengurangan, tetapi memiliki beberapa cara dalam pelaksanaannya. Perintah-perintah yang
termasuk ke dalam kelompok ini adalah :

ADD reg
Menjumlahkan isi reg A dengan isi register yang disebutkan. Hasil penjumlahan akan disimpan
kembali ke reg.A.
Contoh:
MVI A, 05h
MVI B, 73h
ADD B ; 05 + 73 = 78 reg .A = 78
MVI C,87h
ADD C ; 78 + 87 = FF reg.A = FF

ADC reg
Menjumlahkan isi reg.A dengan isi register yang disebutkan dan menjumlahkannya lagi
dengan bit carry sebelum perintah ini dijalankan.
contoh :
STC ; set carry = 1
MVI A, 05h
MVI B, 73h
ADC B ; 05 + 73 + 1 = 79 reg.A = 79 Cy = 0
MVI C, 87h
ADC C ; 79 + 87 + 0 = 00 reg. A = 00 Cy = 1

ADI data
Menjumlahkan isi reg. A dengan data 8 bit yang disebutkan.
Contoh:
MVI A, 07h
ADI 23h ; 07 + 23 = 2A reg. A= 2A
SUB reg
Mengurangi reg A dengan isi register yang disebutkan.
Contoh:
MVI A, 23h
MVI D, 04h
SUB D ; 23 – 04 = 1 F reg A = 1 F

SBB reg
Mengurangi reg A dengan isi register yang disebutkan dan dikurangi lagi dengan bit carry
sebelum perintah ini dilaksanakan.
Contoh :
STC
MVI A, 27h
MVI E, 27h
SBB E ; 27 – 27-1 = FF reg . A = FF Cy = 1

SUI data
Mengurangi isi reg. A dengan data 8 bit dan meletakkan hasilnya kembali ke reg.A
Contoh:
MVI A, 07h
SUI 08 ; 07 – 08 = FF reg A = FF Cy = 1

SBI data
Mengurangi isi reg A dengan data 8 bit dan menguranginya lagi dengan bit carry sebelumnya
Contoh :
STC
MVI A, 07h
SBI 08 ; 07 – 08 – 1 = FE reg A = FE Cy = 1

INR reg
Menambahkan isi register yang disebutkan dengan 1 dan meletakkannya kembali ke register
tersebut.
Contoh :
MVI B, 88h
INR B ; 88 + 1 = 89 reg. B = 89

DCR reg
Mengurangi isi register yang disebutkan dengan 1
Contoh :
MVI C, 00h
DCR C ; 00 – 1 = FF reg.C = FF

DAD reg
Menjumlahkan isi pasangan register yang disebutkan dengan isi pasangan register HL dan
meletakkan hasilnya ke pasangan register HL.
Contoh :
LXI H, 2028h
LXI B, 0321h
DAD B ; 2028 + 0321 = 2349H reg. HL = 2349

INX reg
Menambahkan isi pasangan register yang disebutkan dengan 1.
Contoh :
LXI B, 8000h
INX B ; reg BC = 8000 + 1 = 8001

DCX reg
Mengurangi isi pasangan register yang disebutkan dengan 1.
Contoh :
LXI D, 9067h
DCX D ; reg. DE = 9067 – 1 = 9066

CMP reg
Membandingkan isi reg.A dengan isi register yang disebutkan. Karena hanya membandingkan
maka isi reg. A ataupun isi register bandingannya tidak mengalami perubahan isi/datanya.
Perintah ini hanya mempengaruhi bit-bit status pada reg. Flag dan untuk dipakai bersama
perintah-perintah bersyarat. Proses perbandingan yang dilakukan sama dengan proses
pengurangan pada perintah SUB reg.
Contoh :
MVI A, 03h
MVI B, 01h
MVI C, 04h
MVI D, 03h
CMP B ; 03 – 01 = 02 :kondisi bit status flag: Sign=0 (positip ), zero=0 (tidak
nol), parity=0 (ganjil), carry : 0
CMP C ; 03 – 04 =FF:kondisi bit status flag: sign : 1 ( negatif ) zero : 0 parity : 1
(ganjil ) carry : 1 (pinjaman)
CMP D ; 03 – 03 = 00 sign : 0 (positip ) zero : 1 ( hasil = 0 ) parity : 0(genap )
carry : 0
CPI data
Membandingkan isi reg. A dengan data 8 bit yang disebutkan.
Contoh :
MVI A, 03h
CPI 01h ;hasil sama dengan contoh perintah CMP reg di atas
CPI 04h
CPI 03h

Perintah CMP reg dan CPI data selalu digunakan diikuti dengan perintah bersyarat seperti
yang dijelaskan pada pembahasan register Flag.

Operasi Logika
Operasi logika itu terdiri dari AND, OR, NOT, XOR. Tabel kebenaran dari operasi logika:
Kelompok fungsi logika adalah perintah-perintah yang dalam bekerjanya berdasarkan bit-bit
data secara terpisah, sehingga dalam menganalisa perintah ini kita harus menguraikan data
dalam bentuk biner. Beberapa instruksi logika sebagai berikut:
ANA reg ; menggunakan logika AND dengan logika accumulator pada data reg
ANA M ; menggunakan logika AND dengan logika accumulator pada data M
ANI d8 ; menggunakan logika AND dengan logika accumulator immediate d8
ORA reg ; menggunakan logika OR dengan logika accumulator OR pada reg
ORA M ; menggunakan logika OR dengan logika accumulator OR pada M
ORI d8 ; menggunakan logika OR dengan logika accumulator OR immediate register
d8
XRA reg ; menggunakan logika eksklusif OR dengan logika accumulator eksklusif OR
reg
XRA M ; menggunakan logika eksklusif OR dengan logika accumulator eksklusif OR
reg

D. Eksperimen

Eksperimen 1:

Pada eksperimen 1 ini, kita akan melakukan eksperimen operasi aritmatik menggunakan
simulator untuk rancangan program sebagai berikut:

Mneumonic Keterangan
MVI B, 1FH Mengisi reg B=1F
MOV C,B Mengisi reg. C dengan isi reg B
MVI A, 01H Mengisi reg A=01
ADD A Isi reg B dijumlah dengan isi reg A dan hasilnya disimpan pada
reg A = 20H
INR B Isi reg B ditambah satu dan hasilnya disimpan pada reg B = 20H
Hasil simulasi:
Terjadi AC (Auxiliary Carry/Half Carry) ketika
menjalankan perintah INR B, yang berarti isi reg B
ditambah satu dan hasilnya disimpan pada reg B.
𝑟𝑒𝑔 𝐵 = 1𝐹 (ℎ𝑒𝑥) = 00011111
𝑑𝑎𝑡𝑎 = 1(𝑑𝑒𝑠𝑖𝑚𝑎𝑙) = 00000001
00100000
00100000 (𝑏𝑖𝑛𝑒𝑟) = 20(ℎ𝑒𝑥)
Terjadi Auxiliary Carry pada bit ke 6

Eksperimen 2:

Lakukan eksperimen menggunakan simulator untuk rancangan program pada beberapa contoh
yang ada pada tiap instruksi aritmatika di section C. Selanjutnya amati isi setiap register dan
flag yang digunakan.

Eksperimen 3:

Pada eksperimen 3 ini, kita akan melakukan eksperimen operasi aritmatik dan logika
menggunakan simulator untuk rancangan program sebagai berikut:

Mneumonic Keterangan
MVI B, 1FH Mengisi reg B=1F
MOV C,B Mengisi reg. C dengan isi reg B
MVI A, 01H Mengisi reg A=01
ANI 0FH data di AND-kan dengan accumulator
INR B Isi reg B ditambah satu dan hasilnya disimpan pada reg B = 20H

Hasil simulasi:
Terjadi AC (Auxiliary Carry/Half Carry) ketika
menjalankan perintah ANI 0FH dan INR B.
1. Perintah ANI 0FH = data 0F di AND kan dengan
nilai Accumulator (reg A)
𝑟𝑒𝑔 𝐴 = 01(ℎ𝑒𝑥 ) = 00000001
𝑑𝑎𝑡𝑎 = 0𝐹 (ℎ𝑒𝑥) = 00001111
00000001
00000001 (𝑏𝑖𝑛𝑒𝑟) = 01(ℎ𝑒𝑥)
Terjadi Auxiliary Carry pada bit ke 1
2. Perintah INR B = isi reg B ditambah satu dan
hasilnya disimpan pada reg B.
𝑟𝑒𝑔 𝐵 = 1𝐹 (ℎ𝑒𝑥) = 00011111
𝑑𝑎𝑡𝑎 = 1(𝑑𝑒𝑠𝑖𝑚𝑎𝑙 ) = 00000001
00100000
00100000 (𝑏𝑖𝑛𝑒𝑟) = 20(ℎ𝑒𝑥)
Terjadi Auxiliary Carry pada bit ke 6

Dari program di atas jika dilihat isi registernya masing-masing akan terlihat seperti pada
keterangan program. Selain itu dapat dilihat pengaruhnya terhadap isi register flagnya setelah
terjadi operasi aritmatik atau operasi logik yaitu dengan melihat harga-harga yang ada pada
masing-masing bit dari register F(flag).
Setelah terjadi operasi logik AND maka reg. F yang terpengaruh adalah S, Z,H, P, maka
setelah terjadi operasi logik AND 0FH dapat dijabarkan sebagai berikut:
− S=0 : tidak terjadi perubahan tanda
− Z = 0 : hasilnya tidak sama dengan nol
− H = 1 : terjadi half carry
− P=0 : pada operasi tersebut tidak terjadi overflow

E. Latihan

Lakukanlah eksperimen pada rancangan program berikut menggunakan simulator dan lakukan
pengamatan pada tiap register dan flag yang digunakan pada setiap urutan instruksi. Screenshot
jalanya program serta berikan penjelasan untuk laporan.

Latihan 1:
MVI E, 05H
MVI D, 06H
MOV A, E
ADD A
MOV L, A
MVI A, 00H
ADC A
MOV H, A
LXI H, 1810
HLT

Laporan Eksperimen:

Latihan 2:
MVI E, 0AH
MVI D, 06H
MOV A, E
SBB A
MOV L, A
MVI H, 00H
LXI H,180EH
HLT
Laporan Eksperimen:

Latihan 3:
MVI A, 0FFH
MVI B, 09H
MVI C, 0AH
MVI D, 03H
MVI E, 04H
ADD B
MVI A, 00H
ADI 00H
ANA B
MVI A, 0AH
ORA B
XRA A
INR E
DCR D
CMP B
SUI 02H
SBI 01H

HLT

Laporan Eksperimen:

Selamat Mengerjakan

You might also like