Anda di halaman 1dari 16

LAPORAN PRAKTIKUM MIKROPROSESOR

“PROGRAM ASSEMBLY PENGURANGAN DENGAN LOOP”

Nama Praktikan:
Hanif Mahfuzzalfi (191331047)

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

Tanggal praktik : 7 April 2021


Tanggal pengumpulan : 14 April 2021

PROGRAM STUDI TEKNIK TELEKOMUNIKASI


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BANDUNG
I. TUJUAN
 Mahasiswa mampu memahami konsep Bahasa Pemrograman Assembly dan
menjalankannya di software emu8086.
 Mahasiswa mampu memahami konsep program pengurangan dua data atau lebih
pada bahasa Assembly.
 Mahasiswa mampu memahami konsep program pengurangan dengan LOOP.

II. LANDASAN TEORI


Bahasa Assembly merupakan jenis bahasa pemrograman yang ada pada generasi
kedua. Bahasa Assembly ini juga dinamakan sebagai bahasa rakitan yang merupakan
bahasa digunakan untuk komputer, namun bahasa ini masuk ke dalam kategori sebagai
bahasa tingkat rendah atau low level language. Bahasa ini merupakan notasi untuk mesin
sehingga nanti bisa dibaca oleh manusia.
Bahasa assembly mempunyai hubungan 1-1 dengan berdasarkan instruksi mesin.
Contohnya, untuk setiap julukan atau mnemonic yang nanti akan ditulis dengan
menggunakan bahasa assembly, maka nanti juga akan langsung diterjemahkan dengan
tepat satu kode operasi sehingga bisa langsung dimengerti oleh komputer. Untuk
memahami cara kerja bahasa Assembly, Berikut ini merupakan tahapan-tahapan
bagaimana sebuah huruf “A” bisa tampil di layar monitor menggunakan bahasa
Assembly:
Proses pengurangan pada emu8086 adalah proses mengurangkan satu data dalam
register atau memory atau immidiete dengan data lainnya menggunakan perintah SUB.
Pada proses pengurangan dilakukan peminjaman satu data terhadap data lainnya, namun
proses peminjaman ini hanya berjalan dengan lancar bila data terdapat dalam satu
memory yang sama. Setiap memory hanya bisa menyimpan 4 digit data atau 16 bit
,proses peminjaman ini hanya berlaku didalam 1 memory yang sama dan jika data lebih
dari 16 bit dan di simpan di 2 memory maka data tidak bisa meminjam dari data dalam
memory yang lain. Proses peminjaman akan di dilakukan depada carry fag sehingga carry
flah akan memiliki nilai. Karena peminjaman di lakukan terhadap carry flag maka nilai
data selanjutnya harus di kurangi 1 karena proses peminjaman, pengurangan ini agar data
yang di hasilkan valid dan benar.
Dalam pengurangan bilangan bertanda pertama adalah di lihat dulu apakah
bilangan hexa itu negatif atau positif. Bilangan Hexa di katakan negatif jika digit
pertamanya lebih dari 7, dan jika kurang dari 7 maka bilangan hexa adalah positif. Nilai
bertanda juga harus memenuhi syarat overflow yaitu data tidak dapat di tampung oleh
memory dalam emu8086 karena nilai terlalu positif atau telalu negatif, syarat nya adalah
jika positif kurang dari 7F dan jika negatif kurang dari -80. Pertama nilai yang ingin di
kurangkan jika negatif di ubah dulu menjadi komplemen 16 dan jika positif hanya di
tambah negatif di depannya dan keduanya di tambahkan. Hal ini karena sesuai dengan
persamaan berikut yaitu A – B = A + (-B) sehingga pengurangan bisa di lakukan dengan
proses tambah
III. ALAT DAN BAHAN
 Aplikasi emu8086

IV. LANGKAH KERJA


