Anda di halaman 1dari 18

LAPORAN PRAKTIKUM MIKROPROSESOR

PENJUMLAHAN BILANGAN DENGAN LOOP DALAM SOFTWARE EMU8086

Disusun Oleh :

Fikri Purwana Senja (201331010)

2A-TTE

Dosen Pembimbing :

Ferry Satria, BSEE, M.T.

Rahmawati Hasanah, S.ST., M.T.

Tanggal Praktikum : 8 February 2022

Tanggal Pengumpulan : 15 February 2022

PROGRAM STUDI TEKNIK TELEKOMUNIKASI

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI BANDUNG

2022
I. Tujuan
Dalam praktikum ini, diharapkan mahasiswa dapat :
1. Memahami penggunaan fitur software Emu8086.
2. Membuat program dan menjalankan program dengan bahasa assembly pada operasi
penjumlahan hexadecimal dalam software emu8086.
3. Memahami cara kerja program penjumlahan hexadecimal dalam sofwtware emu8086

II. Dasar Teori


A. Mikroprosesor Intel 8086
Mikroprosesor atau CPU merupakan komponen yang bekerja layaknya “otak” pada
manusia atau menjadi pengendali utama semua aktivitas yang dieksekusi oleh computer.
Intel 8086 merupakan salah satu merk prosesor 16 bit yang dapat beroperasi secara internal
16 bit dan mengirimkan data 16 bit secara eksternal melalui bus.

Gambar 1 Arsitektur Intel 8086

Mikroprosesor ini terbagi menjadi 2 unit, yaitu BIU (Bus Interface Unit), dan EU
(Execution Unit). Sesuai dengan namanya BIU bertugas sebagai unit antarmuka bus. BIU
tersusun dari beberapa komponen, yaitu register segmen, Instruction Pointer (IP), dan
Instruction Stream Byte Queue (ISBQ). EU bertugas sebagai unit eksekutor. EU juga
tersusun dari beberapa komponen, yaitu decoder instruksi, sistem control, Arithmetic Logic
Unit (ALU), register serbaguna dan flag register.

Emu8086 merupakan software emulator bagi pemrograman bahasa assembler atau


mikrokontroller. Dengan menggunakan software emulator, kita dapat melakukan simulasi
apakah program control hardware yang dibuat sudah benar atau masih terdapat suatu
kesalahan / error. Emu 8086 merupakan emulator untuk prosesor 8086 yang sudah
dilengkapi dengan editor dan assembler yang bersifat GUI (Graphical User Interface).
Dengan emu 8086 internal register dapat diamati dari waktu ke waktu akibat dari eksekusi
suatu instruksi assembly.

Perintah dasar bahasa assembly dalam software Emu8086


1. Model Small
Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk
memory yang digunakan oleh program kita. Supaya lebih jelas model-model yang
bisa digunakan adalah :

1
a. Tiny
Jika program hanya menggunakan 1 segmen seperti program COM. Model ini
disediakan khusus untuk program COM.
b. Small
Jika data dan code yang digunakan oleh program kurang dari ukuran 1 segmen
atau 64 Kb.
c. Medium
Jika data yang digunakan oleh program kurang dari 64 Kb tetapi code yang
digunakan bisa lebih dari 64 Kb.
d. Compact
Jika data yang digunakan bisa lebih besar dari 64 Kb tetapi codenya kurang dari
64 Kb.
e. Large
Jika data dan code yang dipakai oleh program bisa lebih dari 64 Kb.
f. Huge
Jika data, code maupun arry yang digunakan bisa lebih dari 64 Kb.
2. .Code
Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita
akan mulai menggunakan code segmen dimulai dari baris tersebut. Code segmen ini
digunakan untuk menyimpan program yang nantinya akan dijalankan.
3. .ORG 100H
Pada program Com perintah ini akan selalu digunakan. Perintah ini digunakan untuk
meberitahukan assembler supaya program pada saat dijalankan (diload ke meory)
ditaruh mulai pada offset ke 100H (256 byte). Dapat dikatakan juga bahawa kita
menyediakan 100H byte kosong pada saat program dijalankan. 100H byte kosong ini
akan ditempati oleh PSP (Program Segmen Prefix) dari program tersebut. PSP ini
digunakan oleh DOS untuk mengontrol jalannya program tersebut.
4. JMP
Perintah JMP (JUMP) ini digunakan untuk melompat menuju tempat yang
ditunjukkan oleh perintah JUMP.
5. INT 20H
Peirntah INT adalah suatu perintah untuk menghasilkan suatu interupsi.

