Anda di halaman 1dari 16

LAPORAN PRAKTIKUM

TEKNIK ANTENA DAN PROPAGASI


“PROGRAM PENJUMLAHAN BCD PADA BAHASA PEMROGRAMAN
ASSEMBLY”

Disusun oleh :
Febrianti Mahdar (191331043)

Tanggal Praktikum : 14 April 2021


Tanggal Pengumpulan : 21 April 2021

Instruktur :
Ferry Satria, BSEE., M. T.
Rahmawati Hasanah, S.ST., M.Sc.

JURUSAN TEKNIK ELEKTRO PROGRAM STUDI


D3 – TEKNIK TELEKOMUNIKASI
2B
POLITEKNIK NEGERI BANDUNG
2021
PROGRAM PENJUMLAHAN BCD PADA BAHASA PEMROGRAMAN
ASSEMBLY

I. Tujuan Praktikum

Setelah menyelesaikan percobaan ini mahasiswa diharapkan mampu


1. Memahami penggunaan aplikasi EMU8086
2. Memahami fungsi – fungsi dari segment
3. Membuat program yang menjumlahkan data BCD

II. Landasan Teori


Mikroprosesor merupakan otak atau pengolah utama dalam sebuah sistem
komputer. Mikroprosesor yang biasa disebut juga sebagai CPU (Central Processing
Unit), menjadi pusat dari proses perhitungan dan pengolahan data yang dapat
melaksanakan operasi-operasi aritmatika, operasi logika, dan operasi kendali secara
elektronis (digital). Semakin tinggi kecepatan prosesor maka semakin cepat hasil
komputasi diperoleh. CPU terbuat dari sebuah lempengan yang disebut sebagai “Chip”
atau dari Integrated Circuit (IC)”. Bentuk dari IC ini yaitu kecil, terbuat dari lempengan
silicon dan bisa terdiri dari 10 juta transistor. Chip mikroprosesor difabrikasi dengan
teknologi LSI (Large Scale Integration) maupun VLSI (Very Large Scale Integration).
Biasanya mikroprosesor dikemas dengan plastik atau keramik. Kemasannya
dilengkapi dengan pin-pin yang merupakan terminal masukan dan keluaran dari chip.
Mikroprosesor mengontrol memori dan Input/Output (I/O) melalui koneksi yang
disebut bus. Bus memilih perangkat I/O atau memori, mengirimkan data antara
perangkat I/O atau memori tersebut dan mikroprosesor, dan mengontrol sistem I/O dan
memori. Memori dan I/O dikontrol melalui instruksi yang tersimpan di memori dan
dieksekusi oleh mikroprosesor. Mikroprosesor melakukan tiga tugas utama dari sistem
komputer, yaitu:

1. Mengirimkan data antara mikroprosesor itu sendiri dan dengan sistem I/O atau
memori.
2. Melakukan operasi aritmatika dan logika sederhana.

3. Melakukan aliran program melalui pengambilan keputusan

Register Segment

Register Segment merupakan register tambahan dengan panjang 16 bit atau


terbatas sampai 64K byte, yang berfungsi men-generate alamat memori ketika
MIKROPROSESOR & INTERFACE 14 dikombinasikan dengan register lain.
Register segment berfungsi untuk menyimpan alamat segment, yang terdiri dari CS (
Code Segment ), DS ( Data Segment ), SS ( Stack Segment ), dan ES ( Extra Segment
).

Register CS ( Code Segment ), bagian memori 64K-byte yang digunakan untuk


menyimpan alamat segment dari kode program atau instruksi. Register ini sering
berubah oleh suatu instruksi jump, panggilan, atau return.

Register DS ( Data Segment ), bagian memori 64K-byte yang berisi data yang
menjadi referensi untuk hampir semua instruksi dan sebagian besar mode addressing.
Register DS ini digunakan untuk menyimpan alamat segment dari letak data. Data
hampir selalu bergerak masuk atau keluar dari memori melalui segment data.

Register SS ( Stack Segment ), bagian memori 65K-byte yang digunakan untuk