1. Buat diagram alir dan program untuk mengurangkan 12 PASANG data biner bertanda 8bit
yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada BM3. Beri tanda ketika
terjadi “Over Flow”.
.DATA
BM1 DB 93H, 77H, 6CH, 9AH, 0CCH, 44H, 6EH, 77H, 88H, 75H, 0, 64H
BM2 DB 3FH, 4CH, 6CH, 81H, 93H, 2AH, 4DH, 2EH, 35H, 0AAH, 95H, 99H
BM3 DB 12 DUP(0)
2. Buat diagram alir dan program untuk mengurangkan 10 PASANG data biner bertanda
16bit yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada
BM3. Beri tanda ketika terjadi “Over Flow”.
.DATA
BM1 DW 9343H, 7877H, 6AECH, 99DAH, 0C43CH, 44DEH, 645EH, 7917H, 8888H,
7899H
BM2 DW 3AAFH, 4B5CH, 68CCH, 8441H, 0ACE3H, 2CFAH, 471DH, 200EH,4567H,
0ABC6H
BM3 DW 9 DUP(0)
3. Buat diagram alir dan program untuk mengurangkan data biner Bertanda 32bit yang
berada pada BM1 dan BM2. Simpan hasil pengurangan pada BM3. Beri tanda ketika
terjadi “Over Flow”.
BM1 78903456H, F56BC832H, 87654321H, 0H, 22117755H
BM2 7FFFFFFFH, 9876655AH, 55667788H, 12345678H, 22117755H
BM3 0, 0, 0, 0, 0
4. Buat diagram alir dan program untuk mengurangkan data biner bertanda 48bit berikut:
0C8769758A3C7H–853164E5AA7CH. Simpan hasil pengurangan pada unit memori
48bit.
5. Buat diagram alir dan program untuk mengurangkan data biner 64bit bertanda berikut:
9E45C8769758A3C7H–2BC4853164E5AA7CH.
Simpan hasil pengurangan pada unit memori 64bit.

V. DATA PERCOBAAN

1. Buat diagram alir dan program untuk mengurangkan 12 PASANG data biner bertanda 8bit
yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada
BM3. Beri tanda ketika terjadi “Over Flow”.
.DATA
BM1 DB 93H, 77H, 6CH, 9AH, 0CCH, 44H, 6EH, 77H, 88H, 75H, 0, 64H
BM2 DB 3FH, 4CH, 6CH, 81H, 93H, 2AH, 4DH, 2EH, 35H, 0AAH, 95H, 99H
BM3 DB 12 DUP(0)
Flowchart :
START

SI ←0
AL ←0

AL ←0FFH
AL ←AL-[BM2+SI]
AL ←AL+1
AL ←AL+[BM1+SI]
[BM3+SI] ←AL

Y
0F=1

[BM4+SI] ←0FFH

SI ←SI+1
SI:12

Y
Z=0

END
Program :

Hasil :

2. Buat diagram alir dan program untuk mengurangkan 10 PASANG data biner bertanda
16bit yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada
BM3. Beri tanda ketika terjadi “Over Flow”.
.DATA
BM1 DW 9343H, 7877H, 6AECH, 99DAH, 0C43CH, 44DEH, 645EH, 7917H, 8888H,
7899H
BM2 DW 3AAFH, 4B5CH, 68CCH, 8441H, 0ACE3H, 2CFAH, 471DH, 200EH,4567H,
0ABC6H
BM3 DW 9 DUP(0)
Flowchart :
START

SI ←0
AX ←0

AX ←0FFFFH
AX ←AX-[BM2+SI]
AX ←AX+1
AX ←AX+[BM1+SI]
[BM3+SI] ←AX

Y
0F=1

[BM4+SI] ←0FFFFH

SI ←SI+1
SI:20

Y
Z=0

END
Program :

Hasil :

3. Buat diagram alir dan program untuk mengurangkan data biner Bertanda 32bit yang
berada pada BM1 dan BM2. Simpan hasil pengurangan pada BM3. Beri tanda ketika
terjadi “Over Flow”.
BM1 78903456H, F56BC832H, 87654321H, 0H, 22117755H
BM2 7FFFFFFFH, 9876655AH, 55667788H, 12345678H, 22117755H
BM3 0, 0, 0, 0, 0
Flowchart :
START

SI ←0