B. Bahasa Assembly
Bahasa Assembly merupakan jenis bahasa pemrograman yang ada pada generasi
kedua. Bahasa assembly ini juga dinamakan sebagai bahasa rakitan yang merupakan
bahasa yang digunakan untuk computer, namun bahasa ini masuk ke dalam kategori
sebagai bahasa tingkat rendah atau low level language. Bahsa ini merupakan notasi untuk
mesin sehingga nanti bisa dibaca oleh manusia. Berbeda dengan high level language atau
bahasa tingkat tinggi, bahasa assembly ini 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 computer.
Sementara itu, pada bahasa tingkat tinggi satu perintah mampu diterjemahkan ke dalam
berbagai macam kode operasi di dalam bahasa mesin tersebut. Proses perubahan bahasa
dari bahasa assembly ke bahasa mesin dilakukan oleh assembler. Sementara untuk proses
kebalikannya merupakan fungsi dari diassembler. Namun untuk setiap kkomputer yang

2
sudah dilengkapi dengan bahasa mesin yang cenderung tidak sama sehingga
mengakibatkan bahasa assembly yang dihasilkan juga berpotensi tidak sama.
Untuk bahasa tingkat tinggi, bahasa ini lebih berfokus pada manusia dimana cara
kerjanya adalah bagaimana agara supaya semua pernyataan yang ada didalam program
tersebut bisa ditulis dengan mudah sehingga mudah dipahami oleh manusia. Sementara
untuk jenis bahasa tingkat rendah lebih berfokus pada bahasa mesin. Inilah yang menjadi
perbedaan dasar diantara kedua jenis bahasa yang kerap digunakan oleh computer dalam
menjalankan tugasnya.

Kelebihan bahasa assembly :


1. Ketika decompile ukurannya lebih kecil
2. Lebih efisien dan hemat memori
3. Lebih cepat untuk dieksekusi

Kesulitan bahasa assembly :


1. Lebih sulit dalam melakukan pekerjaan rumit, misalnya operasi matemtais.
2. Relatif lebih sulit untuk dipahami terutama jika jumlah baris sudah terlalu
banyak.
3. Dalam melakukan suatu perkejaan, baris program relative lebih panjang
disbanding bahasa tingkat tinggi.

C. JUMP Tanpa Syarat


Perintah JMP (jump) adalah perintah yang digunakan untuk melompati daerah data
program. Perintah JMP ini dikategorikan sebagai Unconditional Jump, karena perintah ini
tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan. Setiap ditemui
perintah ini, maka lompatan pasti dilakukan. Selain dari perintah jump tanpa syarat, masih
banyak perintah jump yang menyeleksi suatu keadaan tertentu sebelum dilakukan
lompatan. Perintah jump dengan penyeleksian kondisi terlebih dahulu biasanya diikuti
dengan erintah untuk melihat kondisi, seperti membandingkan dengan perintah “CMP”
(Compare).

• Membandingkan dengan CMP


Perintah CMP (Compare) digunakan untuk membandingkan 2 buah operand, dengan
syntax :

CMP Operand1,Operand2

CMP akan membandingkan operand1 dengan operand2 dengan cara mengurangkan


