Anda di halaman 1dari 20

LAPORAN PRAKTIKUM

MIKROPROSESOR
“PROGRAM PENGURANGAN PADA BAHASA PEMROGRAMAN
ASSEMBLY”

NAMA PRAKTIKAN :

Febrianti Mahdar (191331043)


TANGGAL PERCOBAAN:
31 Maret 2021
TANGGAL PENGUMPULAN:
7 April 2021
NAMA 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 PENGURANGAN 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 mengurangi data hexadesimal

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 mengurangkan 8 PASANG data biner 8-bit
yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada BM3
.DATA
BMI1 DB 93H, 77H, 6CH, 9AH, 0CCH, 44H, 6EH, 77H
BM2 DB 3FH, 4CH, 6CH, 81H, 93H, 2AH, 4DH, 2EH
BM3 DB 8 DUP(0)
Diagram Alir:

Gambar 1. Diagram alir soal nomor 1


Code:

Gambar 2. Code program pengurangan 8 pasang data biner 8-bit


Hasil Program:

Gambar 3. Hasil program dari pengurangan 8 pasang data biner 8-bit


2. Buat diagram alir dan program untuk mengurangkan 9 PASANG data biner 16-bit
yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada BM3.
.DATA
BM1 DW 9343H, 7877H, 6AECH, 99DAH, 0C43CH, 44DEH, 645EH, 7917H,
8888H
BM2 DW 3AAFH, 4B5CH, 68CCH, 8441H, 0ACE3H, 2CFAH, 471DH,
200EH,9999H
BM3 DW 9 DUP(0)
Diagram Alir:

Gambar 4. Diagram alir soal nomor 2


Code:

Gambar 5. Code Program Pengurangan 9 pasang data biner 16-bit


Hasil Program:

Gambar 6. Hasil program Pengurangan 9 pasang data biner 16-bit


3. Buat diagram alir dan program untuk mengurangkan data biner 32-bit berikut:
9758A3C7H - 64E5AA7CH. Simpan hasil pengurangan pada unit memori 32-bit.
Diagram Alir:

Gambar 7. Diagram alir soal nomor 3


Code:

Gambar 8. Code program Pengurangan data biner 32-bit


Hasil Program:

Gambar 9. Hasil program Pengurangan data biner 32-bit


4. Buat diagram alir dan program untuk mengurangkan data biner 48-bit berikut:
0C8769758A3C7H – 853164E5AA7CH. Simpan hasil pengurangan pada unit
memori 48-bit.
Diagram Alir:

Gambar 10. Diagram alir soal nomor 4


Code:

Gambar 11. Code program pengurangan data biner 48-bit


Hasil Program:

Gambar 12. Hasil program pengurangan data biner 48-bit


5. Buat diagram alir dan program untuk mengurangkan data biner 64-bit berikut:
9E45C8769758A3C7H – 2BC4853164E5AA7CH. Simpan hasil pengurangan pada
unit memori 64-bit.
Diagram Alir:

Gambar 13. Diagram alir soal nomor 5


Code:

Gambar 14. Code Program pengurangan data biner 64-bit


Hasil Program:

Gambar 15. Hasil program pengurangan data biner 64-bit


VI. Analisis Data
Pada praktikum kali ini mahasiswa melakukan percobaan dengan membuat program
pada software EMU8086. Dilakukan 5 kali percobaan yang masing masing dari
percobaannya adalah mengurangkan data hexadesimal.

Dapat diketahui bahwa sebelum menjalankan program maka harus disusun


perintahnya terlebih dahulu. Dalam membuat program, hal pertama yang harus
dilakukan adalah memberikan judul program menggunakan syntac “TITLE” yang
merupakan tempat memberikan judul pada program yang akan ditulis, judul perlu
disesuaikan dengan permasalahan yang ingin dipecahkan dalam program yang nanti
ditulis. Selanjutnya menggunakan syntac “.MODEL” yang merupupakan syntac untuk
memesan jenis program yang akan ditulis. Di emu8086 terdapat beberapa model yang
bisa dipilih tergantung besar atau kecilnya suatu program. Kalau programnya relartif
kecil maka “.MODEL SMALL”. Selanjutnya menggunakan syntac “.STACK 100H”
yang digunakan untuk Untuk memesan lokasi untuk stack di dalam RAM, jadi RAMnya
diambil hanya sebesar 100H. H adalah Heksadesimal. Stack tempat mengamankan
register. Lalu ada “.DATA” yang digunakan untuk memesan data pada RAM area. Agar
program dapat berjalan maka diperlukan “MAIN PROC” yang berfungsi untuk memulai
procedure atau fungsi MAIN pada program.
Berdasarkan soal yang telah dikerjakan, soal – soal tersebut merupakan soal
pengurangan data heksadesimal. Untuk menjawab soal yang telah diberikan, digunakan
beberapa perintah seperti 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 JNZ (Jum if
Not Zero) yang akan memeriksa suatu kondisi, apabila ZeroFlag bernilai 0 maka akan
terjadi jump.
Berdasarkan program yang dilakukan, perintah nomor 1 yakni “Buat diagram alir
dan program untuk mengurangkan 8 PASANG data biner 8-bit yang berada pada BM1
dan BM2. Simpan hasil pengurangan pada BM3”, merupakan program yang
menggunakan perintah perulangan atau loop dikarenakan banyaknya jumlah pasang
data. Perintah loop ini digunakan untuk mempermudah atau membuat penulisan
program menjadi lebih simple tidak terlalu panjang. Terjadi pengurangan secara
berpasangan, data BM1 akan dikurangi dengan data BM2 lalu hasil disimpan di BM3.
Data BM1 akan dipindahkan ke register DL, selanjutnya baru dikurangi dengan data
BM2, sedangkan nilai borrow akan disimpan di register DH.