menyimpan alamat segment memori yang dipergunakan menjadi Stack (tumpukan).
Address Stack yang efektif ialah suatu kombinasi isi dari : Stack Pointer (SP) + SS x
10H. Misal SS berisi 1000H dan SP berisi 0000H. Maka addres stack ditempatkan di
0000+10000 = 10000H. Dapat juga ditulis 10000:0000 ; address segment dari 1000H
dan addres offset dari 0000H.

Register ES ( Extra Segment ), atau segmen tambahan, merupakan register khusus


digunakan untuk instruksi string dan meyimpan alamat segment tambahan, misalnya
alamat display, alamat sistem operasi, dan lain-lain.

Directtives Assembler

Sebuah directive adalah command yang disisipkan pada kode sumber (source
code). Directives dapat menentukan: Variabel, Macro, Prosedur, Segmen Memori.
Directives bersifat tidak sensitif. Tulisan “.data”, “.DATA”, dan “.Data” dianggap
sama. Beberapa penjelasan lainnya: .MODEL SMALL : memilih ukuran model
memori. Pilihan model memori lainnya; Tiny (kombinasi kode dan data kurang dari
64K), Small (Kode ≤ 64K dan data ≤ 64K), Medium (Kode ≤ 64K dan berapapun
ukuran multiple kode segmen), Compact (Data ≤ 64K dan berapapun ukuran multiple
data segmen), Large (Kode > 64K dan Data > 64K multiple kode dan data segmen),
dan Huge. .STACK ; ukuran dari stack segment .DATA ; memulai data segment.
.CODE ; memulai kode segment
Beberapa instruksi yang menunjang program dengan loop:
• INC (Increment) = untuk menambah waktu 1 suatu data, bisa datanya di register
maupun di memory.
MOV AL 4
INC AL ; AL = 5
RET ; perintah mengakhiri
CF(Carry Flag) tidak berubah
• DEC (Decrement) = untuk mengurangi dengan 1 data
MOV AL 255
DEC AL ; AL = 254
RET
CF(Carry Flag) ; perintah mengakhiri
• Compare = mengurangi tapi hasil tidak disimpan dimana mana
MOV AL,5
MOV BL,5
COMPARE AL,BL ; AL:BL =AL-BL = 5 – 5 = 0 = zero flag 1
• SUB (Subtract) = mengurangi lalu hasil pengurangnnya disimpan
MOV AL, 5
SUB AL, 1 ; AL = 4
• JA (Jump if Above) = untuk berkaitan dengan bilangan tidak bertanda. Syaratnya
apabila operand 1 lebih besar daripada operand dua, maka akan lompat ke loop 1.
(Above and Below) = JA, JB
BIL (Signed, Unsigned)
AL = 9A
BL = 52H AL- BL = 48
CMP AL,BL
JA LUP1 AL > BL, maka lompat
• JG (Jump if Greater) = utnuk berkaitan dengan bilangan bertanda yaitu bilangan
komplemen 2. Syaratnya apabila operand 1 lebih kecil daripada operand 2 maka
tidak akan lompat ke loop 1. (Greater and Less) = JG, JL
BIL (Signed, Unsigned)
AL = 9A = negatif
AL- BL = 48
BL = 52H = positif
CMP AL,BL
JG LUP1 AL < BL, tidak lompat
• JAE (Jump if Above or Equal) = bisa apakah lebih besar atau sama dengan
• JCXZ = tergantung register CX, apabila CX 0 maka akan lompat
• JE (Jump If Equal) = akan menguji operand 1 dan operand 2, apabila sama maka
akan lompat
• JPO (Jump if Parity Odd) = berkaitan denganlogic 1 apakah ganjil atau genap
• JS (Jump if Sign) = Jump jika sign logicnya bernilai 1
• JZ (Jum if Zero Flag) = apabila Zero Flag bernilai 1 maka akan lompat

III. Alat dan Komponen yang Digunakan

1. Software Emu8086

IV. Langkah Percobaan

1. Siapkan Software Emu8086


2. Membuat program sesuai dengan yang diinstruksikan
3. Menjalankan Program
4. Catat hasil program
5. Buat analisa dari masing – masing hasil program
6. Buat kesimpulan

V. Data Hasil Percobaan