operand1 dengan cara mengurangkan operand1 dengan operand2. CMP tidak
mempengaruhi nilai Operand1 dan Operand2, perintah CMP hanya akan
mempengaruhi flag register sebagai hasil perbandingan. Adapun flag-flag yang
terpengaruh oleh perintah CMP ini adalah :
1. OF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan
bertanda.
2. SF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan
bertanda.
3. ZF akan 1, jika operand1 nilainya sama dengan operand2.

3
4. CF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan tidak
bertanda. CMP tidak dapat membandingkan antar 2 lokasi memory.

Jump yang mengikuti CMP

Perintah CMP yang hanya mempengaruhi flag register, biasnaya diikuti dengan
perintah jump yang melihat keadaan pada flags register ini. Jenis perintah jump yang
biasanya mengikuti perintah CMP.

Perintah Lompat Kondisi

JA <Jump If Above> Lompat, jika Operand1 > Operand2 untuk bilangan


tidak bertanda

JG <Jump If Greater> Lompat, jika Operand1 > Operand2 untuk bilangan


bertanda

JE <Jump If Equal> Lompat, jika Operand1 = Operand2

JNE <Jump If Not Lompat, jika Operand1 tidak sama dengan Operand2
Equal>

JB <Jump If Below> Lompat, jika Operand1 < Operand2 untuk bilangan


tidak bertanda

JL <Jump If Less> Lompat, jika Operand1 < Operand2 untuk bilangan


bertanda

JBE <Jump If Below Lompat, jika Operand1 <= Operand2 untuk bilangan
or Equal> tidak bertanda

JLE <Jump if Less or Lompat, jika Operand1 <= Operand2 untuk bilangan
Equal> bertanda

JAE <Jump If Above Lompat, jika Operand1 >= Operand2 untuk bilangan
or Equal> tidak bertanda

JGE <Jump If Greater Lompat, jika Operand1 >= Operand2 Equal> untuk
of Equal> bilangan bertanda

Dapat dilihat bahwa terdapat dua operasi yang berbeda, yaitu operasi bilangan bertanda
dan tidak bertanda. Bilangan bertanda adalah bilangan yang akan membedakan
bilangan negatif dan positif (Misal 37 dan -37). Sedangkan bilangan bertanda adalah
bilangan yang tidak akan membedakan positf dan negatif, jadi angka -1 untuk operasi
bilangan bertanda akan dianggap FFh pada bilangan tidak bertanda.

4
D. JUMP Dengan Syarat
Tidak seperti jump tanpa syarat, jump bersyarat hanya akan melompat menuju label
yang berjarak -128 sampai +127 byte dari tempat lompatan.

Gambar 2 Perintah Jump Bersyarat

Perintah jump sebenarnya sangat mudah untuk digunakan karena setiap huruf
melambangkan suatu kata. Dengan demikian kita tidak perlu untuk mengingat-ingat semua
perintah diatas, kita hanya harus ingat bahwa huruf J=Jump, E=Equal, N=Not, S=Sign,
Z=Zero, P=Parity, O=Overflow, C=Carry, G= Greater Than, A=Above, L=Less, dan
B=below. Huruf G dan L yang artinya Greater dan Less digunakan khusus untuk operasi
bilangan bertanda. Sedangkan huruf A dan B yang artinya Above dan Below digunakan
khusus untuk operasi bilangan tidak bertanda.

E. Instruksi Loop
Loop adalah suatu rangkaian intruksi yang diulang. Banyaknya pengulangan mungkin
dapat diketahui akhirnya, atau tergantung pada kondisi tertentu.

Bentuk instruksi : Loop label_tujuan

Pencacah atau loop adalah register CX decrement secara otomatis, jika CX bukan nol,
maka control menstransfernyake label_tujuan. Jika CX = 0, maka instruksi berikut setelah

5
loop yang dikerjakan. Label_tujuan harus berada sebelum instruksi loop dengan tidak lebih
dari 126 byte.

III. Alat
a. PC/Laptop
b. Software Emu8086