Lalu perintah nomor 2 yaitu “Buat diagram alir dan program untuk mengurangkan
9 PASANG data biner 16-bit yang berada pada BM1 dan BM2. Simpan hasil
pengurangan pada BM3.” merupakan program yang menggunakan perintah perulangan
atau loop dikarenakan banyaknya jumlah pasang data. Perintah loop ini digunakan untuk
mempermudah atau membuat penulisan program menjadi lebih simple tidak terlalu
panjang. Terjadi pengurangan secara berpasangan, data BM1 akan dipindahkan ke
register DX selanjutnya dikurangi dengan BM2 lalu disimpan di BM3, sedangkan nilai
borrow akan disimpan di register CL.
Pada perintah soal nomor 3 yaitu “Buat diagram alir dan program untuk
mengurangkan data biner 32-bit berikut: 9758A3C7H - 64E5AA7CH. Simpan hasil
pengurangan pada unit memori 32-bit.” , merupakan pengurangan 2 data hexadesimal
yang datanya merupakan biner 32-bit sehingga menggunakan DefineDword dan tidak
menggunakan perintah loop. Data ke-1 dipindahkan terlebih dahulu ke CX dan DX,
kemudian dikurangi dengan data ke-2, selanjutnya hasil pengurangan tersebut disimpan
di variabel HASIL.
Pada perintah soal nomor 4 yaitu “Buat diagram alir dan program untuk
mengurangkan data biner 48-bit berikut: 0C8769758A3C7H – 853164E5AA7CH.
Simpan hasil pengurangan pada unit memori 48-bit.”, merupakan pengurangan 2 data
hexadesimal yang datanya merupakan biner 48-bit sehingga menggunakan
DefineDword dan tidak menggunakan perintah loop sama seperti soal nomor 3
dikarenakan datanya hanya ada 2. Data ke-1 dipindahkan terlebihdahulu ke BX, CX,
dan DX, kemudian dikurangi dengan data ke-2, hasil pengurangan disimpan pada
variabel HASIL. Pada soal nomor 4 ini terdapat 12 digit data sehingga harus dipecah
terlebih dahulu menjadi 4 digit yang disimpan pada data Low dan 8 digit yang disimpan
pada data High.
Pada perintah soal nomor 5 yaitu “Buat diagram alir dan program untuk
mengurangkan data biner 64-bit berikut: 9E45C8769758A3C7H –
2BC4853164E5AA7CH. Simpan hasil pengurangan pada unit memori 64-bit.”,
merupakan pengurangan 2 data hexadesimal yang datanya merupakan biner 64-bit
sehingga menggunakan DefineDword dan sama seperti soal nomor 3 dan 4, pada soal
nomor 5 ini tidak menggunakan perintah loop dikarenakan datanya hanya ada 2. Data
ke-1 akan dipindahkan terlebihdahulu ke AX,BX,CX,DX, selanjutnya baru dikurangi
oleh data ke-2,hasil pengurangan disimpan pada variabel HASIL. Pada soal nomor 4 ini
terdapat 16 digit data sehingga harus dipecah terlebih dahulu menjadi 8 digit yang
disimpan pada data low dan 8 digit yang disimpan pada data high.

VI. Kesimpulan
Dari percobaan yang telah dilakukan dapat disimpulkan bahwa untuk memudahkan
pengerjaan program yang memiliki banyak data maka dilakukan 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, JNZ
yang berfungsi agar jump sehingga terjadi loop apabila memenuhi suatu kondisi yakni
apabila zeroflagnya bernilai 0. Pada proses pengurangan, data yang diproses
menggunakan ukuran DefineDword sedangkan data dari soal-soal ukurannya melebihi
dari 4 byte, sehingga data dipecah terlebih dahulu menjadi masing – masing 4 byte
karena keterbatasan ukuran dari DefineDword.

VII. Daftar Pustaka

UNY, H. F. (2017, November 21). HME FT UNY. From SItem Minimal Mikro
prosesor: http://hmeft.student.uny.ac.id/2017/11/21/sistem-minimal-mikroprosesor/
Tutorialspoints. (n.d.). Retrieved from Assembly Tutorial :
https://www.tutorialspoint.com/assembly_programming/assembly_conditions.htm
Kurniawan, Antonius Angga. 2019. Konsep Pemrograman Assembler. Jakarta:
Universitas Gunadarma.

Anda mungkin juga menyukai