1. Buat diagram alir dan program untuk Menjumlahkan 10 PASANG data Desimal 2
digit yang berada pada BM1 dan BM2. Simpan hasil penjumlahan pada BM3. Beri
tanda ketika terjadi “Over Flow”.
.DATA
BM1 DB 93H, 77H, 63H, 94H, 32H, 44H, 17H, 47H, 42H, 75H
BM2 DB 37H, 49H, 63H, 81H, 93H, 27H, 43H, 23H, 35H,12 H
BM3 DB 10 DUP(0)
Diagram Alir:

START

AL
SI

CLS
AL [BM+SI]
AL AL+[BM2]+CARRY
DAA
BM3+SI AL

OF = 1
Y
N

BM4+SI 11H

SI SI+1
SI : 10

ZF = 0
Y
N

END
Code Program:

Hasil Program:
2. Buat diagram alir dan program untuk Menjumlahkan 10 PASANG data Desimal 4
digit yang berada pada BM1 dan BM2. Simpan hasil penjumlahan pada BM3. Beri
tanda ketika terjadi “Over Flow”.
.DATA
BM1 DW 1693H, 7887H, 6381H, 94H, 32H, 4423H, 1987H, 4700H, 4902H,
DW 3437H, 4996H, 63H, 8109H, 9443H, 2762H, 4023H, 6723H,
BM3 DW 10 DUP(0)
Diagram Alir:

START

AL
SI

CLC

AL B.[BM+SI]
AL AL+B.[BM2+SI]+CARYY
DAA
B.[BM3+SI] AL

OF1 = 1
Y
N

BM4+SI 11H

SI SI+1
AL B.[BM+SI]
AL AL+B.[BM2+SI]+CARRY
DAA
B.[BM3+SI] AL

Y
OF = 1

N
BM4+SI 11H

SI SI+1
SI : 20
CLC

Y
ZF = 0

N
END
Code Program:

Hasil Program:
3. Buat diagram alir dan program untuk Menjumlahkan data desimal 8 digit yang
berada pada BM1 dan BM2. Simpan hasil penjumlahan pada BM3. Beri tanda ketika
terjadi “Over Flow”.
BM1 78903456H, 89674321H, 87654321H, 0H, 22117755H
BM2 12345678H, 98766550H, 55667723H, 12345678H, 62117755H
BM3 0, 0, 0, 0, 0
Diagram Alir:

START

AL
SI

CLC
AL [BM+SI]
AL AL+[BM2+SI]+CARRY
DAA
BM3+SI AL

OF = 1
Y
N

BM4+SI 11H

SI SI+1
SI : 20

Y
ZF = 0

END
Code Program:

Hasil Program:
4. Buat diagram alir dan program untuk Menjumlahkan 4 pasang data desimal 9 digit.
Data input dan output nya tentukan sendiri.
Diagram Alir:

START

AL
SI

CLC
AL [BM+SI]
AL AL+[BM2+SI]+CARRY
DAA
BM3+SI AL

OF = 1

BM4+SI 11H

SI SI+1
SI : 20

Y
ZF = 0

END
Code Program:

Hasil Program:
VI. Analisis Data
Pada praktikum kali ini mahasiswa melakukan percobaan dengan membuat program
pada software EMU8086. Dilakukan 4 kali percobaan yang masing - masing dari
percobaannya adalah menjumlahkan BCD.
Terdapat perintah INC (Increment) yang berfungsi untuk menambahkan 1 suatu data
dengan Carry Flagnya adalah 0, bisa datanya di register maupun di memory.
Penggunaan INC ini dapat dilihat dari setiap soal untuk menambahkan nilai SI, hal ini
membuat program lebih sederhana karena pengguna tidak perlu menuliskan lagi SI+1,
SI+n… sampai dengan yang diinginkan, pada akhirnya perintah ini dapat mensupport
terjadinya loop. Digunakan perintah CMP(Compare) untuk mengurangi untuk
membandingkan operand1 dengan operand 2, tapi dari pengurangan ini tidak
menghasilkan hasil yang dapat disimpan di operand1 maupun operand 2. Lalu perintah
untuk mensupport loop adalah jump, pada praktikum kali ini digunakan JO (Jum if
Overflow) yang akan memeriksa suatu kondisi, apabila OF bernilai 1 maka akan terjadi
jump. Selain menggunakan JO, digunakan pula JNE (Jum if first operand is Not Equal
to second operand) yang akan memeriksa suatu kondisi, apabial ZF bernilai 0 maka akan
terjadi jump.
Pada soal nomor 1 terdapat 10 pasang data desimal yang masing - masing berjumlah
dua digit. Penjumlahan yang dilakukan adalah menjumlahkan 10 pasang data tersebut
yang masing - masing berada pada BM1 dan BM2, hasil dari penjumlahan tersebut
nantinya akan disimpan pada BM3, apabila hasilnya overflow maka nanti hasilnya akan
diberikan tanda. Proses penjumlahan menggunakan register AL, karena data yang
diproses merupakan data 8 bit. Dalam soal ini juga ditambahkan korelasi DAA.
Selanjutnya, data pada AL disimpan ke BM3+SI. Terdapat perintah JO, apabila OF
bernilai 1 maka SI+1. Selanjutnya ZF=0 apabila hasil operasi tidak bernilai 0 maka akan
terjadi perulangan loop.
Pada soal nomor 2 hampir sama dengan soal nomor 1 yakni terdapat 10 pasang data
desimal. Yang membedakannya adalah pada soal nomor 2, datanya masing - masing
berjumlah empat digit. Penjumlahan yang dilakukan adalah menjumlahkan 10 pasang
data tersebut yang masing - masing berada pada BM1 dan BM2, hasil dari penjumlahan
tersebut nantinya akan disimpan pada BM3, apabila hasilnya overflow maka nanti
hasilnya akan diberikan tanda. Proses penjumlahan menggunakan register AL, karena
data yang diproses merupakan data 8 bit. Dalam soal ini juga ditambahkan korelasi
DAA. Selanjutnya, data pada AL disimpan ke BM3+SI. Terdapat perintah JO, apabila
OF bernilai 1 maka SI+1. Selanjutnya ZF=0 apabila hasil operasi tidak bernilai 0 maka
akan terjadi perulangan loop.
Pada soal nomor 3 terdapat 5 pasang 8 digit data desimal, dikarenakan program
menggunakan Define Byte maka data 8 digit tersebut dipecah menjadi 2 digit. Masing
masing data berada pada BM1 dan BM2, kemudian hasil penjumalah disimpan pada
BM3. Sama halnya seperti soal sebelumnya terdapat perintah jump if not overflow, jika
OF=1 maka SI+1. Apabila overflow maka 00 disimpan pada BM4.
Pada soal nomor 4 terdapat 4 pasang data 9 digit yang ditentukan sendiri oleh
praktikan. Karena datanya sebanyak 9 digit maka dipecah menjadi 3 bagian dan
ditambahkan dengan pointer B.

VI. Kesimpulan
Dari praktikum yang telah dilakukan dapat disimpulkan bahwa BCD merupakan
kode yang menunjukkan bobot masing – masing keududukan bit. Pada praktikum
terdapat perintah loop. Perintah loop ini dusupport oleh perintah lainnya seperti CMP
yang berfungsi untuk mengurangi dan membandingkan, lalu INC yang berfungsi untuk
menambahkan 1 pada data, dan JO yang akan memeriksa suatu kondisi, apabila OF
bernilai 1 maka akan terjadi jump.

Pada proses penjumlahan, data yang diproses menggunakan ukuran DefineByte,


sehingga untuk soal nomor 3 dan 4 datanya dipecah terlebih dahulu karena keterbatasan
ukuran DefineByte.

VII. Daftar Pustaka

[1] Anonim, "Documentation for Emu8086," [Online]. Available:


https://www.philadelphia.edu.jo/academics/qhamarsheh/uploads/emu8086.pdf. [Accessed 19 April
2021].
[2] H. F. UNY, "Sistem Minimal Mikroprosesor," 21 November 2017. [Online]. Available:
http://hmeft.student.uny.ac.id/2017/11/21/sistem-minimal-mikroprosesor/. [Accessed 18 April 2021].

Anda mungkin juga menyukai