IV. Langkah Praktikum


1. Buka aplikasi emu8086
2. Buat aplikasi sesuai perintah dibawah ini :
a. Buat program untuk menjumlahkan 6 data heksadesimal berikut :
F5H,ACH,8BH,D4H,ABH,99H. Simpan hasil penjumlahan pada Register : BX.
b. Buat program untuk menjumlahkan 9 data heksadesimal berikut :
FFH,7AH,8BH,66H,DDH,9CH,7FH,5CH, dan EEH. Simpan hasil penjumlahan
pada Register : CX.
c. Buat program untuk menjumlahkan 6 data heksadesimal berikut :
AAFH,BEDAH,ABCDH, AA66H,88DDH,BECAH. Simpan hasil penjumlahan
pada Register : BL : CX.
d. Buat program untuk menjumlahkan 6 data heksadesimal berikut :
FFFFFFH,7AAF45H,8B6543H,FFFF66H,DDE4C9H,9CDDEEH. Simpan hasil
penjumlahan pada Register CX : DX.
e. Buat program untuk menjumlahkan 20 data heksadesimal berikut :
FFH,7AH,8BH,66H,DDH,9CH,88H,54H,B7H,99H,7EH,9DH,5EH,2BH,66H,4FH,
C5H,7AH,AAH,9CH yang tersimpan pada Data Area. Simpan hasil penjumlahan
pada register : DX.
f. Buat program untuk menjumlahkan 4 data heksadesimal berikut :
FAAFH,BEDAH,ABCDH,AA66H. Simpan hasil penjumlahan pada register : BL :
CX.
g. Buat program untuk menjumlahkan 2 data heksadesimal berikut :
4D6CCE779D + EAD5622CFEA. Simpan hasil penjumlahan pada data area dengan
nama SUM.
h. Buat program untuk menjumlahkan 3 data heksadesimal berikut :
FDE344BBCDEA + ABAB6899FED456 + DE986FDE548D. Simpan hasil
penjumlahan pada data area dengan nama SUM.
3. Setelah program dibuat, klik compile untuk memastikan tidak ada kesalahan dalam
pembuatan program.
4. Jalankan program yang telah dibuat dengan klik emulate.
5. Amati tampilan program operasi penjumlahan heksadesimal tersebut dengan klik single
step.
6. Masukkan data yang dihasilkan dari operasi penjumlahan heksadesimal pada data hasil
praktikum.

6
V. Hasil Praktikum
1. Program Penjumlahan 6 Heksadesimal
Data : F5H, ACH, 8BH, D4H, ABH, 99H

Kalkulator :

Program :

Hasil :

7
2. Program Penjumlahan 9 Data Heksadesimal
Data : FFH, 7AH, 8BH, 66H, DDH, 9CH, 7FH, 5CH, EEH.

Kalkulator :

Program :

Hasil :

8
3. Program Penjumlahan 6 Data Heksadesimal
Data : FAAFH, BEDAH, ABCDH, AA66H,88DDH, BECAH.

Kalkulator :

Program :

Hasil :

9
4. Program Penjumlahan 6 Data Heksadesimal
Data : FFFFFFH, 7AAF45H, 8B6543H, FFFF66H, DDE4C9H, 9CDDEEH

Kalkulator :

Program :

Hasil :

10
5. Program Penjumlahan 20 Data Heksadesimal
Data :
FFH,7AH,8BH,66H,DDH,9CH,88H,54H,B7H,99H,7EH,9DH,5EH,2BH,66H,4FH,C5H,
7AH,AAH,9CH

Kalkulator :

Program :

Hasil :

11
6. Program Penjumlahan 4 Data Heksadesimal
Data : FAAFH,BEDAH,ABCDH,AA66H

Kalkulator :

Program :

Hasil :

12
7. Penjumlahan 2 data heksadesimal F4D6CCE779D + EAD5622CFEA

Program :