BX←0
CX←0
DX←0
BX←0FFFFH
BX←BX-[BM2+SI]
BX←BX+1
BX←BX+[BM1+SI]
[BM3+SI]←BX
SI←SI+2
CX←CX+[BM+SI]+CF
DX←0FFFFH
DX←DX-[BM2+SI]
CX←CX+DX
[BM3+SI]←CX

Y
0F=1

[BM4+SI] ←0FFFFH

SI ←SI+1
SI:20

Y
Z=0

END
Program :

Hasil :

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

SI ←0

BX←0
CX←0
DX←0
BX←0FFFFH
BX←BX-[BM2+SI]
BX←BX+1
BX←BX+[BM1+SI]
[BM3+SI]←BX

SI←SI+2
CX←CX+[BM+SI]+CF
DX←0FFFFH
DX←DX-[BM2+SI]
CX←CX+DX
[BM3+SI]←CX

Y
0F=1

SI:4

Y
Z=0

[BM4+SI] ←0FFFFH

SI:4

T
Z=0

END
Program :

Hasil :
5. Buat diagram alir dan program untuk mengurangkan data biner 64bit bertanda berikut:
9E45C8769758A3C7H–2BC4853164E5AA7CH.
Simpan hasil pengurangan pada unit memori 64bit.
Flowchart :
START

SI ←0

BX←0
CX←0
DX←0
BX←0FFFFH
BX←BX-[BM2+SI]
BX←BX+1
BX←BX+[BM1+SI]
[BM3+SI]←BX
SI←SI+2
CX←CX+[BM+SI]+CF
DX←0FFFFH
DX←DX-[BM2+SI]
CX←CX+DX
[BM3+SI]←CX

SI←SI+2
CX←CX+[BM+SI]+CF
DX←0FFFFH
DX←DX-[BM2+SI]
CX←CX+DX
[BM3+SI]←CX

Y
0F=1

SI:6

Y
Z=0

[BM4+SI] ←0FFFFH

SI:6

T
Z=0

END
Program :

Hasil :
VI. ANALISIS
Pada praktikum kali ini yaitu membuat program Assembly pengurangan
menggunakan LOOP. Overflow adalah saat memory tidak bisa menampung hasil
pengurangan sehingga data yang di tamplkan salah karena kekurangan tempat. Bilangan
desimal disebutg negatif saat digit pertamanya lebih dari 7 dan disebut positif jika kurang
dari 7 atau sama dengan 7, hasil dari pengurangan juga bisa overflow atau tidak overflow.
Sebuah data hasil pengurangan dikatakan overflow jika:
 Jika hasil positif angka pertamanya tidak boleh lebih dari angka 7, jika lebih dari 7 maka
akan di katakan overflow karena terlalu positif.

 Jika hasil negatif angka pertamanya tidak boleh lebih dari angka 8, jika lebih dari 8 maka