Hasil :

13
8. Penjumlahan 3 data heksadesimal FDE344BBCDEA + ABAB6899FED456 +
DE986FDE548D.

Program :

Hasil :

14
VI. Analisis Data
Pada praktikum ini, praktikan ditugaskan membuat program untuk menjumlahkan
bilangan heksadesimal dengan menggunakan software EMU8086. Pada program tersebut
terdapat beberapa perintah atau sytax yang digunakan, pertama adalah TITLE yang berfungsi
untuk memberikan judul untuk program yang dibuat dengan simple. Kedua adalah .MODEL
SMALL yang berfungsi untuk memberitahukan bentuk memori yang digunakan pada program,
pada program ini menggunakan SMALL yang artinya data dan code yang digunakan pada
program kurang dari ukuran 1 segment atau 64 KB. Ketiga adalah .STACK 100H yang
berfungsi memberitahuakn lokasi penyimpanan/memory dan sebagai tempat penyimpanan
sementara untuk data. Keempat adalah .DATA yang berfungsi untuk mengunduh data RAM
area. Pada bagian akhri program terdapat syntax MAIN ENDP yang berfungsi untuk
mengakhiri prosedur atau method pada program yang dibuat dan syntax END MAIN berfungsi
untuk menutup kode area.
Pada program ini juga menggunakan syntax operasi penjumlahan yaitu ADD (addition)
dan ADC (addition with carry). Pada syntax ADD digunakan untuk menjumlahkan bilangan
sedangkan syntax ADC digunakan untuk menyimpan hasil carry yang berasal dari penjumlahan
sebelumnya.
Percobaan pertama adalah membuat program untuk menjumlahkan 6 bilangan
heksadesimal 8 bit yaitu F5H,ACH,8BH,D4H,ABH,99H dengan hasil penjumlahan dengan
besar 16 bit disimpan pada register BX. Lalu hasil penjumlahannya disimpan dengan jenis DW
karena hasil penjumlahan 8 bit dapat menghasilkan hasil 16 bit. Pertama data yang akan
ditambahkan kedalam register lalu ditambahkan masing masing datanya dan untuk mengatur
berjalannya loop, menggunakan SI sebagai pembatas sekaligus pengatur data yang akan di
tambahkan, saat SI terus bertambah maka loop akan terus terjadi hingga SI mencapai angka 12.
Ketika SI mencapai angka 12 dan di compare dengan angka 12 maka akan menghasilkan nilai
Z sama dengan 0. Setelah itu data akan berhenti karena JNZ hanya akan bekerja saat nilai Z
adalah 0. Data yang didapat dari hasil hitung dan program adalah 444.
Percobaan kedua adalah membuat program untuk menjumlahkan 9 bilangan
heksadesimal 8 bit yaitu FFH, 7AH, 8BH, 66H, DDH, 9CH, 7FH, 5CH, EEH dengan hasil
penjumlahan dengan besar 16 bit disimpan pada register CX. Lalu hasil penjumlahanna
disimpan dengan jenis DW karena hasil penjumlahan 8 bit dapat menghasilkan hasil 16 bit.
Pertama data akan ditambahkan kedalam register lalu ditambahkan masing masing datanya dan
untuk mengatur berjalannya loop, menggunakan SI sebagai pembatas sekaligus pengatur data
yang akan di tambahkan, saat SI terus bertambah maka loop akan terus terjadi hingga SI
mencapai angka 18. Ketika SI mencapai angka 18 dan di compare dengan angka 18 maka akan
menghasilkan nilai Z sama dengan 0. Setelah itu data akan berhenti karena JNZ hanya akan
bekerja saat nilai Z adalah 0. Data yang didapat dari hasil hitung dan program adalah 5AC.
Percobaan ketiga adalah membuat program menjumlahkan 6 data heksadesimal 16 bit
yaitu FAAFH, BEDAH, ABCDH, AA66H,88DDH, BECAH dengan hasil penjumlahannya
dengan besar 16 bit. Data input menggunakan DW karena besarnya 16 bit. Pertama adalah data
pertama yang dilambangkan dengan [Var + SI] ditambahkan dengan register CX yang isinya
0. Lalu carry dari penjumlahan CL dengan data pertama akan dipindahkan ke register BL.
Untuk mengatur perpindahan data pada loop menggunakan SI dengan SI yang ditambah dengan
2 karena setiap data 16 bit menggunakan 2 lokasi memori. Maka saat SI ditambah 2, saat loop
terjadi maka nilai CL selanjutnya akan ditambah dengan data Ke-2. Ketika SI sudah mencapai
dan dicompare dengan 12 juga dan menghasilkan 1, maka loop akan berhenti. Hasil yang
didapat dari penjumlahan yaitu 45763H.

15
Percobaan ke empat yaitu membuat program menjumlahkan 6 data heksadesimal 24
bit FFFFFFH, 7AAF45H, 8B6543H, FFFF66H, DDE4C9H, 9CDDEEH dengan hasil
penjumlahannya dengan besar 28 bit. Data input menggunakan DW karena besarnya data yaitu
24 bit namun di bagi 2 memori menjadi menggunakan 2x16 bit. Pertama adalah data yang
pertama yang dilambangkan dengan [VAR+SI] ditambahkan dengan register DX, dan SI
ditambah dengan 2 nilai[VAR+SI+2] ditambahkan ke CX. Untuk mengatur perpindahan data
pada loop menggunakan SI dengan SI yang ditambah dengan 2 karena setiap data 16 bit
menggunakan 2 lokasi memori.Ketika SI sudah mencapai 24 dan dicompare dengan 24 juga
akan menghasilkan nilai Z sama dengan 1, maka loop akan berhenti. Hasil yang didapat dari
penjumlahan yaitu 480D6A4H.
Percobaan ke lima yaitu membuat program menjumlahkan 20 data heksadesimal 8 bit
yang hasil penjumlahannya disimpan pada unit memori Bernama FIVE dengan besar 8 bit. Data
input menggunakan DB karena hanya 8 bit. Pertama data yang akan ditambahkan kedalam
register lalu ditambahkan masing masing datanya dan untuk mengatur berjalannya loop,
menggunakan SI sebagai pembatas sekaligus pengatur data yang akan di tambahkan, saat SI
terus bertambah maka loop akan terus terjadi hingga SI mencapai angka 12. Ketika SI mencapai
angka 20 dan di compare dengan angka 20 maka akan menghasilkan nilai Z sama dengan 0.
Setelah itu data akan berhenti karena JNZ hanya akan bekerja saat nilai Z adalah 0. Data yang
didapat dari hasil hitung dan program adalah AEDH.
Percobaan ke enam yaitu membuat program menjumlahkan 4 data heksadesimla 6 bit
yaitu FAAFH,BEDAH,ABCDH,AA66H dengan hasil penjumlahannya dengan besar 16 bit.
Data input menggunakan DW karena besarnya 16 bit. Pertama adalah data pertama yang
dilambangkan dengan [Var + SI] ditambahkan dengan register CX yang isinya 0. Lalu carry
dari penjumlahan CL dengan data pertama akan dipindahkan ke register BL. Untuk mengatur
perpindahan data pada loop menggunakan SI dengan SI yang ditambah dengan 2 karena setiap
data 16 bit menggunakan 2 lokasi memori. Maka saat SI ditambah 2, saat loop terjadi maka
nilai CL selanjutnya akan ditambah dengan data Ke-2. Ketika SI sudah mencapai 8 dan
dicompare dengan 8 juga dan menghasilkan 1, maka loop akan berhenti. Hasil yang didapat
dari penjumlahan yaitu 30FBC.
Percobaan ketujuh yaitu membuat program menjumlahkan 2 data heksadesimal berikut
4D6CCE779D + EAD5622CFEA. Menggunakan DW yang berjumlah 16 bit yang datanya
akan dibagi menjadi 3 memori. Simpan hasil penjumlahan pada data area dengan nama SUM.
Pertama data di [VAR+SI] ditambahkan ke register DX yang berisi 0, lalu nilai SI ditambahkan
2 lalu [VAR+SI+2] dimasukkan kembali bersama carry flag ke CX. Nilai data disimpan di 2
register DX dan CX karena 1 register hanya bisa menyimpan 16 bit data. Nilai SI ditambah
kembali 2 untuk berpindah ke data selanjutnya. Loop terus berjalan hingga nilai SI 6 kemudian
di compare dan ketika Z bernilai 1 maka loop akan selesi kemudian nilai pada register akan
disimpan pada unit memory SUM. Hasil penjumlahan dan program hasilnya sama dengan
1DFAC3314787H.
Percobaan kedelapan yaitu membuat program menjumlahkan 3 data heksadesimal
berikut : FDE344BBCDEA + ABAB6899FED456 menggunakan DW yang berjumlah 16 bit
yang datanya akan dibagi menjadi 3 memori. Simpan hasilnya penjumlahan pada data area
dengan nama SUM. Pertama data di [VAR+SI] ditambahkan ke register DX yang berisi 0, lalu
nilai SI ditambahkan 2 lalu [VAR+SI+2] dimasukkan kembali bersama carry flag ke CX. Nilai
data disimpan di 2 register DX dan CX karena 1 register hanya bisa menyimpan 16 bit data.
Nilai SI ditambah kembali 2 untuk berpindah ke data selanjutnya. Loop terus berjalan hingga
nilai SI 6 kemudian di compare dan ketika Z bernilai 1 maka loop akan selesi kemudian nilai