akan dikatakan overflow karena terlalu negatif.
Pada percobaan pertama yaitu membuat program untuk mengurangkan 12
PASANG data biner bertanda 8bit yang berada pada BM1 dan BM2. Simpan hasil
pengurangan pada BM3. Beri tanda ketika terjadi “Over Flow”.
.DATA
BM1 DB 93H, 77H, 6CH, 9AH, 0CCH, 44H, 6EH, 77H, 88H, 75H, 0, 64H
BM2 DB 3FH, 4CH, 6CH, 81H, 93H, 2AH, 4DH, 2EH, 35H, 0AAH, 95H, 99H
BM3 DB 12 DUP(0)
Untuk membuat programnya adalah merubah data pengurang menjadi komplemen 16,
jika data negatif maka diubah dengan cara FFH dikurangi data dan di tambah dengan 1
maka keluarannya adalah K’16. Namun jika data positif hanya tinggal menambah negatif
di depannya. Lalu data K’16 dari BM2 ini di tambahkan dengan data BM1, dikarenakan
A – B = A + (-B). Program di jalankan hingga semua data telah habis dengan
menggunakan parameter SI sebesar 12 karena data 2 digit kemudian di compare untuk
memberhentikan loop.
Pada percobaan kedua yaitu membuat program untuk mengurangkan 10 PASANG
data biner bertanda 16bit yang berada pada BM1 dan BM2. Simpan hasil pengurangan
pada BM3. Beri tanda ketika terjadi “Over Flow”.
.DATA
BM1 DW 9343H, 7877H, 6AECH, 99DAH, 0C43CH, 44DEH, 645EH, 7917H, 8888H,
7899H
BM2 DW 3AAFH, 4B5CH, 68CCH, 8441H, 0ACE3H, 2CFAH, 471DH, 200EH,4567H,
0ABC6H
BM3 DW 9 DUP(0)
Untuk program kedua ini tidak jauh berbeda dengan program pertama, yang membedakan
hanya pada jumlah data dan besar data, praktikum 2 ada 10 data masing masing dan 4
digit per-data. Program di buat dengan parameter SI sebesar 20 kemudian di compare
hingga data habis. Dari hasil praktikum dan perhitungan didapatkan data yang sama pada
data yang tidak overflow, sedangkan data hasil berbeda pada yang terjadi overflow
karena memori tidak bisa menampung semua data.
Pada percobaan ketiga yaitu membuat program untuk mengurangkan data biner
Bertanda 32bit yang berada pada BM1 dan BM2. Simpan hasil pengurangan pada BM3.
Beri tanda ketika terjadi “Over Flow”.
BM1 78903456H, F56BC832H, 87654321H, 0H, 22117755H
BM2 7FFFFFFFH, 9876655AH, 55667788H, 12345678H, 22117755H
BM3 0, 0, 0, 0, 0
Hal pertama yang dilakukan adalah melakukan perhitungan kepada masing masing data
lalu di dapat hasil overflow pada data ke 3. Lalu pembuatan program, karena data 32 bit
atau 8 digit dimana memori hanya bisa menampung 4 digit maka data di bagi menjadi 2.
Pada data pengurang BM2, data tersebut di ubah menjadi komplemen 16, lalu di tambahkan
dengan lowbit data yang di kurangi, setelah itu carry akan di tambahkan ke data high bit
pada BM1. Lanjut merubah data Highbit pengurang di BM2, namun sedikit berbeda karena
pada perubahan ke komplemen 16 tidak di tambah 1 Kemudian data high bit di tambahkan
dengan data highbit pada BM1. Simpan hasil pengurangan pada BM3 dan keterangan
overflow atau tidak pada BM4.
Pada percobaan keempat yaitu membuat program untuk mengurangkan data biner
bertanda 48bit berikut: 0C8769758A3C7H–853164E5AA7CH. Simpan hasil
pengurangan pada unit memori 48bit. Pada percobaan ini tidak jauh berbeda dengan
percobaan ketiga hanya saja yang berbeda hanya jumlah data dan besar datanya. Karena
besar data adalah 48bit atau 12 digit maka data harus di bagi masing masing menjadi 3
karen memori hanya bisa menampung 4 digit.
Pada percobaan terakhir yaitu membuat program untuk mengurangkan data biner
64bit bertanda berikut:
9E45C8769758A3C7H–2BC4853164E5AA7CH.
Simpan hasil pengurangan pada unit memori 64bit. Pada percobaan ini tidak jauh
berbeda dengan percobaan sebelumnya hanya saja yang berbeda hanya jumlah datanya
yang 64 bit sehingga perlu di tambah 4 digit lagi dan merubah parameter SI nya menjadi
6.

VII. KESIMPULAN
Dari praktikum kali ini dapat disimpulkan bahwa :
 Jika bilangan hexa lebih dari 7 maka bilangan negatif dan ketika di ubah menjadi K16
maka data herus mengurangi F dan di tambahkan dengan 1 maka menghasilkan K16 dan
Jika bilangan hexa kurang atau sama dengan 7 maka bilangan positif dan jika ingin di
ubah ke K16 hanya dengan menambahkan negatif di depannya.
 Overflow adalah keadaan saat memory tidak cukup untuk menyimpan hasil perhitungan.
 Jika hasil pengukuran negatif angka pertamanya tidak boleh lebih dari angka 8, jika lebih
dari 8 maka akan dikatakan overflow karena terlalu negatif dan Jika hasil positif angka
pertamanya tidak boleh lebih dari angka 7, jika lebih dari 7 maka akan di katakan
overflow karena terlalu positif.

Anda mungkin juga menyukai