16
pada register akan disimpan pada unit memory SUM. Hasil penjumlahan dan program hasilnya
sama dengan 1DFAC3314787H.

VII. Kesimpulan
Dalam praktikum kali ini, didapat kesimpulan bahwa Dalam praktikum kali ini, didapat
kesimpulan bahwa loop berfungsi untuk mempermudah dan mempersingkat program
penjumlahan dengan jumlah bilangan yang banyak. Dalam program penjumlahan dengan
menggunakan fungsi Loop ini menggunakan syntax INC (increment), JNZ (Jump if not Zero),
dan CMP (Compare). INC (Increment) adalah peringtah yang berfungsi untuk menambah isi
memori dengan 1 tanpa mengganggu nilai Carry Flag. Suntax CMP (Compare) berfungsi untuk
membandingkan pada suatu register. Syntax JNZ (Jump I Not Zero) berfungsi untuk melakukan
lompatan pada bagian program saat keadaan Z bernilai 0 dan akan berhenti jika Z bernilai 1.
Pemrograman loop dapat dibuat oleh beberapa cara yaitu menggunakan Add, CMP, IC dan
DEC (Decrement).

VIII. Daftar Pustaka

[1] Anonim, “Perkembangan Dan Sejarah Mikroprosesor Dari Tahun Ke Tahun,” 29 July 2020.

[2] Anonim, “Sejarah Perkembangan Prosesor AMD Dari Tahun ke Tahun,” 24 10 2017.

[3] Ardiyanto88, “Perintah dasar Bahasa Assembly Menggunakan Emulator 8086,” 25 Desember
2013.

[4] S. Hamdani, “Perkembangan Mikroprosesor,” 2014.

[5] F. Jauhari, “Perkembangan Mikroprosesor Dari Awal Sampai Sekarang”.

[6] Nesabamedia, “Pengertian Bahasa Assembly Beserta Manfaat dan Contohnya,” 01 Januari 2021.

[7] E. P. Prasetya, “Pengenalan Mikroprosesor dengan Emulator 8086,” 13 Oktober 2020.

17

Anda mungkin juga menyukai