Anda di halaman 1dari 183

LAPORAN PRAKTIKUM

MIKROPROSESOR

Nama : Cahyo Utomo


NIM : 201811032
Kelas :B
Kelompok : B4
Jurusan : S1 Teknik Elektro
Tgl Praktikum : 29 September 2020
20 Oktober 2020
10 November 2020
01 Desember 2020
08 Desember 2020
Asisten : Vebyrizky Diviralda

LABORATORIUM ELEKTRONIKA INDUSTRI


INSTITUT TEKNOLOGI PLN
JAKARTA
2020
PRAKTIKUM I
Pengantaran Mikroprosesor dan Bahasa Pemrograman Asemmbly
(Interupsi dan Input/Output)
Andhika Fitra Ramadhan (201811031); Cahyo Utomo (201811043);
Mulia Djuang (201811034); Eki Nur Afifah (201811043) S1 Teknik
Elektro, Institut Teknologi – PLN
cahyoutomo3@gmail.com

BAB I
Pendahuluan
I.I Tujuan
1. Mampu memahami dan menjelaskan cara kerja mikroprosesor dan menggunakan
bahasa pemrograman Assembly untuk memprogram mikroprosesor
2. Memahami fungsi dari interupsi pada mikroprosesor
3. Memahami cara meminta masukan dari keyboard dan menampilkan pada layar.

I.II Alat dan Bahan


1. Komputer
2. Aplikasi Emu8086
BAB II
Landasan Teori
II.I Teori Modul

PENGERTIAN MIKROPROSESOR

Mikroprosesor adalah sebuah komponen rangkaian elektronik terpadu yang


terdiri dari rangkaian aritmatik, logik dan kontrol yang diperlukan untuk menjalankan
fungsi-fungsi sebuah CPU (Central Processing Unit) dari sebuah komputer digital.
Rangkaian elektronika terpadu tersebut dapat menerjemahkan dan menjalankan instruksi
dari sebuah program serta menangani operasi aritmatik. Mikroprosesor dikembangkan
pada akhir tahun 1970 sebagai hasil dari teknologi LSI (Large Scale Integration), suatu
rangkaian elektronik terpadu yang memungkinkan menggabungkan ribuan transistor,
dioda, dan resistor pada sebuah chip silikon sebesar 5 mm persegi.

Pada awal tahun 1980 teknologi VLSI (Very Large Scale Integration) berkembang sangat
pesat dan digunakan sebagai rangkaian elektronik dalam sebuah mikroprosesor, yang
mampu menggabungkan ratusan ribu komponen elektronik dalam sebuah chip yang
mempunyai ukuran sama dengan chip LSI. Dengan semakin berkembangnya teknologi
pembuatan mikroprosesor dan semakin murahnya biaya produksi yang digunakan,
memungkinkan para insinyur komputer untuk mengembangkan mikrokomputer.
Komputer semacam ini mempunyai ukuran yang lebih kecil daripada televisi portabel
tetapi mempunyai kemampuan hitung yang cukup baik untuk dipakai dalam bisnis,
industri dan ilmu pengetahuan. Mikroprosesor tersebut juga memungkinkan
pengembangan produk-produk seperti intelligent-terminal, automatic teller machine dan
point of sale terminal yang biasa dipakai di toko-toko retail. Mikroprosesor juga banyak
digunakan ebagai rangkaian kontrol dalam industri robot, alat-alat penelitian, dan
peralatan-peralatan rumah sakit. Kemajuan teknologi tersebut juga memungkinkan
mikroprosesor dipakai untuk produk-produk konsumen seperti: programmable
microwave oven, televisi, game-game elektronik dan juga dalam bidang-bidang otomotif.

KOMPONEN MIKROPROSESOR (8086)

Terdapat banyak sekali tipe dari mikroprosesor, tetapi pada umumnya isi di
dalam mikroprosesor adalah sama. Salah satu chip mikroprosesor yang dikembangkan
oleh perusahaan Intel pada tahun 1970-an adalah mikroprosesor tipe 8085 dan seri
selanjutnya yaitu 8086. Perbedaan signifikan pada 8085 dan 8086 yaitu mikroprosesro
8085 merupakan tipe 8-bit sedangkan 8086 merupakan tipe 16-bit mikroprosesor. Pada
praktikum akan digunakan mikroprosesror tipe 8086. Berikut arsitektur internal dari
mikroprosesor 8086

Isi Mikroprosesor 8086 dibagi menjadi dua berdasarkan fungsinya, yaitu EU


(Execution Unit) dan BIU (Bus Interface Unit). EU memberi instruksi pada BIU untuk
memulai dari mana data yang ingin dieksekusi diambil lalu diterjemahkan menjadi bahasa
mesin sebelum dieksekusi. Fungsinya untuk mengontrol penggunaan data dan instruksi
pada dekoder dan ALU. Excecution Unit tidak terhubung langsung dengan sistem bus,
tetapi dia memproses data melalui Bus Interace Unit seperti yang terlihat pada gambar.
BIU mengurus semua transefer data dan alamat antar bus untuk EU seperti pengiriman
alamat, mengambil instruksi dari memori, membaca dan menulis data ke port maupun
memori. Berikut penjelasan dari isi EU (3.2.1 – 3.2.4) dan BIU (3.2.5 – 3.2.6).
Control System

Control System berfungsi mengatur aliran data bus dan alamat bus, menghasilkan sinyal
dalam mikroprosesor untuk melaksanakan instruksi yang diberikan. Control unit juga
mengatur masuk keluarnya data dan koneksi antar blok pada system mikroprosesor.

Arithmetic Logic Unit (ALU)

ALU melakukan operasi aritmatika (penjumlahan dan pengurangan) dan logika (AND,
OR). ALU menggunakan data dari memori dan Akumulator untuk melakukan proses
operasi tersebut dan menyimpan hasilnya pada akumulator.

Conditional Flags

Flag-flag ini merepresentasikan hasil dari instruksi proses aritmatika sebagai


berikut :
- Carry flag (CF)– Mengindikasikan apakah ada data berlebih dari hasil operasi
aritmatika
- Auxiliary flag (AF)− Mengindikasikan adanya data berlebih dari data rendah (4-
bit pertama) ke data tinggi (4-bit kedua) pada register
- Parity flag (PF)− Menset (nilai 1), jika instruksi menghasilkan sebuah angka
genap
- Zero flag (ZF) − Menset (nilai 1), jika hasil instruksi adalah 0.
- Sign flag (SF) − Menset (nilai 1), jika hasilnya adalah negatif dan bernilai 0 jika
positif
Overflow flag (OF) – Bernilai 1 ketika kapasitas system terlampaui.

• Control Flags
Control flags mengatur operasi dari Execution Unit. Berikut penjelasannya :
- Trap flag (TF) – Jika di set ke 1 maka program akan berjalan step-by-step
- Interrupt flag (IF)− mengabaikan interupsi yang terjadi jika bit ini 0.
- Direction flag (DF) – Digunakan untuk operasi string. Jika bernilai 1 memori
akan diakses dari tertinggi ke terendah.
General purpose register
Terdapat 8 general purpose registers, yaitu AH, AL, BH, BL, CH, CL, DH, and
DL. Secara individu register ini dapat digunakan untuk menyimpan data 8-bit dan dapat
digabungkan untuk menyimpan data 16-bit. Gabungan dari AH dan AL disebut AX, BH
dan BL adalah BX, begitu pula dengan CX dan DX.

AX register – Digunakan sebagai register akumulator. Digunakan untuk


menyimpan hasil dari operasi aritmatika.
BX register – Digunakan sebagai register dasar, yaitu sebagai memori
penyimpanan alamat dasar dari area memori dalam sebuah segmen data.
CX register – Digunakan sebagai register counter, yaitu untuk melakukan
instruksi perulangan sejumlah yang dimasukkan pada CX.
DX register – Digunakan untuk menyimpan alamat port I/O untuk instruksi I/O.
Pointer dan Indeks-register
Merupakan 16-bit register yang menyimpan alamat dari mulainya suatu segmen.
- Register SP (Stack Pointer, 16 bit) Fungsi: Digunakan untuk operasi stack
seperti menyimpan alamat return saat memanggil subroutine. SP merupakan
register yang secara implisit digunakan oleh perintah PUSH dan POP yaitu
menyimpan dan mengambil kembali dari stack.
- Register BP (Base Pointer, 16 bit)Fungsi: Sebagai penunjuk base dalam stack
yang disediakan untuk penyimpanan data. BP juga digunakan si dengan
bahasa pemrograman misalnya Assembler dan C.
- Register IP (Instruction Pointer, 16 bit)Fungsi: Register yang berpasangan
dengan CS sebagai register utama untuk menunjukkan baris perintah
program. Pada saat program dijalankan, IP akan langsung menunjuk pada awal
program. Code Segment dan Instruction Pointer berfungsi sebagai program
counter ditulis dengan format CS:IP. Secara umum, kode mesin diletakkan
di Code Segment, semua data diletakkan di Data Segment, dan operasi PUSH
dan POP dilakukan di Stack Segment.
- Register SI dan DI (Source Index dan Destination index, 16 bit)Fungsi:
Menyimpan nilai-nilai offset dalam segment data memori pada saat
bersangkutan.
Instruction queue
BIU memiliki instruction queue. BIU memiliki 6 bytes instruksi
selanjutnya yang disimpan dalam instruction queue. Maka saat EU menjalankan
suatu instruksi, sudah terdapat instruksi berikutnya pada instruction queue
hasilnya proses eksekusi menjadi lebih cepat. Mengambil instuksi setelahnya
dalam kondisi instuksi sebelumnya masih berjalan disebut pipelining.
Segment register
BIU memiliki 4 segment buses, yaitu CS, DS, SS & ES. Segment buses
menyimpan alamat dari instruksi dan data pada memori yang digunakan oleh
prosesor untuk mengakses lokasi memori. Ia juga memiliki sati pointer register
(IP), yang menyimpan alamat dari instruksi berikutnya yang akan dieksekusi
oleh EU.
- Code Segment (CS) – Digunakan untuk menyimpan alamat lokasi program
executable ditempatkan.
- Data Segment (DS) − Berisikan data yang digunakan pada program dengan
memanfaatkan alamat offset.
- Stack Segment (SS) – Berperan untuk menyimpan data dan alamat pada memori
selama proses eksekusi berlangsung.
Extra Segment (ES) – Merupakan segmen tambahan yang digunakan oleh string untuk
menyimpan tambahan destinasi data.

Bentuk IC Mikroprosesor 8086


AD0-AD15 : Address/Data bus
A16-A19 : High order address bus
S2, S1, S0 : Status pins
BHE’/S7 : Bus High Enable/Status
RD’ : This is used for read operation
READY : This is the acknowledgement from the memory or slow device
that they have completed the data transfer.
INTR : Interrupt Request.
NMI : Non maskable interrupt
INTA : Interrupt acknowledge
MN/MX’ : Minimum/Maximum
RQ’/GT1′, RQ’/GT0′ : Request/Grant
LOCK’ : Its an active low pin
TEST’ : This examined by a ‘WAIT’ instruction
CLK : Clock Input
RESET : This pin requires the microprocessor to terminate its present
activity immediately.
DT/R : Data Transmit/Receive
DEN : Data enable
HOLD/HOLDA : HOLD indicates that another master has been requesting a local
bus
ALE : Address Latch Enable
Pemrograman Bahasa Asembly

Bahasa rakitan atau lebih sering dikenal dengan bahasa Assembly adalah bahasa
pemograman tingkat rendah yang dipakai untuk memprogram perangkat keras seperti
mikroprosesor dan mikrokontroler. Bahasa ini merupakan bahasa pemrograman yang
berisi instruksi-instruksi yang diterjemahkan oleh decoder menjadi bahasa mesin yang
dimengerti oleh komputer.

Untuk mempelajari bahasa ini akan digunakan aplikasi emu8086. Lakukan instalasi
terlebih dahulu (https://emu8086-microprocessor-emulator.en.softonic.com/download).
Aplikasi ini merupakan emulator untuk memprogram mikroprosesor 8086 menggunakan
bahasa pemrograman asembly. Tampilan aplikasi emu8086 dapat dilihat pada gambar
dibawah ini. Source code program dapat dituliska pada kolom editor.

Pengertian Interupsi (Interrupt)

Interupsi adalah suatu permintaan khusus kepada mikroposesor untuk melakukan


sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang
sedang dikerjakannya dan melakukan apa yang diminta oleh yang menginterupsi.

Interupt dibagi menjadi 2 yaitu interrupt BIOS dan DOS :


- Interupt 00h - 1Fh (0 - 31) adalah interrupt BIOS dan standar di semua komputer baik
yang menggunakan sistem operasi DOS atau bukan. Lokasi Interupt Vector Table-
nya ada di alamat absolut 0000h-007Fh.

- Interupt 20h - FFh (32 - 255) adalah interrupt DOS. Interrupt ini hanya ada pada
komputer yang menggunakan sistem operasi DOS dan Interupt Handler-nya diload
ke memori oleh DOS pada saat DOS digunakan. Lokasi Interupt Vector Tablenya
ada di alamat absolut 07Fh-3FFh.

Input dan Output pada Mikroprosesor

Pengertian input dan output pada mikroprosesor sama dengan perangkat


elektronik lainnya, yaitu input adalah masukan yang didapatkan oleh mikroprosesor guna
mengolah data yang dimasukkan sedangkan output adalah hasil olahan data atau perintah
yang diberikan dari mikroprosesor kepada lingkungannya. Input yang pada
mikroprosesor contohnya adalah dari keyboard dan mouse. Output dari mikroprosesor
contohnya tampilan pada layar monitor computer dan transmisi data lewat PORT
mikroprosesor.

Selanjutnya seiring dengan topik-topik praktikum akan dipelajari tipe-tipe


Input/output yang dapat diberikan/dikeluarkan oleh mikroprosesor. Tipe-tipe yang
dimaksud diatur oleh interupsi yang diberikan dan isi dari register-register pada
mikroprosesor.

Tabel 1.1. BIOS Interrupt


II.II Teori Penunjang

Pengertian Mikroprosesor (Microprocessor) dan Cara Kerja Mikroprosesor –


Mikroprosesor adalah sebuah Chip IC atau Sirkuit Terintegrasi yang menggabungkan
fungsi inti dari unit pemrosesan pusat (CPU/Central Processing Unit) komputer. Chip IC
yang dalam bahasa Inggris ditulis dengan “Microprocessor” ini merupakan perangkat
multiguna yang dapat diprogram untuk menerima data digital sebagai input,
memprosesnya sesuai dengan instruksi yang tersimpan dalam memorinya dan
memberikan hasil sebagai output.

Mikroprosesor berisi logika kombinasional dan logika digital sekuensial yang beroperasi
pada angka dan simbol yang diwakili dalam sistem angka biner. Dalam sebuah IC
Mikroprosesor, terdapat ALU (unit aritmatika dan logika), unit kontrol, register, sistem
bus dan jam (clock) untuk melakukan tugas komputasi. Microprocessor dapat dikatakan
sebagai otak dari semua komputer, baik komputer tersebut berbentuk laptop, desktop
maupun server.

Perkembangan Mikroprosesor dapat ditelusuri mulai dari penemuan komponen IC oleh


Fair Child Semikonduktor pada tahun 1959. Kemudian pada tahun 1968, Gordan Moore
(ahli kimia), Robert Noyce (fisikawan) dan Andrew Grove (Investor) mengundurkan diri
dari Fair Child Semikonduktor dan mendirikan perusahaan mereka sendiri yaitu
perusahaan yang kita kenal saat ini, INTEL (Integrated Electronics). Pada tahun 1971,
mereka berhasil menciptakan mikroprosesor pertama yaitu Intel 4004.
Baca juga : Pengertian IC (Integrated Circuit) dan Aplikasinya.

Diagram Blok Mikroprosesor pada Komputer

Sebuah Mikroprosesor pada dasarnya terdiri dari Unit Arimatika dan Logika atau ALU
(Arithmetic Logical Unit), Register Array dan Unit Pengendali. Berikut Diagram Blok
Mikroprosesor pada Komputer.
Cara Kerja Mikroprosesor

Dari Diagram Blok Mikroprosesor diatas terlihat bahwa sebuah Mikroprosesor pada
dasarnya terdiri dari 3 bagian utama yaitu Arithmetic Logical Unit (ALU), Register Array
dan Unit Pengendali yang terhubung dengan bagian INPUT (Keyboard, sensor) dan
bagian OUTPUT (Layar Monitor, printer, motor) serta bagian unit Memori.
Mikroprosesor menjalankan sebuah perintah atau instruksi berdasarkan urutan berikut ini
yaitu Fetch (penjemputan atau pengambilan perintah dan data yang diperlukan), Decode
(Pembacaan sandi) dan Execute (Menjalankan Perintah atau Mengeksekusi Perintah).

Sebuah Instruksi atau perintah pada awalnya disimpan di unit Memori secara berurutan
(sequential order). Mikroprosesor menjemput atau mengambil instruksi-instruksi tersebut
dari memori, kemudian menerjemahkannya dan mengeksekusi Instruksi-instruksi
tersebut hingga mendapatkan instruksi STOP atau berhenti. Hasil esksekusinya kemudian
dikirimkan dalam Biner ke port OUTPUT. Di antara proses-proses ini, terdapat Register
Array yang berfungsi untuk menyimpan data sementara sedangkan ALU dalam
Mikroprosesor digunakan untuk melakukan fungsi-fungsi komputasi.

Istilah-istilah Umum yang digunakan dalam Mikroprosesor

Berikut adalah beberapa istilah umum yang sering digunakan dalam Mikroprosesor
(Microprocessor).
▪ BUS
BUS adalah seperangkat konduktor yang dimaksudkan untuk mengirimkan data,
alamat atau mengontrol informasi ke berbagai elemen dalam mikroprosesor.
Biasanya mikroprosesor akan memiliki 3 jenis Bus yaitu Bus Data, Bus Kontrol
dan Bus Alamat. Prosesor 8-bit akan menggunakan Bus lebar 8-bit.
▪ Kelompok Instruksi (INSTRUCTION SET)
Kelompok Instruksi atau Instruction Set adalah kelompok perintah yang dapat
dipahami oleh mikroprosesor. Jadi Kelompok instruksi adalah antarmuka antara
perangkat keras dan perangkat lunak (program). Contohnya, Instruksi
memerintahkan prosesor untuk mengganti transistor yang relevan untuk
melakukan pemrosesan data. Misalnya. TAMBAHKAN A, B; digunakan untuk
menambah dua angka yang tersimpan dalam register A dan B.
▪ Panjang kata (WORD LENGTH)
Panjang kata adalah jumlah bit dalam Bus data internal suatu prosesor atau jumlah
bit yang dapat diproses oleh suatu prosesor pada suatu waktu. Misalnya, Prosesor
8-bit akan memiliki bus data 8-bit, register 8-bit dan akan melakukan pemrosesan
8-bit pada suatu waktu. Untuk melakukan operasi bit yang lebih tinggi (32-bit atau
16-bit), Mikroprosesor akan memecahkannya menjadi serangkaian operasi 8-bit.
▪ CACHE MEMORY
Memori cache adalah memori akses acak yang terintegrasi ke dalam prosesor. Jadi
prosesor dapat mengakses data dalam memori cache lebih cepat daripada dari
RAM biasa. Ini juga dikenal sebagai Memori CPU. Memori cache digunakan
untuk menyimpan data atau instruksi yang sering dirujuk oleh perangkat lunak
atau program selama operasi. Sehingga akan meningkatkan kecepatan operasi
secara keseluruhan.
▪ Kecepatan Clock (CLOCK SPEED)
Mikroprosesor menggunakan sinyal Clock untuk mengontrol laju instruksi yang
dijalankan, menyinkronkan komponen internal lainnya dan untuk mengendalikan
transfer data di antara mereka. Jadi clock speed mengacu pada kecepatan di mana
mikroprosesor menjalankan instruksi. Biasanya diukur dalam Hertz dan
dinyatakan dalam megahertz (MHz), gigahertz (GHz) dan lain-lainnya.

Keunggulan-keunggulan Mikroprosesor
Berikut dibawah ini adalah beberapa keunggulan Mikroprosesor.

▪ Biaya rendah (Low Cost) – Mikroprosesor tersedia dengan biaya rendah karena
dikemas dalam teknologi sirkuit terintegrasi (chip IC). Dengan demikian, biaya
sistem komputer akan menjadi lebih rendah dan terjangkau.
▪ Kecepatan tinggi – Chip mikroprosesor dapat bekerja pada kecepatan sangat
tinggi karena teknologi yang terlibat di dalamnya. Mikroprosesor mampu
menjalankan jutaan instruksi per detik.
▪ Ukuran kecil – Karena teknologi integrasi skala sangat besar dan skala ultra
besar, mikroprosesor dapat dibuat dalam ukuran yang sangat kecil sehingga akan
mengurangi ukuran seluruh sistem komputer.
▪ Serba guna (Versatile) – Mikroprosesor sangat fleksibel, chip yang sama dapat
digunakan untuk sejumlah aplikasi hanya dengan mengubah program (instruksi
yang disimpan dalam memori).
▪ Konsumsi Daya Rendah – Mikroprosesor biasanya diproduksi menggunakan
teknologi semikonduktor oksida logam (metal oxide semiconductor) yaitu
MOSFET (Metal Oxide Semiconductor Field Effect Transistor) yang bekerja
dalam mode saturasi dan mode cut-off sehingga daya yang dikonsumsi menjadi
sangat rendah dibandingkan dengan yang lainnya.
▪ Tidak Menghasilkan Panas yang berlebihan – MIkroprosesor tidak
menghasilkan panas yang berlebihan apabila dibandingkan dengan perangkat
tabung vakum.
▪ Andal (Reliable) – Mikroprosesor sangat andal, tingkat kegagalan sangat sedikit
karena teknologi semikonduktor digunakan.
▪ Portable – Perangkat atau sistem komputer yang dibuat dengan mikroprosesor
dapat dibuat portabel karena ukurannya yang kecil dan konsumsi daya yang
rendah.

https://teknikelektronika.com/pengertian-mikroprosesor-microprocessor-cara-kerja-
mikroprosesor-adalah/
II.III Rangkuman

Pengertian Mikroprosesor (Microprocessor) dan Cara Kerja Mikroprosesor –


Mikroprosesor adalah sebuah Chip IC atau Sirkuit Terintegrasi yang menggabungkan
fungsi inti dari unit pemrosesan pusat (CPU/Central Processing Unit) komputer. Chip IC
yang dalam bahasa Inggris ditulis dengan “Microprocessor” ini merupakan perangkat
multiguna yang dapat diprogram untuk menerima data digital sebagai input,
memprosesnya sesuai dengan instruksi yang tersimpan dalam memorinya dan
memberikan hasil sebagai output.

Mikroprosesor berisi logika kombinasional dan logika digital sekuensial yang beroperasi
pada angka dan simbol yang diwakili dalam sistem angka biner. Dalam sebuah IC
Mikroprosesor, terdapat ALU (unit aritmatika dan logika), unit kontrol, register, sistem
bus dan jam (clock) untuk melakukan tugas komputasi. Microprocessor dapat dikatakan
sebagai otak dari semua komputer, baik komputer tersebut berbentuk laptop, desktop
maupun server.

Cara Kerja Mikroprosesor

Dari Diagram Blok Mikroprosesor diatas terlihat bahwa sebuah Mikroprosesor pada
dasarnya terdiri dari 3 bagian utama yaitu Arithmetic Logical Unit (ALU), Register Array
dan Unit Pengendali yang terhubung dengan bagian INPUT (Keyboard, sensor) dan
bagian OUTPUT (Layar Monitor, printer, motor) serta bagian unit Memori.
Mikroprosesor menjalankan sebuah perintah atau instruksi berdasarkan urutan berikut ini
yaitu Fetch (penjemputan atau pengambilan perintah dan data yang diperlukan), Decode
(Pembacaan sandi) dan Execute (Menjalankan Perintah atau Mengeksekusi Perintah).

Sebuah Instruksi atau perintah pada awalnya disimpan di unit Memori secara berurutan
(sequential order). Mikroprosesor menjemput atau mengambil instruksi-instruksi tersebut
dari memori, kemudian menerjemahkannya dan mengeksekusi Instruksi-instruksi
tersebut hingga mendapatkan instruksi STOP atau berhenti. Hasil esksekusinya kemudian
dikirimkan dalam Biner ke port OUTPUT. Di antara proses-proses ini, terdapat Register
Array yang berfungsi untuk menyimpan data sementara sedangkan ALU dalam
Mikroprosesor digunakan untuk melakukan fungsi-fungsi komputasi.
BAB III
Metode Praktikum
III.I Langkah Percobaan
1. Nyalakan komputer, kemudian Buka aplikasi dan jalankan Aplikasi
emulator 8086
2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator
3. Kemudian screen shoot hasil program
4. Hasil screen shoot pada Program 1 - 3 dimasukkan dalam laporan praktikum
5. Kerjakan tugas akhir berdasarkan materi yang diberikan. Tambahkan keterangan
pada perintah-perintah yang diberikan pada mikroprosesor. Kerjakan masing-
masing.
6. Hasil tugas akhir discreen shot dan dilampirkan pada laporan praktikum.
BAB IV
Hasil dan Analisa
IV.I Hasil Pengujian
Program 1

Program 2

Program 3
IV.II Analisa Pembahasan
Pada praktikum Mikroprosesor modul 1 berjudul “Pengantar Mikroprosesor dan
Bahasa pemrograman Assembly (Interupsi dan Input/Output). Tujuan dari modul ini agar
praktikan mampu memahami dan menjelaskan cara kerja mikroprosesor dan menggunakan
bahasa pemrograman Assembly untuk memprogram mikroprosesor. Agar praktikan
mampu memahami fungsi dari interupsi pada mikroprosesor. Dan supaya praktikan dapat
memahami cara meminta masukan dari keyboard dan menampilkan pada layar. Alat yang
digunakanan pada praktikum adalah komputer yang digunakan untuk tempat menginstall
dan menjalankan aplikasi Emu8086. Dan aplikasi Emu8086 untuk merancang dan
menjalankan program.

Mikroprosesor adalah sebuah komponen rangkaian elektronik terpadu yang terdiri


dari rangkaian aritmatik, logik dan kontrol yang diperlukan untuk menjalankan fungsi-
fungsi sebuah CPU(Central Processing Unit)dari sebuah komputer digital. Rangkaian
elektronika terpadu tersebut dapat diterjemahkan dan menjalankan intruksi dari sebuah
program serta menangani operasi aritmatik. Mikroprosesor dikembangkan pada akhir 1970
sebagai hasil dari teknologi LSI (Large Scale Integration), suatu rangkaian elektronik
terpadu yang memungkinkan menggabungkan ribuan transistor, dioda, dan resistor pada
sebuah chip silikon sebesar 5mm persegi.

CPU adalah perangkat keras komputer yang memiliki tugas untuk menerima dan
melaksanakan perintah dan data dari perangkat lunak. Fungsi dari CPU adalah melakukan
operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi
yang diberikan melalui beberapa perangkat keras. Banyak sekali tipe dari mikroprosesor,
tetapi pada umumnya isi di dalam mikroprosesor adalah sama. Salah satu chip
mikroprosesor yang dikembangkan oleh perusahaan Intel pada tahun 1970-an adalah
mikroprosesoor tipe 8085 dan seri selanjutnya yaitu 8086. Perbedaan signifikan pada 8085
dan 8086 yaitu mikroprosesor 8085 merupakan tipe 8-bit sedangkan 8086 merupakan tipe
16-bit mikroprosesor. Pada praktikum akan digunakan mikroprosesor tipe 8086.

Isi mikro prosesor 8086 dibagi menjadi dua berdasarkan fungsinya, yaitu EU
(execution Unit) dan BIU (Bus Interface Unit). EU memberikan instruksi pada biu untuk
memulai dari mana data yang ingin di eksekusi diambil lalu diterjemahkan menjadi bahasa
mesin sebelum diexsekusi. Fungsinya adalah untuk mengontrol penggunaan data dan
intruksi pada dekoder dan ALU. Excecution unit tidak terhubung langsung dengan sistem
bus, tetapi dia memproses data melalui Bus Interance Unit seperti yang terlihat pada
gambar. BIU mengurus semua transfer data dan alamat antar Bus untuk EU seperti
pengiriman alamat, pengambilan intruksi dari memori, membaca dan menulis data ke port
maupun memori.

Bahasa rakitan atau lebih dikenal sebagai bahasa Assembly adalah bahasa
pemrograman tingkat rendah yang dipakai untuk memprogram perangkat keras seperti
mikroprosesor dan mikrokontroler. Bahasa yang digunakan adalah bahasa pemrograman
yang berisi intruksi-intruksi yang diterjemahkan oleh decoder menjadi bahasa mesin yang
dimengerti oleh komputer. Interupsi adalah suatu permintaan khusus kepada mikroprosesor
untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan
terlebih dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang
menginterupsi. Pengertian dari input dan output pada mikroprosesor sama dengan
perangkat elektronik lainnya, yaitu input adalah masukan yang didapatkan oleh
mikroprosesor guna mengolah data yang dimasukkan sedangkan output adalah hasil olahan
data atau perintah yang diberikan dari mikroprosesor kepada lingkungannya.

Pada modul 1 terdapat 3 contoh program, yaitu percobaan pertama adalah untuk
mencetak huruf “A” kelayar, program 2 adalah untuk mencetak karakter beserta atribut,
dan pada program 3 yaitu program untuk meminta memasukkan dan menampilkan
masukan.

Pada program pertama untuk mecetak huruf A ke layar. Pada program terdapat
header yang berisikan “MODEL SMALL” yang berfungsi untuk menyimpan kurang dari
64KB atau 1 segment, .CODE berfungsi untuk menjalankan fungsi, ORG100h berfungsi
menyatakan program akan dijalankan pada memory ke 100. Dibawah header terdapat
bagian proses, yang berisikan fungsi “MOV AH,02h adalah nilai servis untuk mencetak
karakter, MOV DL,’A’ adalah karakter ASCII yang akan dicetak, pada fungsi ini yang
akan dicetak adalah hutuf A. dan huruf A dapat diganti dengan ‘041h’ yang mana 041
merupakan karakter yang dapat dilihat pada kode ASCII. Selanjutnya ada fungsi INT 21h
yang berfungsi untuk mencetak karakter dan menampilkan pada running. Dan fungsi INT
20h berfungsi untuk mengakhiri program. Dan END proses berarti program telah selesai.
Pada percobaan 2 yaitu untuk mencetak karakter berserta atribut. Pada program
terdapat header yang berisikan “MODEL SMALL” yang berfungsi untuk menyimpan
kurang dari 64KB atau 1 segment, .CODE berfungsi untuk menjalankan fungsi, ORG100h
berfungsi menyatakan program akan dijalankan pada memory ke 100. Dibawah header
terdapat bagian proses , yang berisikan fungsi-fungsi, yaitu MOV AH,09h adalah nilai
servis untuk mencetak karakter. MOV AL,’A’ berfungsi sebagai tempat katakter yang akan
dicetak, pada kassus ini karakter yang akan dicetak adalah ‘A’. MOV BH,00h berfngsi
untuk memberikan nomer halaman pada layar. MOV BL, 93h berfungsi untuk memberi
atribut pada karakter, dimana 9 berfungsi memberi warna pada background, sedangkan 3
memberi warna pada huruf. MOV CX, 03h berfungsi sebagai pengatur banyaknya karakter
yang akan dicetak. Fungsi INT 10h berfungsi untuk menjalankan atau melaksanakan
proses. Dan INT 20h berfungsi untuk mengakhiri program. END proses berarti program
telah selesai.

Pada program 3 meminta masukan dan menampilkan masukan. Pada program terdapat
header yang berisikan “MODEL SMALL” yang berfungsi untuk menyimpan kurang dari
64KB atau 1 segment, .CODE berfungsi untuk menjalankan fungsi, ORG100h berfungsi
menyatakan program akan dijalankan pada memory ke 100. DB berfungsi membawa
inputan yang diinginkan sampai string atau tanda ‘$’. 10,13 berarti tanda new line.
Kemudian dibawah header terdapat start yang berisi fungsi MOV DX yang berfungsi
meminta alamat variable. MOV AH adalah nilai servis untuk mencetak katakter. INT21H
berfungsi untuk mencetak data pada alamat dx. MOV BL,AL berfungsi untuk menyimpan
isi AL ke BL. Dan INT 20 berfungsi untuk mengakhiri program.
IV.III Tugas Akhir

.MODEL SMALL
ORG 100H
.DATA

MSG1 DB "cahyo utomo",10,13, '$'


MSG2 DB "201811032", '$'
.CODE
START:

MOV AH,09H
MOV BL,04H
MOV CX,11D
MOV DX,OFFSET MSG1
INT 10H
INT 21H

MOV AH,09H
MOV BL,04H
MOV CX,9d
MOV DX,OFFSET MSG2
INT 10H
INT 21H

INT 20H
END STAR
BAB V
Penutup
V.I Kesimpulan
1. Mikroprosesor menjemput atau mengambil instruksi-instruksi tersebut dari memori,
kemudian menerjemahkannya dan mengeksekusi Instruksi-instruksi tersebut hingga
mendapatkan instruksi STOP atau berhenti.
2. Fungsi interupsi yaitu mekanisme penghentian atau pengalihan pengolahan intruksi
dalam CPU kepada routine interupsi dengan tujuan secara umum yaitu untuk
manajemen pengeksekusian routine intruksi agar efektif dan efisien antar CPU dan
modul – modul I/O maupun memori.
3. Cara meminta masukan dari keyboard adalah dengan menggunakan fungsi mov
ah,01h. dan untuk menampilkan pada layar yaitu dengan menggunakan fungsi INT
21h.
V.II Saran
Pada saat praktikum menurut saya sudah sangat baik, untuk penyampaian materi jelas dan
tidak tegang, jadi lebih mudah untuk menerima materi dan menyenangkan. Untuk
kedepannya cukup dipertahankan .
Daftar Pustaka

https://teknikelektronika.com/pengertian-mikroprosesor-microprocessor-cara-kerja-
mikroprosesor-adalah/
PRAKTIKUM II
Operasi Aritmatika pada Mikroprosesor
Andhika Fitra Ramadhan (201811031); Cahyo Utomo (201811043);
Mulia Djuang (201811034); Eki Nur Afifah (201811043) S1 Teknik
Elektro, Institut Teknologi – PLN
cahyoutomo3@gmail.com

BAB I
Pendahuluan
I.I Tujuan
1. Mampu menjelaskan jenis-jenis bilangan : Biner, Oktal ,Desimal, Hexadesimal.
2. Memahami perintah dan proses operasi aritmatika pada mikroprosesor
3. Dapat melakukan operasi penjumlahan, pengurangan, perkalian dan pembagian
I.II Alat dan Bahan
1. Komputer
2. Aplikasi Emu8086
BAB II
Landasan Teori
II.I Teori Modul
2.1.1 Berbagai Jenis Bilangan

Didalam pemrograman dengan bahasa assembler, bisa digunakan


berbagai jenis bilangan berdasarkan basisnya. Jenis bilangan yang bisa
digunakan, yaitu: Bilangan biner(basis 2), octal (basis 8) desimal (basis 10)
dan hexadesimal (basis 16). Pemahaman terhadap jenis-jenis bilangan ini
adalah penting, karena akan sangat membantu kita dalam pemrograman yang
sesungguhnya. Penulisan penanda basis pada sebuah bilangan ditandai
dengan angka dipojok kanan bawah suatu bilangan, misalkan 10 adalah
biner maka diulis 102, jika 10 adalah decimal ditulis 1010 dan heksadesimal
1016. Tetapi untuk mendefisikan jenis bilangan pada Bahasa Assembly,
bilangan tersebut diakhiri dengan huruf B(Biner), O(Oktal), D(Desimal) dan
H(Hexadesimal).
Contoh MOV AX, 01010H. 0101 pada perintah tersebut merupakan
bilangan Hexadesimal
2.1.2 Bilangan Biner
Sebenarnya semua bilangan, data maupun program itu sendiri akan
diterjemahkan oleh komputer ke dalam bentuk biner. Jadi pendefinisisan
data dengan jenis bilangan apapun (Desimal, dan hexadesimal) akan selalu
diterjemahkan oleh komputer ke dalam bentuk biner. Bilangan biner adalah
bilangan yang hanya terdiri atas 2 kemungkinan (Berbasis dua), yaitu 0 dan
1. Karena berbasis 2, maka pengkorversian ke dalam bentuk desimal adalah
menjumlahkan tiap suku yang tiap suku ke-n (n=0 dari paling kanan)
dikalikan dengan 2n.
Contohnya: bilangan biner 01112 = (0 x 23) + (1 x 22) + (1 x 21) + (1 x 20)
= 710

2.1.3 Bilangan Oktal


Bilangan oktal adalah bilangan dengan basis 8, artinya angka yang
dipakai hanyalah antara 0 -7. Sama halnya dengan jenis bilangan yang lain,
suatu bilangan oktal dapat dikonversikan dalam bentuk desimal dengan
menjumlahkan tiap suku yang tiap suku ke- n (n=0 dari paling kanan)
dikalikan dengan 8n.
Contohnya bilangan 128 = (1 x 81) + (2 x 80) = 1010.
2.1.4 Bilangan Desimal
Tentunya jenis bilangan ini sudah tidak asing lagi bagi kita semua. Bilangan
Desimal adalah jenis bilangan yang paling banyak dipakai dalam kehidupan sehari-hari,
sehingga kebanyakan orang sudah akrab dengannya. Bilangan desimal adalah bilangan
yang terdiri atas 10 buah angka(Berbasis 10), yaitu angka 0-9. Dengan basis sepuluh ini
maka suatu angka dapat dijabarkan dengan perpangkatan sepuluh.
Misalkan pada angka 12310 = (1 X 102) + (2 X 101) + (3 X 100).

2.1.5 Bilangan Hexadesimal


Bilangan hexadesimal merupakan bilangan yang berbasis 16. Dengan angka yang
digunakan berupa: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Dalam pemrograman assembler,
jenis bilangan ini boleh dikatakan yang paling banyak digunakan. Hal ini dikarenakan
mudahnya pengkonversian bilangan ini dengan bilangan yang lain, terutama dengan
bilangan biner dan desimal. Karena berbasis 16, maka 1 angka pada hexadesimal akan
menggunakan 4 bit.
Contoh : A16 = 1010 = 128 = 10102

2.2 Operasi Penambahan


2.2.1 ADD
Untuk menambah dalam bahasa assembler digunakan perintah ADD dan ADC serta INC.
Perintah ADD digunakan dengan syntax :
ADD Tujuan,Asal
Perintah ADD ini akan menambahkan nilai pada Tujuan dan Asal. Hasil yang
didapat akan ditaruh pada Tujuan, dalam bahasa pascal sama dengan instruksi Tujuan:=Tujuan
+ Asal. Sebagai contohnya :
MOV AH,15h ; AH:=15h
MOV AL,4 ; AL:=4
ADD AH,AL ; AH:=AH+AL, jadi AH=19h
Perlu anda perhatikan bahwa pada perintah ADD ini antara Tujuan dan Asal harus
mempunyai daya tampung yang sama, misalnya register AH(8 bit) dan AL(8 bit), AX(16
bit) dan BX(16 bit). Mungkin ada yang bertanya-tanya, apa yang akan terjadi bila Tujuan
tempat hasil penjumlahan disimpan tidak mencukupi seperti pertambahan 1234h dengan
F221h.
1234 h Biner --> 0001 0010 0011 0100
F221 h Biner --> 1111 0010 0010 0001
---------- + --------------------- +
10455 h 1 0000 0100 0101 0101

Pada pertambahan diatas dapat dilihat bahwa pertambahan bilangan 1234 dengan
F221 akan menghasilkan nilai 10455. Supaya lebih jelas dapat anda lihat pada
pertambahan binernya dihasilkan bit ke 17, padahal register terdiri atas 16 bit saja.
Operasi pertambahan yang demikian akan menjadikan carry flag menjadi satu, Contoh :

MOV AX,1234h ; NIlai AX:=1234h dan carry=0


MOV BX,0F221h ; Nilai BX:=F221h dan carry=0
ADD AX,BX ; Nilai AX menjadi 0455h dan carry=1
2.2.2 ADC
Perintah ADC digunakan dengan cara yang sama pada perintah ADD, yaitu :

ADC Tujuan,Asal

Perbedaannya pada perintah ADC ini Tujuan tempat menampung hasil


pertambahan Tujuan dan Asal ditambah lagi dengan carry flag
(Tujuan:=Tujuan+Asal+Carry). Pertambahan yang demikian bisa memecahkan masalah
seperti yang pernah kita kemukakan, seperti pertambahan pada bilangan
12345678h+9ABCDEF0h.
Seperti yang telah kita ketahui bahwa satu register hanya mampu menampung 16
bit, maka untuk pertambahan seperti yang diatas bisa anda gunakan perintah ADC untuk
memecahkannya, Contoh:
MOV AX,1234h ; AX = 1234h CF = 0
MOV BX,9ABCh ; BX = 9ABCh CF = 0
MOV CX,5678h ; BX = 5678h CF = 0
MOV DX,0DEF0h ; DX = DEF0h CF = 0
ADD CX,DX ; CX = 3568h CF = 1
ADC AX,BX ; AX = AX+BX+CF = ACF1

Hasil penjumlahan akan ditampung pada register AX:CX yaitu ACF13568h.


Adapun flagflag yang terpengaruh oleh perintah ADD dan ADC ini adalah
CF,PF,AF,ZF,SF dan OF.

2.2.3 INC
Perintah INC(Increment) digunakan khusus untuk pertambahan dengan 1. Perintah
INC hanya menggunakan 1 byte memory, sedangkan perintah ADD dan ADC
menggunakan 3 byte. Oleh sebab itu bila anda ingin melakukan operasi pertambahan
dengan 1 gunakanlah perintah INC. Syntax pemakainya adalah :
INC Tujuan
Nilai pada tujuan akan ditambah dengan 1, seperti perintah Tujuan:=Tujuan+1
dalam Turbo Pascal. Tujuan disini dapat berupa suatu register maupun memory. Contoh
: perintah INC AL akan menambah nilai di register AL dengan 1. Adapun flag yang
terpengaruh oleh perintah ini adalah OF,SF,ZF,AF dan PF.

2.2.4 Contoh Program 1 Penambahan


.MODEL SMALL
.CODE
ORG
100h
Proses :
MOV AH,15h ; AH:=15h
MOV AL,4h ; AL:=4
ADD AH,AL ; AH:=AH+AL, jadi AH=19h
MOV AX,1234h ; NIlai AX:=1234h dan carry=0
MOV BX,0F221h ; Nilai BX:=F221h dan carry=0
ADD AX,BX ; AX:=AX+BX, jadi nilai AX=0455h dan carry = 1
MOV AX,1234h ; AX = 1234h CF = 1
MOV BX,9ABCh ; BX = 9ABCh CF = 1
MOV CX,5678h ; BX = 5678h CF =
1 MOV DX,0DEF0h ; DX = DEF0h CF =
1 ADD CX,DX ; CX = 3568h CF =
1
ADC AX,BX ; AX = AX+BX+CF = ACF1 dan carry =
0 INC AL ; AL:=AL+1, nilai pada AL ditambah 1
INT 20h
END Proses

2.3 Operasi Pengurangan


2.3.1 SUB
Untuk Operasi pengurangan dapat digunakan perintah SUB dengan syntax:
SUB Tujuan,Asal.
Perintah SUB akan mengurangkan nilai pada Tujuan dengan Asal. Hasil yang
didapat akan ditaruh pada Tujuan, dalam bahasa pascal sama dengan instruksi
Tujuan:=Tujuan-Asal. Contoh :
MOV AX,15h ; AX:=15h
MOV BX,12h ; BX:=12h
SUB AX,BX ; AX:= 15h-12h= 3h
SUB AX,AX ; AX=0
Untuk menolkan suatu register bisa anda kurangkan dengan dirinya sendiri seperti SUB
AX,AX.

2.3.2 SBB
Seperti pada operasi penambahan, maka pada operasi pengurangan dengan bilangan
yang besar(lebih dari 16 bit), bisa anda gunakan perintah SUB disertai dengan
SBB(Substract With Carry). Perintah SBB digunakan dengan syntax:
SBB Tujuan,Asal
Perintah SBB akan mengurangkan nilai Tujuan dengan Asal dengan cara yang sama
seperti perintah SUB, kemudian hasil yang didapat dikurangi lagi dengan Carry Flag
(Tujuan:=TujuanAsal-CF).
2.3.3 DEC
Perintah DEC(Decrement) digunakan khusus untuk pengurangan dengan 1. Perintah DEC
hanya menggunakan 1 byte memory, sedangkan perintah SUB dan SBB menggunakan 3
byte. Oleh sebab itu bila anda ingin melakukan operasi pengurangan dengan 1 gunakanlah
perintah DEC. Syntax pemakaian perintah dec ini adalah:
DEC Tujuan
Nilai pada tujuan akan dikurangi 1, seperti perintah Tujuan:=Tujuan-1 dalam Turbo
Pascal. Tujuan disini dapat berupa suatu register maupun memory. Contoh : perintah DEC
AL akan mengurangi nilai di register AL dengan 1. 3.3.4. Contoh Program 2 Pengurangan
.MODEL SMALL
.CODE
ORG 100h
Proses :
MOV AH,15h ; AH:=15h
MOV AL,4h ; AL:=4
SUB AH,AL ; AH:=AH-AL, jadi AH=11h
MOV AX,1234h ; NIlai AX:=1234h dan carry=0
MOV BX,0F221h ; Nilai BX:=F221h dan carry=0
SUB AX,BX ; AX:=AX-BX, jadi nilai AX=2013h dan carry = 1
MOV AX,1234h ; AX = 1234h CF = 1
MOV BX,0001h ; BX = 0001h CF = 1
MOV CX,5678h ; BX = 5678h CF = 1
MOV DX,5679h ; DX = 5679h CF = 1
SUB CX,DX ; CX = FFFFh CF = 1
SBB AX,BX ; AX = AX-BX-CF = 1232 dan carry = 0
DEC AL ; AL:=AL-1, nilai pada AL dikurang 1
INT 20h
END Proses

2.4 Operasi Perkalian


Untuk perkalian bisa digunakan perintah MUL dengan syntax:
MUL SUMBER
Sumber disini dapat berupa suatu register 8 bit (mis:BL,BH,..), register 16 bit (mis:
BX,DX,..) atau suatu varibel. Ada dua kemungkinan yang akan terjadi pada perintah
MUL ini sesuai dengan jenis perkalian 8 bit atau 16 bit. Bila Sumber merupakan 8 bit
seperti MUL BH, maka komputer akan mengambil nilai yang terdapat pada BH dan nilai
pada AL untuk dikalikan. Hasil yang didapat akan selalu disimpan pada register AX. Bila
sumber merupakan 16 bit seperti MUL BX maka komputer akan mengambil nilai yang
terdapat pada BX dan nilai pada AX untuk dikalikan. Hasil yang didapat akan disimpan
pada register DX dan AX (DX:AX), jadi register DX menyimpan Word tingginya dan
AX menyimpan Word rendahnya. Contohnya :
MOV AL,50H
MOV BL,0FFH
MUL BL
AX = AFB0H

2.4.1 Contoh Program 3 Perkalian


.MODEL SMALL
.CODE
ORG
100H TDATA :

JMP PROSES ; Lompat ke Proses


A DW 01EFH ; Define word
B DW 02EFH ; Define word
HSLLO DW ? ; Membuat variable bebas
HSLHI DW ; Membuat variable bebas
?
PROSES:
MOV AX,A ; AX = 1EFH = 495D
MUL B ; Kalikan 1EFH*2EFH = 495D*751D = 371745D = 0005AC21H
MOV HSLLO,AX ; AX bernilai AC21 sehingga HSLLO=AC21
MOV HSLHI,DX ; DX bernilai 0005 sehingga HSLHI=000A
INT 20H ; Kembali ke DOS
END TDATA
2.5 Pembagian
Operasi pada pembagian pada dasarnya sama dengan perkalian. Untuk
operasi pembagian digunakan perintah DIV dengan syntax:
DIV Sumber/Data
Bila sumber merupakan operand 8 bit seperti DIV BH, maka komputer akan
mengambil nilai pada register AX dan membaginya dengan nilai BH. Hasil
pembagian 8 bit ini akan disimpan pada register AL dan sisa dari pembagian
akan disimpan pada register AH. Bila sumber merupakan operand 16 bit
seperti DIV BX, maka komputer akan mengambil nilai yang terdapat pada
register DX:AX dan membaginya dengan nilai BX. Hasil pembagian 16 bit
ini akan disimpan pada register AX dan sisa dari pembagian akan disimpan
pada register DX.
2.5.1 Contoh Program 4 Pembagian
.MODEL SMALLS
.CODE
ORG 100h
TData :
JMP Proses ; Lompat ke Proses
A DW 01EFh
B DW 2 Hsl DW ?
Sisa DW ?
Proses:
SUB DX,DX ;
Jadikan DX=0 MOV
AX,A ; AX = 1EFH =
495D DIV B ; Bagi
1EFH:2H
MOV Hsl,AX ; AX bernilai 00F7H = 247D sehingga
Hsl=00F7 MOV Sisa,DX ; DX berisi 0001 sehingga
Sisa=0001
INT 20h ; Kembali ke DOS
END Tdata
II.II Teori Penunjang
Operasi Aritmatika merupakan penjumlahan dan juga pengurangan, sementara
perkalian dan pembagian merupakan operasi selanjutnya yang dikembangkan dari kedua
operasi dasar tersebut.

Berikut akan kami berikan materi mengenai operasi Aritmatika Bilangan Biner, Oktal,
serta Heksadesimal.

1. Operasi Aritmatika Bilangan Biner

Aritmatika Bilangan Binner merupakan beberapa operasi perhitungan yang terjadi dalam
bilangan biner.

Terdapat 5 operasi aritmatika pada bilangan biner, antara lain:

1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
5. Bilangan Biner Bertanda

A. Penjumlahan Bilangan Biner

Dalam bilangan biner terdapat dua aturan dasar, antara lain:

0+0=0
1+0=1
0+1=1
1 + 1 = 1, simpan 1

Sebagai cara penjumlahan bilangan desimal yang kalian kenal sehari-hari, penjumlahan
bilangan biner juga harus selalu memperhatikan carry (sisa) dari hasil penjumlahan pada
tempat yang lebih rendah.

Sebagai contoh:

Soal 1.
1111 2
10100 2
_______+
100011 2 Carry of 1 (3 kali)

Soal 2.

Dalam contoh diatas, telah dilakukan penjumlahan 8 bit tanpa carry, sehingga hasil
penjumlahnya masih berupa 8 bit data. Untuk contoh berikutnya akan dilakukan
penjumlahan 8 bityang menghasilkan carry.

Soal 3.
Hasil penjumlahan diatas menjadi 9 bit data, sehingga untuk 8 bit data, hasil
penjumlahannya bukan merupakan jumlah 8 bit data A dan B tetapi bit yang e-8 (dihitung
mulai dari 0) atau yang disebut carry juga harus diperhatikan sebagai hasil penjumlahan.

B. Pengurangan Bilangan Biner

Pada bilangan biner terdapat dua cara dalam pengurangan yakni dengan 1s complement
dan 2s complement, Perbedaan diantara keduanya antara lain:

• 1s complement
merupakan sebuah cara untuk membalikkan bilangan negatif menjadi positif
(sebab sebenarnya dalam bahasa komputer tidak kenal operasi pengurangan).
Sehingga operasi pengurangan ini akan menjadi penjumlahan.
1s complement dari sebuah bilangan dilakukan dengan mengubah 0 menjadi 1
dan 1 menjadi 0. Sebagai

contoh:
• 2s complement kurang lebih mempunyai fungsi yang sama dengan
1s complement yakin membuat sebuah bilangan negatif menjadi positif. Tetapi
cara 2s complement sedikit ada perbedaan yakni 1s complement yang
ditambah dengan 1. Sebagai
contoh: Lalu

Sehingga 2s complement dari 10001 yaitu 01111 dan 1s complement-nya yaitu


01110.

C. Perkalian Bilangan Biner

Dilakukan sama dengan cara perkalian yang terdapat dalam operasi bilangan desimal.
Dasar perkalian pada bilangan biner ialah sebagai berikut:

0x0=0
1x0=0
0x1=0
1x1=1

Sebagai contoh:

Soal 1.

1110 2
1100 2 x
0000
0000
1110
1110 +
10101000 2

D. Pembagian Bilangan Biner

Pembagian biner dilaksanakan dengan menggunakan cara yang sama dengan yang ada
pada bilangan desimal. Pembagian biner 0 tidak memiliki arti, sehingga dasar pembagian
pada bilangan biner adalah sebagai berikut:

0:1=0
1:1=1

Contoh #1:

101 / 1111101 \ 11001


101 _
101
101 _
0101
101 _
0

https://www.yuksinau.id/operasi-aritmatika/
II.III Rangkuman

Jenis Bilangan

Didalam pemrograman dengan bahasa assembler, bisa digunakan berbagai jenis bilangan
berdasarkan basisnya. Jenis bilangan yang bisa digunakan, yaitu: Bilangan biner(basis 2),
octal (basis 8) desimal (basis 10) dan hexadesimal (basis 16). Pemahaman terhadap jenis-
jenis bilangan ini adalah penting, karena akan sangat membantu kita dalam pemrograman
yang sesungguhnya. Penulisan penanda basis pada sebuah bilangan ditandai dengan
angka dipojok kanan bawah suatu bilangan, misalkan 10 adalah biner maka diulis 102,
jika 10 adalah decimal ditulis 1010 dan heksadesimal 1016. Tetapi untuk mendefisikan
jenis bilangan pada Bahasa Assembly, bilangan tersebut diakhiri dengan huruf B(Biner),
O(Oktal), D(Desimal) dan H(Hexadesimal).

Operasi Aritmatika Bilangan Biner

Aritmatika Bilangan Binner merupakan beberapa operasi perhitungan yang terjadi dalam
bilangan biner.

Terdapat 5 operasi aritmatika pada bilangan biner, antara lain:

1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
5. Bilangan Biner Bertanda
BAB III
Metode Praktikum
III.I Langkah Percobaan
1. Nyalakan komputer, kemudian Buka aplikasi dan jalankan Aplikasi
emulator 8086
2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator
3. Kemudian screen shoot hasil program
4. Hasil screen shoot pada Program dimasukkan dalam laporan praktikum
5. Kerjakan tugas akhir berdasarkan materi yang diberikan. Tambahkan keterangan
pada perintah-perintah yang diberikan pada mikroprosesor. Kerjakan masing-
masing.
6. Hasil tugas akhir discreen shot dan dilampirkan pada laporan praktikum.
BAB IV
Hasil dan Analisa
IV.I Hasil Pengujian
Program penjumlahan

Program pengurangan

Program perkalian
Program pembagian
IV.II Analisa Pembahasan
Pada praktikum Mikroprosesor modul 2 berjudul “Operasi Aritmatika pada
Mikroprosesor. Tujuan dari modul ini agar praktikan mampu menjelaskan jenis jenis
bilangan biner, bilangan oktal, bilangan desimal, bilangan hexadesimal. Agar praktikan
dapat memahami perintah dan proses operasi aritmatika pada mikroprosesor. Dan supaya
praktikan dapat melakukan operasi penjumlahan, pengurangan, perkalian, dan pembagian.
Alat yang digunakanan pada praktikum adalah komputer yang digunakan untuk tempat
menginstall dan menjalankan aplikasi Emu8086. Dan aplikasi Emu8086 untuk merancang
dan menjalankan program.

Mikroprosesor adalah sebuah komponen rangkaian elektronik terpadu yang terdiri


dari rangkaian aritmatik, logik dan kontrol yang diperlukan untuk menjalankan fungsi-
fungsi sebuah CPU(Central Processing Unit)dari sebuah komputer digital. Rangkaian
elektronika terpadu tersebut dapat diterjemahkan dan menjalankan intruksi dari sebuah
program serta menangani operasi aritmatik. Mikroprosesor dikembangkan pada akhir 1970
sebagai hasil dari teknologi LSI (Large Scale Integration), suatu rangkaian elektronik
terpadu yang memungkinkan menggabungkan ribuan transistor, dioda, dan resistor pada
sebuah chip silikon sebesar 5mm persegi.

CPU adalah perangkat keras komputer yang memiliki tugas untuk menerima dan
melaksanakan perintah dan data dari perangkat lunak. Fungsi dari CPU adalah melakukan
operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi
yang diberikan melalui beberapa perangkat keras. Banyak sekali tipe dari mikroprosesor,
tetapi pada umumnya isi di dalam mikroprosesor adalah sama. Salah satu chip
mikroprosesor yang dikembangkan oleh perusahaan Intel pada tahun 1970-an adalah
mikroprosesoor tipe 8085 dan seri selanjutnya yaitu 8086. Perbedaan signifikan pada 8085
dan 8086 yaitu mikroprosesor 8085 merupakan tipe 8-bit sedangkan 8086 merupakan tipe
16-bit mikroprosesor. Pada praktikum akan digunakan mikroprosesor tipe 8086.

Isi mikro prosesor 8086 dibagi menjadi dua berdasarkan fungsinya, yaitu EU
(execution Unit) dan BIU (Bus Interface Unit). EU memberikan instruksi pada biu untuk
memulai dari mana data yang ingin di eksekusi diambil lalu diterjemahkan menjadi bahasa
mesin sebelum diexsekusi. Fungsinya adalah untuk mengontrol penggunaan data dan
intruksi pada dekoder dan ALU. Excecution unit tidak terhubung langsung dengan sistem
bus, tetapi dia memproses data melalui Bus Interance Unit seperti yang terlihat pada
gambar. BIU mengurus semua transfer data dan alamat antar Bus untuk EU seperti
pengiriman alamat, pengambilan intruksi dari memori, membaca dan menulis data ke port
maupun memori.

Bahasa rakitan atau lebih dikenal sebagai bahasa Assembly adalah bahasa
pemrograman tingkat rendah yang dipakai untuk memprogram perangkat keras seperti
mikroprosesor dan mikrokontroler. Bahasa yang digunakan adalah bahasa pemrograman
yang berisi intruksi-intruksi yang diterjemahkan oleh decoder menjadi bahasa mesin yang
dimengerti oleh komputer. Interupsi adalah suatu permintaan khusus kepada mikroprosesor
untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan
terlebih dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang
menginterupsi. Pengertian dari input dan output pada mikroprosesor sama dengan
perangkat elektronik lainnya, yaitu input adalah masukan yang didapatkan oleh
mikroprosesor guna mengolah data yang dimasukkan sedangkan output adalah hasil olahan
data atau perintah yang diberikan dari mikroprosesor kepada lingkungannya.

Didalam pemrograman dengan bahasa assembler, bisa digunakan berbagai jenis


bilangan berdasarkan basisnya. Jenis bilangan yang bisa digunakan, yaitu: Bilangan
biner(basis 2), octal (basis 8) desimal (basis 10) dan hexadesimal (basis 16). Pemahaman
terhadap jenis-jenis bilangan ini adalah penting, karena akan sangat membantu kita dalam
pemrograman yang sesungguhnya. Penulisan penanda basis pada sebuah bilangan ditandai
dengan angka dipojok kanan bawah suatu bilangan, misalkan 10 adalah biner maka diulis
102, jika 10 adalah decimal ditulis 1010 dan heksadesimal 1016. Tetapi untuk
mendefisikan jenis bilangan pada Bahasa Assembly, bilangan tersebut diakhiri dengan
huruf B(Biner), O(Oktal), D(Desimal) dan H(Hexadesimal).

Sebenarnya semua bilangan, data maupun program itu sendiri akan diterjemahkan
oleh komputer ke dalam bentuk biner. Jadi pendefinisisan data dengan jenis bilangan
apapun (Desimal, dan hexadesimal) akan selalu diterjemahkan oleh komputer ke dalam
bentuk biner. Bilangan biner adalah bilangan yang hanya terdiri atas 2 kemungkinan
(Berbasis dua), yaitu 0 dan 1. Karena berbasis 2, maka pengkorversian ke dalam bentuk
desimal adalah menjumlahkan tiap suku yang tiap suku ke-n (n=0 dari paling kanan)
dikalikan dengan 2n .
Bilangan oktal adalah bilangan dengan basis 8, artinya angka yang dipakai hanyalah
antara 0 -7. Sama halnya dengan jenis bilangan yang lain, suatu bilangan oktal dapat
dikonversikan dalam bentuk desimal dengan menjumlahkan tiap suku yang tiap suku ke-n
(n=0 dari paling kanan) dikalikan dengan 8n . Tentunya jenis bilangan ini sudah tidak asing
lagi bagi kita semua. Bilangan Desimal adalah jenis bilangan yang paling banyak dipakai
dalam kehidupan sehari-hari, sehingga kebanyakan orang sudah akrab dengannya.
Bilangan desimal adalah bilangan yang terdiri atas 10 buah angka(Berbasis 10), yaitu
angka 0-9. Dengan basis sepuluh ini maka suatu angka dapat dijabarkan dengan
perpangkatan sepuluh. Bilangan hexadesimal merupakan bilangan yang berbasis 16.
Dengan angka yang digunakan berupa: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Dalam
pemrograman assembler, jenis bilangan ini boleh dikatakan yang paling banyak digunakan.
Hal ini dikarenakan mudahnya pengkonversian bilangan ini dengan bilangan yang lain,
terutama dengan bilangan biner dan desimal. Karena berbasis 16, maka 1 angka pada
hexadesimal akan menggunakan 4 bit.

Pada modul ini membahas tentang operasi penjumlahan, pengurangan, perkalian,


dan permbagian. Dimana pada program pertama yaitu adalah program penjumlahan
dimana pada program penjulahan ini menggunakan perintah ADD dimanan memasukkan
15h pada register al dan 04h pada register ah, dimana dengan menggunakan perintah ADD
maka ak dan ah akan dijumlahkan dan didapatkan hasil 19. Setelah itu dilakukan operasi
penjumlahan kembali dengan register ax dan bx, maka sama dengan penjumlahan
sebelumnya ax dan bx akan dijumlah kan, akan tetapi pada penjumlahan kali ini muncul
carry dikarenakan hasil dari penjumlahan ini lebih dari 16 bit, dan register tidak cukup
menampung kelebihan bit tersebut. Setelah itu dilakukan penjumlahan lagi dengan
menggunakan perintah ADD, dan yang akan dijumlahkan adalah register cx dan dx, dan
pada penjumlahan ini terdapat carry flag, dari penjumlahan sebelumnya dan akan
ditambahkan pada penjumlahan ini.

Kemudian pada program kedua adalah program pengurangan. Dimana pada operasi
pengurangan dapat digunakan perintah SUB dengan syntax. Perintah SUB akan
mengurangkan nilai pada tujuan dengan asal. Dan hasil yang didapatkan akan ditaruh pada
tujuan. Dimana pada contoh program pengurangan dikenalkan register ah yang bernilai
15h, dan al yang bernilai 4h, dimana selanjutnya diberikan perintah SUB untuk
mengurangkan ah dan al dimana hasil dari pengurangan keduanya adalah 11h. kemudian
pada pengurangan selanjutnya terdapat ax dan bx dan hasil dari pengurangan tersebut
mempunyai carry, dikarenakan register tidak mampu menampung kelebihan bit pada
operasi pengurangan tersebut. Kemudian pada program ketiga adalah ooperasi perkalian.
Dimana pada operasi perkalian ini perintah yang digunakan adalah mul. Pada contoh
program perkalian ini terdapat data dimana ada data A dan data B, dimana masing masing
data memiliki nilai. Dimana pada proses data a dipanggil dengan mov ax. Setelah itu
dipanggil fungsi mul B dimana akan mengurangkan A dan B. kemudian pada operasi
selanjutnya adalah operasi pembagian dimana fungsi yang digunakan adalah DIV. pada
contoh program yang dilakukan terdapat data A dan data B dimana kedua data tersebut
memiliki nilai. Kemudian pada proses diketahui data a dimasukkan dengan mov ax, maka
pada register ax terdapat nilai data A. kemudian DIV B berfungsi untuk membagi nilai dari
data A yang akan dibagi dengan data B.
IV.III Tugas Akhir

PENJUMLAHAN

.MODEL SMALL
.CODE
org 100h
start : JMP input

MSG1 DB 'Masukan Angka Pertama = ','$'


MSG2 DB 13,10,'Masukan angka Kedua = ','$'
MSG3 DB 13,10,'Hasil = ','$'

Input:

;bilangan1
MOV DX,OFFSET MSG1
MOV AH,09h
INT 21h

MOV AH,01h
INT 21H
MOV BL,AL
SUB BL,30h

MOV AH,01h
INT 21h
MOV BH,AL
SUB BH,30h

;bilangan2
MOV DX,OFFSET MSG2
MOV AH,09h
INT 21h

MOV AH,01h
INT 21h
ADD BL,AL
SUB BL,30h

MOV AH,01h
INT 21h
ADD BH,AL
SUB BH,30h

Hasil:
MOV DX,OFFSET MSG3
MOV AH,09h
INT 21h

MOV AH,02h
MOV DL,BL
ADD DL,30h
INT 21h

MOV AH,02h
MOV DL,BH
ADD DL,30h
INT 21h
INT 20h

END
PENGURANGAN

.MODEL SMALL
.CODE
ORG 100h
start :
JMP input

MSG1 DB 'Masukan Angka Pertama = ','$'


MSG2 DB 13,10,'Masukan angka Kedua = ','$'
MSG3 DB 13,10,'Hasil = ','$'

Input:

; ANGKA1
MOV DX,OFFSET MSG1
MOV AH,09h
INT 21h

MOV AH,01h
INT 21H
MOV BL,AL
ADD BL,30h

MOV AH,01h
INT 21h
MOV BH,AL
ADD BH,30h

; ANGKA2
MOV DX,OFFSET MSG2
MOV AH,09h
INT 21h

MOV AH,01h
INT 21h
SUB BL,AL
ADD BL,30h

MOV AH,01h
INT 21h
SUB BH,AL
ADD BH,30h

HASIL:
MOV DX,OFFSET MSG2
MOV AH,09h
INT 21h

MOV AH,02h
MOV DL,BL
SUB DL,30h
INT 21h

MOV AH,02h
MOV DL,BH
SUB DL,30h
INT 21h

INT 20h

END
PERKALIAN

.model small
.stack 100h
.data
msg1 db "Masukan angka pertama : $"
msg2 db 13,10, "Masukan angka kedua : $"
perkalian db 13,10,"Perkaliannya adalah : $"
.code

start:
mov ax, data
mov ds, ax
mov dx, OFFSET msg1
mov ah, 09h
int 21h

ph1:
mov ah, 01h
int 21h
cmp al,0dh
je input1
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp ph1
input1:
push bx
mov dx,OFFSET msg2
mov ah,09h
int 21h
mov bx,0

ph2:
mov ah,01h
int 21h
cmp al,0dh
je mult
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp ph2

mult:
pop ax
mul bx
push ax
mov dx,OFFSET perkalian
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp wrong

wrong:
mov dx, 0
div bx
push dx
mov dx,0
inc cx
or ax,ax
jne wrong

ans:
pop dx
add dl,30h
mov ah,02h
int 21h
loop ans

end start
PEMBAGIAN

.model small
.stack 100h
.data
msg1 db "Masukan angka pertama : $"
msg2 db 13,10, "Masukan angka kedua : $"
pembagian db 13,10, "Pembagiannya adalah : $"
.code

start:
mov ax, data
mov ds, ax
mov dx, OFFSET msg1
mov ah, 09h
int 21h

ph1:
mov ah, 01h
int 21h
cmp al,0dh
je input1
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp ph1
input1:
push bx
mov dx,OFFSET msg2
mov ah,09h
int 21h
mov bx,0

ph2:
mov ah,01h
int 21h
cmp al,0dh
je divd
mov ah,0
sub al,30h
push ax
mov ax,10d
mul bx
pop bx
add bx,ax
jmp ph2

divd:
pop ax
mov dx, 0
div bx
push ax
mov dx,OFFSET pembagian
mov ah,09h
int 21h
pop ax
mov cx,0
mov dx,0
mov bx,10d
jmp wrong

wrong:
mov dx, 0
div bx
push dx
mov dx,0
inc cx
or ax,ax
jne wrong

ans:
pop dx
add dl,30h
mov ah,02h
int 21h
loop ans

end start
BAB V
Penutup
V.I Kesimpulan
1. Bilangan biner adalah bilangan yang hanya terdiri dari 2 kemungkinan yaitu 0 dan 1.
Bilangan oktal adalah bilangan dengan basis 8, angka yang digunakan yaitu 0-7.
Bilangan desimal adalah jenis bilangan yang dipakai di kehidupan sehari hari, yaotu
0-9.
bilangan hexadesimal adalah bilangan yan gberbasis 16, berupa
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
2. Perintah aritmatika pada modul ini terdapat beberapa operasi, yaitu operasi
penjumlahan, pengurangan , perkalian , dan pembagian.
3. Fungsi fungsi yang digunakan pada operasi operasi di modul ini menggunakan SUB,
ADD, MUL, DAN DIV
V.II Saran
Pada saat praktikum menurut saya sudah sangat baik, untuk penyampaian materi jelas dan
tidak tegang, jadi lebih mudah untuk menerima materi dan menyenangkan. Untuk
kedepannya cukup dipertahankan .
Daftar Pustaka

https://www.yuksinau.id/operasi-aritmatika/
PRAKTIKUM III
Operasi Logika dan Manipulasi Bit
Andhika Fitra Ramadhan (201811031); Cahyo Utomo (201811043);
Mulia Djuang (201811034); Eki Nur Afifah (201811043) S1 Teknik
Elektro, Institut Teknologi – PLN
cahyoutomo3@gmail.com

BAB I
Pendahuluan
I.I Tujuan
1. Memahami perintah dan proses operasi logika pada mikroprosesor
2. Dapat melakukan operasi logika NOT, AND, OR dan XOR pada mikroprosesor
3. Memahami perintah dan proses operasi manipulasi bit pada mikroprosesor
4. Dapat melakukan manipulasi bit geser kiri dan geser kanan

I.II Alat dan Bahan


3. Komputer
4. Aplikasi Emu8086
BAB II
Landasan Teori
II.I Teori Modul
Operasi Logika

Gerbang NOT

Operator NOT akan menginvers suatu nilai seperti yang terlihat pada table dibwah
ini.
A NOT A
0 1
1 0
Operasi Not di dalam assembler, digunakan dengan syntax :
NOT (Tujuan/Sumber)
Hasil dari operasi NOT ini akan disimpan pada Tujuan, sebagai contoh, instruksi
NOT AL,3Fh akan menghasilkan nilai C0h bagi AL. Mungkin masih ada pembaca yang
bingung dengan operasi ini. Baiklah untuk lebih jelasnya kita lihat operasi di atas secara
per bit.
Hexadesimal : 3 F
Biner : 0011 1111
_______________________ NOT
Hexadesimal : C 0
Biner : 1100 0000

Gerbang AND

Operator AND akan menghasilkan nilai nol bila salah satu operandnya bernilai
nol. Dan hanya akan bernilai satu bila kedua operandnya bernilai satu.
A B A AND B
0 0 0
0 1 0
1 0 0
1 1 1
Operasi AND di dalam assembler, digunakan dengan syntax :
AND Tujuan,Sumber
Hasil dari operasi AND ini akan disimpan pada Tujuan, sebagai contoh, instruksi
:
MOV AL,3FH
MOV BL,1AH
AND AL,BL
Perintah diatas akan menghasilkan nilai 1A bagi register AL. Ingatlah : Setiap bit yang di
AND dengan 0 pasti menghasilkan bit 0 juga, sedangkan setiap bit yang di AND dengan
1 akan menghasilkan bit itu sendiri.

Gerbang OR

Operator logik OR akan menghasilkan nilai nol bila kedua operannya bernilai nol
dan satu bila salah satunya bernilai satu.
A B A OR B
0 0 0
0 1 1
1 0 1
1 1 1

Operasi OR di dalam assembler, digunakan dengan syntax :


OR Tujuan,Sumber
Hasil dari operasi OR ini akan disimpan pada Tujuan, sebagai contoh, instruksi :
MOV AL,3FH
MOV BL,1AH
OR AL,BL
Hasil operasi OR diatas akan menghasilkan nilai 3F bagi register AL. Ingatlah :

Setiap bit yang di OR dengan 0 pasti menghasilkan bit itu sendiri, sedangkan setiap bit
yang di OR dengan 1 pasti menghasilkan bit 1.

Gerbang XOR

Operator XOR akan menghasilkan nol untuk dua nilai yang sama nilainya dan
satu untuk yang berbeda.
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
Operasi XOR di dalam assembler, digunakan dengan syntax :
XOR Tujuan,Sumber
Hasil dari operasi XOR ini akan disimpan pada Tujuan. Sebagai, contoh instruksi
:
MOV AX,0A12H
XOR AX,AX
Hasil operasi XOR diatas pasti akan menghasilkan nilai 0 bagi register AX. Ingatlah:
Setiap bilangan yang di XOR dengan bilangan yang sama pasti menghasilkan bilangan 0.
Manipulasi Bit

SHL ( Shift Left )

Operator SHL akan menggeser operand1 ke kiri sebanyak operand2 secara per bit.
Kemudian bit kosong yang telah tergeser di sebelah kanannya akan diberi nilai nol.
Operator SHL digunakan dengan syntax : SHL Operand1,Operand2 Supaya lebih jelas
bisa anda lihat pada gambar 10.5. Operand2 harus digunakan register CL bila pergeseran
yang dilakukan lebih dari satu kali.

SHR ( Shift Right )

Operator SHR akan menggeser operand1 ke kanan sebanyak operand2 secara per
bit dan menambahkan nilai nol pada bit yang tergeser seperti halnya pada operator SHL.
Operator SHR digunakan dengan syntax :
SHR Operand1,Operand2
Supaya lebih jelas anda bisa lihat pada gambar 10.6. Operand2 harus digunakan register
CL bila pergeseran yang dilakukan lebih dari satu kali.
II.II Teori Penunjang

Pengertian Gerbang Logika Dasar dan Jenis-jenisnya– Gerbang Logika atau dalam
bahasa Inggris disebut dengan Logic Gate adalah dasar pembentuk Sistem Elektronika
Digital yang berfungsi untuk mengubah satu atau beberapa Input (masukan) menjadi
sebuah sinyal Output (Keluaran) Logis. Gerbang Logika beroperasi berdasarkan sistem
bilangan biner yaitu bilangan yang hanya memiliki 2 kode simbol yakni 0 dan 1 dengan
menggunakan Teori Aljabar Boolean.

Jenis-jenis Gerbang Logika Dasar dan Simbolnya

Terdapat 7 jenis Gerbang Logika Dasar yang membentuk sebuah Sistem Elektronika
Digital, yaitu :

1. Gerbang AND
2. Gerbang OR
3. Gerbang NOT
4. Gerbang NAND
5. Gerbang NOR
6. Gerbang X-OR (Exclusive OR)
7. Gerbang X-NOR (Exlusive NOR)

Tabel yang berisikan kombinasi-kombinasi Variabel Input (Masukan) yang


menghasilkan Output (Keluaran) Logis disebut dengan “Tabel
Kebenaran” atau “Truth Table”.

Input dan Output pada Gerbang Logika hanya memiliki 2 level. Kedua Level tersebut
pada umumnya dapat dilambangkan dengan :

▪ HIGH (tinggi) dan LOW (rendah)


▪ TRUE (benar) dan FALSE (salah)
▪ ON (Hidup) dan OFF (Mati)
▪ 1 dan 0

Contoh Penerapannya ke dalam Rangkaian Elektronika yang memakai Transistor TTL


(Transistor-transistor Logic), maka 0V dalam Rangkaian akan diasumsikan sebagai
“LOW” atau “0” sedangkan 5V akan diasumsikan sebagai “HIGH” atau “1”.

Berikut ini adalah Penjelasan singkat mengenai 7 jenis Gerbang Logika Dasar beserta
Simbol dan Tabel Kebenarannya.

Gerbang AND (AND Gate)

Gerbang AND memerlukan 2 atau lebih Masukan (Input) untuk menghasilkan hanya 1
Keluaran (Output). Gerbang AND akan menghasilkan Keluaran (Output) Logika 1 jika
semua masukan (Input) bernilai Logika 1 dan akan menghasilkan Keluaran (Output)
Logika 0 jika salah satu dari masukan (Input) bernilai Logika 0. Simbol yang
menandakan Operasi Gerbang Logika AND adalah tanda titik (“.”) atau tidak memakai
tanda sama sekali. Contohnya : Z = X.Y atau Z = XY.

Simbol dan Tabel Kebenaran Gerbang AND (AND Gate)

Gerbang OR (OR Gate)

Gerbang OR memerlukan 2 atau lebih Masukan (Input) untuk menghasilkan hanya 1


Keluaran (Output). Gerbang OR akan menghasilkan Keluaran (Output) 1 jika salah satu
dari Masukan (Input) bernilai Logika 1 dan jika ingin menghasilkan Keluaran (Output)
Logika 0, maka semua Masukan (Input) harus bernilai Logika 0.

Simbol yang menandakan Operasi Logika OR adalah tanda Plus (“+”). Contohnya : Z =
X + Y.

Simbol dan Tabel Kebenaran Gerbang OR (OR Gate)

Gerbang NOT (NOT Gate)


Gerbang NOT hanya memerlukan sebuah Masukan (Input) untuk menghasilkan hanya 1
Keluaran (Output). Gerbang NOT disebut juga dengan Inverter (Pembalik) karena
menghasilkan Keluaran (Output) yang berlawanan (kebalikan) dengan Masukan atau
Inputnya. Berarti jika kita ingin mendapatkan Keluaran (Output) dengan nilai Logika 0
maka Input atau Masukannya harus bernilai Logika 1. Gerbang NOT biasanya
dilambangkan dengan simbol minus (“-“) di atas Variabel Inputnya.

Simbol dan Tabel Kebenaran Gerbang NOT (NOT


Gate)

Gerbang NAND (NAND Gate)

Arti NAND adalah NOT AND atau BUKAN AND, Gerbang NAND merupakan
kombinasi dari Gerbang AND dan Gerbang NOT yang menghasilkan kebalikan dari
Keluaran (Output) Gerbang AND. Gerbang NAND akan menghasilkan Keluaran
Logika 0 apabila semua Masukan (Input) pada Logika 1 dan jika terdapat sebuah Input
yang bernilai Logika 0 maka akan menghasilkan Keluaran (Output) Logika 1.

Simbol dan Tabel Kebenaran Gerbang NAND (NAND


Gate)

Gerbang NOR (NOR Gate)


Arti NOR adalah NOT OR atau BUKAN OR, Gerbang NOR merupakan kombinasi dari
Gerbang OR dan Gerbang NOT yang menghasilkan kebalikan dari Keluaran (Output)
Gerbang OR. Gerbang NOR akan menghasilkan Keluaran Logika 0 jika salah satu dari
Masukan (Input) bernilai Logika 1 dan jika ingin mendapatkan Keluaran Logika 1,
maka semua Masukan (Input) harus bernilai Logika 0.

Simbol dan Tabel Kebenaran Gerbang NOR (NOR


Gate)

Gerbang X-OR (X-OR Gate)

X-OR adalah singkatan dari Exclusive OR yang terdiri dari 2 Masukan (Input) dan 1
Keluaran (Output) Logika. Gerbang X-OR akan menghasilkan Keluaran (Output)
Logika 1 jika semua Masukan-masukannya (Input) mempunyai nilai Logika yang
berbeda. Jika nilai Logika Inputnya sama, maka akan memberikan hasil Keluaran
Logika 0.

Simbol dan Tabel Kebenaran Gerbang X-OR (X-OR


Gate)

Gerbang X-NOR (X-NOR Gate)


Seperti Gerbang X-OR, Gerban X-NOR juga terdiri dari 2 Masukan (Input) dan 1
Keluaran (Output). X-NOR adalah singkatan dari Exclusive NOR dan merupakan
kombinasi dari Gerbang X-OR dan Gerbang NOT. Gerbang X-NOR akan menghasilkan
Keluaran (Output) Logika 1 jika semua Masukan atau Inputnya bernilai Logika yang
sama dan akan menghasilkan Keluaran (Output) Logika 0 jika semua Masukan atau
Inputnya bernilai Logika yang berbeda. Hal ini merupakan kebalikan dari Gerbang X-
OR (Exclusive OR).

Simbol dan Tabel Kebenaran Gerbang X-NOR (X-NOR


Gate)

https://teknikelektronika.com/pengertian-gerbang-logika-dasar-simbol/
II.III Rangkuman

Pengertian Gerbang Logika Dasar dan Jenis-jenisnya– Gerbang Logika atau dalam
bahasa Inggris disebut dengan Logic Gate adalah dasar pembentuk Sistem Elektronika
Digital yang berfungsi untuk mengubah satu atau beberapa Input (masukan) menjadi
sebuah sinyal Output (Keluaran) Logis. Gerbang Logika beroperasi berdasarkan sistem
bilangan biner yaitu bilangan yang hanya memiliki 2 kode simbol yakni 0 dan 1 dengan
menggunakan Teori Aljabar Boolean.

Jenis-jenis Gerbang Logika Dasar dan Simbolnya

Terdapat 7 jenis Gerbang Logika Dasar yang membentuk sebuah Sistem Elektronika
Digital, yaitu :

8. Gerbang AND
9. Gerbang OR
10. Gerbang NOT
11. Gerbang NAND
12. Gerbang NOR
13. Gerbang X-OR (Exclusive OR)
14. Gerbang X-NOR (Exlusive NOR)

Tabel yang berisikan kombinasi-kombinasi Variabel Input (Masukan) yang


menghasilkan Output (Keluaran) Logis disebut dengan “Tabel
Kebenaran” atau “Truth Table”.

Input dan Output pada Gerbang Logika hanya memiliki 2 level. Kedua Level tersebut
pada umumnya dapat dilambangkan dengan :

▪ HIGH (tinggi) dan LOW (rendah)


▪ TRUE (benar) dan FALSE (salah)
▪ ON (Hidup) dan OFF (Mati)
▪ 1 dan 0
BAB III
Metode Praktikum
III.I Langkah Percobaan
1. Nyalakan komputer, kemudian Buka aplikasi dan jalankan Aplikasi
emulator 8086
2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator
3. Kemudian screen shoot hasil program
4. Hasil screen shoot pada Program 1 - 6 dimasukkan dalam laporan praktikum
5. Kerjakan tugas akhir berdasarkan materi yang diberikan. Tambahkan keterangan
pada perintah-perintah yang diberikan pada mikroprosesor. Kerjakan masing-
masing.
6. Hasil tugas akhir discreen shot dan dilampirkan pada laporan praktikum.
BAB IV
Hasil dan Analisa
IV.I Hasil Pengujian
Program NOT

Program AND

Program OR
Program XOR

Program SHL
Program SHR
IV.II Analisa Pembahasan
Pada praktikum Mikroprosesor modul III berjudul öperasi logika dan manipulasi
bit. Pada praktikum mikroprosesor modul III bertujuan supaya praktikan dapat memahami
perintah dan proses operasi logika pada mikroprosesor, dan supaya praktikan dapat
melakukan operasi logika NOT, AND, OR dan XOR pada mikroprosesor, dan agar
praktikan dapat memahami perintah dan proses operasi manipulasi bit pada mikroprosesor,
dan tujuan yang terakhir adalah supaya praktikan dapat melakukan manipulasi bit geser
kiri dan geser kanan. Alat yang digunakanan pada praktikum adalah komputer yang
digunakan untuk tempat menginstall dan menjalankan aplikasi Emu8086. Dan aplikasi
Emu8086 untuk merancang dan menjalankan program.

Mikroprosesor adalah sebuah komponen rangkaian elektronik terpadu yang terdiri


dari rangkaian aritmatik, logik dan kontrol yang diperlukan untuk menjalankan fungsi-
fungsi sebuah CPU(Central Processing Unit)dari sebuah komputer digital. Rangkaian
elektronika terpadu tersebut dapat diterjemahkan dan menjalankan intruksi dari sebuah
program serta menangani operasi aritmatik. Mikroprosesor dikembangkan pada akhir 1970
sebagai hasil dari teknologi LSI (Large Scale Integration), suatu rangkaian elektronik
terpadu yang memungkinkan menggabungkan ribuan transistor, dioda, dan resistor pada
sebuah chip silikon sebesar 5mm persegi.

CPU adalah perangkat keras komputer yang memiliki tugas untuk menerima dan
melaksanakan perintah dan data dari perangkat lunak. Fungsi dari CPU adalah melakukan
operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi
yang diberikan melalui beberapa perangkat keras. Banyak sekali tipe dari mikroprosesor,
tetapi pada umumnya isi di dalam mikroprosesor adalah sama. Salah satu chip
mikroprosesor yang dikembangkan oleh perusahaan Intel pada tahun 1970-an adalah
mikroprosesoor tipe 8085 dan seri selanjutnya yaitu 8086. Perbedaan signifikan pada 8085
dan 8086 yaitu mikroprosesor 8085 merupakan tipe 8-bit sedangkan 8086 merupakan tipe
16-bit mikroprosesor. Pada praktikum akan digunakan mikroprosesor tipe 8086.

Isi mikro prosesor 8086 dibagi menjadi dua berdasarkan fungsinya, yaitu EU
(execution Unit) dan BIU (Bus Interface Unit). EU memberikan instruksi pada biu untuk
memulai dari mana data yang ingin di eksekusi diambil lalu diterjemahkan menjadi bahasa
mesin sebelum diexsekusi. Fungsinya adalah untuk mengontrol penggunaan data dan
intruksi pada dekoder dan ALU. Excecution unit tidak terhubung langsung dengan sistem
bus, tetapi dia memproses data melalui Bus Interance Unit seperti yang terlihat pada
gambar. BIU mengurus semua transfer data dan alamat antar Bus untuk EU seperti
pengiriman alamat, pengambilan intruksi dari memori, membaca dan menulis data ke port
maupun memori.

Bahasa rakitan atau lebih dikenal sebagai bahasa Assembly adalah bahasa
pemrograman tingkat rendah yang dipakai untuk memprogram perangkat keras seperti
mikroprosesor dan mikrokontroler. Bahasa yang digunakan adalah bahasa pemrograman
yang berisi intruksi-intruksi yang diterjemahkan oleh decoder menjadi bahasa mesin yang
dimengerti oleh komputer. Interupsi adalah suatu permintaan khusus kepada mikroprosesor
untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan
terlebih dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang
menginterupsi. Pengertian dari input dan output pada mikroprosesor sama dengan
perangkat elektronik lainnya, yaitu input adalah masukan yang didapatkan oleh
mikroprosesor guna mengolah data yang dimasukkan sedangkan output adalah hasil olahan
data atau perintah yang diberikan dari mikroprosesor kepada lingkungannya.

Didalam pemrograman dengan bahasa assembler, bisa digunakan berbagai jenis


bilangan berdasarkan basisnya. Jenis bilangan yang bisa digunakan, yaitu: Bilangan
biner(basis 2), octal (basis 8) desimal (basis 10) dan hexadesimal (basis 16). Pemahaman
terhadap jenis-jenis bilangan ini adalah penting, karena akan sangat membantu kita dalam
pemrograman yang sesungguhnya. Penulisan penanda basis pada sebuah bilangan ditandai
dengan angka dipojok kanan bawah suatu bilangan, misalkan 10 adalah biner maka diulis
102, jika 10 adalah decimal ditulis 1010 dan heksadesimal 1016. Tetapi untuk
mendefisikan jenis bilangan pada Bahasa Assembly, bilangan tersebut diakhiri dengan
huruf B(Biner), O(Oktal), D(Desimal) dan H(Hexadesimal).

Sebenarnya semua bilangan, data maupun program itu sendiri akan diterjemahkan
oleh komputer ke dalam bentuk biner. Jadi pendefinisisan data dengan jenis bilangan
apapun (Desimal, dan hexadesimal) akan selalu diterjemahkan oleh komputer ke dalam
bentuk biner. Bilangan biner adalah bilangan yang hanya terdiri atas 2 kemungkinan
(Berbasis dua), yaitu 0 dan 1. Karena berbasis 2, maka pengkorversian ke dalam bentuk
desimal adalah menjumlahkan tiap suku yang tiap suku ke-n (n=0 dari paling kanan)
dikalikan dengan 2n .

Bilangan oktal adalah bilangan dengan basis 8, artinya angka yang dipakai hanyalah
antara 0 -7. Sama halnya dengan jenis bilangan yang lain, suatu bilangan oktal dapat
dikonversikan dalam bentuk desimal dengan menjumlahkan tiap suku yang tiap suku ke-n
(n=0 dari paling kanan) dikalikan dengan 8n . Tentunya jenis bilangan ini sudah tidak asing
lagi bagi kita semua. Bilangan Desimal adalah jenis bilangan yang paling banyak dipakai
dalam kehidupan sehari-hari, sehingga kebanyakan orang sudah akrab dengannya.
Bilangan desimal adalah bilangan yang terdiri atas 10 buah angka(Berbasis 10), yaitu
angka 0-9. Dengan basis sepuluh ini maka suatu angka dapat dijabarkan dengan
perpangkatan sepuluh. Bilangan hexadesimal merupakan bilangan yang berbasis 16.
Dengan angka yang digunakan berupa: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Dalam
pemrograman assembler, jenis bilangan ini boleh dikatakan yang paling banyak digunakan.
Hal ini dikarenakan mudahnya pengkonversian bilangan ini dengan bilangan yang lain,
terutama dengan bilangan biner dan desimal. Karena berbasis 16, maka 1 angka pada
hexadesimal akan menggunakan 4 bit.

Pada praktikum modul III ini akan mempelajari dan mempraktekkan tentang
gerbang logika NOT, AND, OR, XOR, dan operasi geser data berupa SHL dan SHR. Yang
pertama adalah gerbang NOT dimana pada gerbang NOT, hasil output akan berkebalikan
dari input, jadi apabila inputan dimasukkan sinyal berlogika satu, maka sinyal yang akan
muncul pada output akan berlogika 0, sedangkan apabila input diberi sinyal berlogika 0
maka sinyal hasil dari output akan berlogika 1. Pada program dapat dilihat derdapat mov
al, dan not al. dimana mov al berfungsi untuk memasukkan bit atau data. Dan fungsi dari
not al yaitu untuk melakukan operasi not pada data al. dimana hasil akan operasi akan
terdapat pada AL.

Kemudian gerbang kedua adalah gerbang AND. Dimana pada gerbang AND
memiliki karakteristik sinyal output akan berlogikan 1 ketika kedua sinyal input berlogika
1. Jadi apabila salah satu atau kedua sinyal input berlogika 0 maka outputan akan berlogika
0. Pada program terdapat mov AL, dan mov BL, dan AND AL, BL. Dimana MOV AL
berfungsi untuk memasukkan data di AL dan mov BL adalah untuk memasukkan data ke
BL. Dan AND AL,BL berfungsi untuk menjalankan operasi AND pada data AL dan data
BL. Dimana hasil dari operasi tersebut akan muncul pada AL. kemudian yang ketiga adalah
operasi OR. Dimana karakteristik sinyal output pada gerbang OR akan berlogika 1 apabila
salah satu atau kedua input berlogika 1. Jadi apabila kedua sinyal input berlogika 0 maka
sinyal output akan berlogika 0. Pada program OR terdapat MOV AL, MOV BL, dan OR
AL,BL. Dimana fungsi dari MOV AL adalah untuk memasukkan data ke AL, dan mov BL
akan memasukkan data ke BL. Dimana OR AL, BL akan operasikan gerbang OR pada AL
dan BL. Dimana hasil dari operasi logika tersebut akan muncul pada AL. dan ada juga
gerbang XOR. Dimana pada XOR karakteristik sinyal outputnya akan berlogika 1 apabila
sinyal input berbeda logika. Jadi apabila sinyal input berlogika 1 dan 0 atau 0 dan 1, maka
sinyal outputnya akan berlogika 1. Namun apabila sinyal input berlogika sama, yaitu 0 dan
0 atau 1 dan 1, maka sinyal output akan berlogika 0. Dimana program XOR ini terdapat
MOV AX , dan XOR AX,AX. Dimana fungsi dari MOV AX akan memasukkan data ke
AX. Dan XOR AX,AX dalah untuk mengoperasikan AX dan AX dengan logika XOR.
Dimana hasil akan muncul atau tampil pada AX. Pada percobaan gerbang logika terdapat
int 20 yang berfungsi mengakhiri program.

Kemudian pada percobaan selanjutnya adalah SHL. Dimana SHL merupakan


sebuah perintah atau operasi untuk menggeser data ke arah kiri. Pada program terdapat
MOV AL, MOV CL,dan SHL AX,CL. MOV AL berfungsi memasukkan data ke AL. MOV
CL pada program ini sebagai jumlah pergeseran data. Dan SHL AX,CL adalah perintah
untuk menggeser data AX sebanyak CX, dimana CX bernilai 3, jadi AX kan bergeser kekiri
sebanyak 3 kali. Sedangkan SHR merupakan kebalikan dari SHR yaitu untuk menggerser
data ke arah kanan. dimana untuk program hampir sama dari SHL. Yaitu mengganti SHL
dengan SHR. Dimana data akan bergeser ke kanan sebanyak 3 kali. Pada pergeseran data,
apabila data bergeser melebihi bit, maka akan menghasilkan carry flag.

IV.III Tugas Akhir

PROGRAM
.MODEL SMALL
.CODE
.DATA
.ORG 100H
TULISANGKA1 DB 13, "MASUKKAN ANGKA PERTAMA (0-15) : $"
TULISANGKA2 DB 10, 13, "MASUKKAN ANGKA KEDUA (0-15) : $"
TULISHASILANGKA1 DB 10, 13, "ANGKA 1 = $"
TULISHASILANGKA2 DB 10, 13, "ANGKA 2 = $"
TULISHASILNOT1 DB 10, 13, 10, 13, "HASIL NOT 1 = $"
TULISHASILNOT2 DB 10, 13, "HASIL NOT 2 = $"
TULISHASILAND DB 10, 13, "HASIL AND = $"
TULISHASILOR DB 10, 13, "HASIL OR = $"
TULISHASILXOR DB 10, 13, "HASIL XOR = $"
TULISKETERANGAN DB 10,13,10,13, "KETERANGAN DESIMAL", 9,
"BINER $"
TDATA :
JMP PROSES
ANGKA1 DB ? ;MASUKAN ada 2 variabel
ANGKA2 DB ?
HASIL DB ? ;Keluaran ada 1 variabel
BINER1 DB ? ;Digit Biner 1
BINER2 DB ? ;Digit Biner 2
BINER3 DB ? ;Digit Biner 3
BINER4 DB ? ;Digit Biner 4

PROSES:

;MINTA MASUKAN ANGKA


MOV DX, OFFSET TULISANGKA1 ; Print minta masukan
MOV AH, 09H
INT 21H

MOV AH, 01H


INT 21H ; Masukkan digit 1
SUB AL, 30H ; char masukan menjadi desimal
MOV BL, 10D
MUL BL
MOV ANGKA1, AL

MOV AH, 01H


INT 21H ; Masukkan digit 2
SUB AL, 30H ; char masukan menjadi desimal
ADD ANGKA1, AL ; membuat satuan

;MINTA MASUKAN ANGKA2


MOV DX, OFFSET TULISANGKA2 ; Print minta masukan
MOV AH, 09H
INT 21H

MOV AH, 01H


INT 21H ; Masukkan digit 1
SUB AL, 30H ; char masukan menjadi desimal
MOV BL, 10D
MUL BL
MOV ANGKA2, AL

MOV AH, 01H


INT 21H ; Masukkan digit 2
SUB AL, 30H ; char masukan menjadi desimal
ADD ANGKA2, AL ; membuat satuan

;MENAMPILKAN MASUKAN DALAM BINER1

MOV DX, OFFSET TULISKETERANGAN


MOV AH, 09H
INT 21H

MOV DX, OFFSET TULISHASILANGKA1


MOV AH, 09H
INT 21H

MOV BL, ANGKA1


MOV HASIL,BL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL,AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H
MOV BL, ANGKA1
MOV HASIL, BL ; Masukkan angka 1 ke hasil

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL,AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH

MOV DL, BINER4


MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H

;MENAMPILKAN MASUKAN DALAM BINER

MOV DX, OFFSET TULISHASILANGKA2


MOV AH, 09H
INT 21H

MOV BL, ANGKA2


MOV HASIL,BL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL,AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H

MOV BL, ANGKA2


MOV HASIL, BL ; Masukkan angka 1 ke hasil

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL,AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH

MOV DL, BINER4


MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H

;MENAMPILKAN HASIL NOT1


MOV DX, OFFSET TULISHASILNOT1 ; Print minta masukan
MOV AH, 09H
INT 21H

MOV AL, ANGKA1


NOT AL
AND AL, 0FH
MOV HASIL, AL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL, AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV AL, ANGKA1


NOT AL
AND AL, 0FH
MOV HASIL, AL

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH
XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH

MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H

MOV DL, BINER4


MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H

;MENAMPILKAN HASIL NOT2


MOV DX, OFFSET TULISHASILNOT2 ; Print minta masukan
MOV AH, 09H
INT 21H
MOV AL, ANGKA2
NOT AL
AND AL, 0FH
MOV HASIL, AL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL, AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV AL, ANGKA2


NOT AL
AND AL, 0FH
MOV HASIL, AL

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH

MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H
MOV DL, BINER4
MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H

;MENAMPILKAN HASIL AND


MOV DX, OFFSET TULISHASILAND ; Print minta masukan
MOV AH, 09H
INT 21H

MOV AL, ANGKA1


MOV BL, ANGKA2
AND AL, BL
AND AL, 0FH
MOV HASIL, AL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL, AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV AL, ANGKA1


MOV BL, ANGKA2
AND AL, BL
AND AL, 0FH
MOV HASIL, AL

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH

MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H

MOV DL, BINER4


MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H

;MENAMPILKAN HASIL 0R
MOV DX, OFFSET TULISHASILOR ; Print minta masukan
MOV AH, 09H
INT 21H

MOV AL, ANGKA1


MOV BL, ANGKA2
OR AL, BL
AND AL, 0FH
MOV HASIL, AL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL, AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV AL, ANGKA1


MOV BL, ANGKA2
OR AL, BL
AND AL, 0FH
MOV HASIL, AL

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH

MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H

MOV DL, BINER4


MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H

;MENAMPILKAN HASIL X0R


MOV DX, OFFSET TULISHASILXOR ; Print minta masukan
MOV AH, 09H
INT 21H

MOV AL, ANGKA1


MOV BL, ANGKA2
XOR AL, BL
AND AL, 0FH
MOV HASIL, AL

XOR AX,AX
MOV AL, HASIL
MOV BL,10D
DIV BL
MOV HASIL, AH
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

XOR AX,AX
MOV AL, HASIL
ADD AL,30H
MOV DL,AL ;Menyimpan isi AL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H

MOV AL, ANGKA1


MOV BL, ANGKA2
XOR AL, BL
AND AL, 0FH
MOV HASIL, AL
XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER1, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER2, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER3, AH

XOR AX, AX
MOV AL, HASIL
MOV BL, 2H
DIV BL
MOV HASIL, AL
ADD AH,30H
MOV BINER4, AH
MOV DL,09H
MOV AH,02H ;mencetak karakter tab
INT 21H

MOV DL, BINER4


MOV AH, 02H
INT 21H
MOV DL, BINER3
MOV AH, 02H
INT 21H
MOV DL, BINER2
MOV AH, 02H
INT 21H
MOV DL, BINER1
MOV AH, 02H
INT 21H
INT 20H ;Exit Program
END PROSES
BAB V
Penutup
V.I Kesimpulan
1. Operasi logika pada praktikum ini terdapat logika NOT, AND, OR, dan XOR.
2. Logika NOT outputnya berkebalikan dengan inputnya. Sedangkan AND outputnya
berlogika 1, ketika kedua input berlogika 1. Pada OR outputnya akan berlogika 1
ketika salah satu atau kedua input berlogika 1. Sedangkan XOR akan berlogika 1
outputnya apabila input berlogika beda.
3. Proses manipulasi bit pada modul ini ada SHL dan SHR.
4. SHL adalah manipulasi bit yang berfungsi untuk menggeser data ke kiri. Sedangkan
SHR adalah kebalikan dari SHL, yaitu berfungsi menggeser data ke kanan.
V.II Saran
Pada saat praktikum menurut saya sudah sangat baik, untuk penyampaian materi jelas dan
tidak tegang, jadi lebih mudah untuk menerima materi dan menyenangkan. Untuk
kedepannya cukup dipertahankan .
Daftar Pustaka

https://teknikelektronika.com/pengertian-gerbang-logika-dasar-simbol/
PRAKTIKUM IV
Percabangan dan Perulangan pada Mikroprosesor
Andhika Fitra Ramadhan (201811031); Cahyo Utomo (201811043);
Mulia Djuang (201811034); Eki Nur Afifah (201811043) S1 Teknik
Elektro, Institut Teknologi – PLN
cahyoutomo3@gmail.com

BAB I
Pendahuluan
I.I Tujuan
1. Memahami perintah dan proses operasi percabangan pada mikroprosesor
2. Dapat melakukan operasi percabangan JMP, JE, JNE, JA, JB
3. Memahami perintah dan proses operasi perulangan pada mikroprosesor

4. Dapat melakukan operasi perulangan LOOP

I.II Alat dan Bahan


1. Komputer

2. Aplikasi Emu8086
BAB II
Landasan Teori
II.I Teori Modul
Label
Mikroprosesor dalam mengoperasikan perintah-perintah yang diberikan pada
dirinya dengan menggunakan aseembly, akan membaca perintah-perintah tersebut secara
terstruktur dari atas ke bawah. Masing-masing perintah tersebut tercatat pada alamat
offset register yang berbeda-beda. Label pada bahasa pemrograman Assembly merupakan
sebuah penanda pada source code dimana label ini akan mencatat alamat offset register
saat label tersebut ditulis. Alamat offset register ini nantinya bisa diambil nilainya dengan
memanggil label tersebut. Meminta program mengeksekusi untuk kembali ke alamat
yang terisi pada label akan mengembalikan instruction pointer untuk menjalankan
instruksi pada alamat label dan dilanjutkan menjalankan instruksi di bawah label tersebut.
Terdapat dua tipe label pada Bahasa Assembly, Label simbolik dan label nomor.

Percabangan

Percabangan pada mikroprosesor menjadi bagian yang sangat penting karena


dapat menyerhanakan program dari mikroprosesor dan menambah fleksibilitas atau
kegunaan (usability) dari mikroprosesor. Seperti yang sudah dipelajari sebelumnya
bahwa mikroprosesor akan mengeksekusi isi dari perintah pada Index Pointer (IP) dan
Index Pointer akan merujuk ke Index Pointer dibawahnya, percabangan pada
mikroprosesor dilakukan dengan cara merubah alamat dari Index Pointer ke alamat yang
diinginkan. Hal ini membuat percabangan pada mikroprosesor desebut juga sebagai
lompatan.

Percabangan pada mikroprosesor dibagi menjadi dua macam percabangan, yaitu


:

- Percabangan tak bersyarat (unconditional branch)

- Percabangan bersyarat (conditional branch)


Percabangan tidak bersyarat adalah percabangan yang dilakukan tanpa melihat isi
dari penanda/flag apapun pada saat melakukan lompatan ke alamat yang diberikan.
Sedangkan Percabangan bersyarat adalah lompatan yang dilakukan jika sebuah kondisi
tertentu dipenuhi. Pada mikroprosesor 8086 percabangan tidak bersyarat dapat dilakukan
dengan instruksi JMP. Sedangkan percabangan bersyarat dapat dilakukan dengan
mempertimbangkan beberapa kondisi penanda/ flag dimana isi flag akan berubah nilainya
dengan perintah CMP (Compare).

JMP (Unconditional branch)


Perintah JMP ini digunakan untuk melompat menuju alamat label yang
ditunjukkan oleh perintah JMP. Adapun syntax-nya adalah:

JMP Label_Tujuan

Tujuannya dapat berupa label seperti yang digunakan pada syntax diatas. Perintah
JMP yang digunakan pada materi-materi sebelumnya biasanya dimaksudkan agar
melewati tempat data program, karena jika tidak ada perintah JMP ini maka data program
akan ikut dieksekusi sehingga kemungkinan besar akan menyebabkan program anda
menjadi Hang.

Perintah JMP ini dikategorikan sebagai Unconditional Branch, karena perintah


ini tidak menyeleksi keadaan apapun untuk melakukan suatu lompatan. Setiap ditemui
perintah ini maka lompatan pasti dilakukan.

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 operand2. CMP tidak mempengaruhi nilai Operand1
dan Operand2, perintah CMP hanya akan mempengaruhi flags register sebagai hasil
perbandingan. Adapun flag-flag yang terpengaruh oleh perintah CMP ini adalah:

- OF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan
bertanda.

- SF akan 1, bila operand1 lebih kecil dari operand2, pada operasi bilangan
bertanda.

- ZF akan 1, jika operand1 nilainya sama dengan operand2.

- CF akan 1, jika operand1 lebih kecil dari operand2 pada operasi bilangan tidak
bertanda. Perlu anda ingat bahwa CMP tidak dapat membandingkan antar 2 lokasi
memory.
Lompat Yang Mengikuti CMP (Conditonal Branch)

Perintah CMP yang hanya mempengaruhi flag register, biasanya diikuti dengan perintah
lompat yang melihat keadaan pada flags register diatas. Jenis perintah lompat yang
biasanya mengikuti perintah CMP, terdapat 12 buah seperti pada Tabel di bawah ini.
Pada tabel diatas dapat anda lihat bahwa terdapat dua operasi yang berbeda, yaitu
operasi bilangan bertanda dan tidak bertanda. Bilangan bertanda adalah bilangan yang
akan membedakan bilangan negatif dan positif (Mis. 37 dan -37). Sedangkan bilangan
tidak bertanda adalah bilangan yang tidak akan membedakan positif dan negatif, jadi
angka -1 untuk operasi bilangan bertanda akan dianggap FFh pada bilangan tidak
bertanda.

Bila program diatas dijalankan, maka akan tampak pada layar:

Bilangan A lebih besar dari bilangan B


Anda bisa mengganti nilai pada variabel BilA dan BilB untuk melihat hasil yang
akan ditampilkan pada layar.

Catatan penting yang harus diperhatikan pada lompat bersayarat adalah bahwa
jangkauan dari lompat bersyarat tidak sama dnegan lompat tanpa syarat. Lompat
bersyarat hanya dapat melompat menuju label yang berjarak -128 sampai +127 byte dari
tempat lompatan.

Perulangan

Perulangan pada mikroprosesor sangat diperlukan dan menjadi bagian penting


karena dengan perulangan akan meminimalisir proses penulisan program dan
meminimalisir pemakaian memori yang terlalu banyak dalam menulis program.
Sebaliknya dalam melakukan proses perulangan adalah harus sangat hati-hati agar tidak
terjadi perulangan tidak berhingga atau perulangan yang menyebabkan bertumpuknya
nilai memori yang tidak perlu.

Dalam melakukan perulangan yang harus diperhatikan adalah :

- Kapan / kondisi apa yang menyebabkan perulangan itu akan


berakhirBerapa banyak perulangan yang diinginkan

-Register apa saja yang terpengaruh pada saat perulangan dilakukan

Perulangan dengan LOOP

Perintah LOOP digunakan untuk melakukan suatu proses yang berulang-ulang.


Adapun syntax dari perintah ini adalah :

LOOP Label_Tujuan

Label_Tujuan dapat berupa suatu label yang telah didefinisikan, contoh:


Perintah LOOP adalah mirip dengan perintah JMP, hanya saja perintah LOOP adalah
lompatan yang memperhatikan nilai register CX. Pada proses pengulangan dengan
perintah LOOP, register CX memegang suatu peranan yang khusus dimana register ini
dijadikan sebagai counter/penghitung terhadap banyaknya perulangan/ looping yang
boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan dikurangi dengan 1
terlebih dahulu, kemudian akan dilihat apakah CX sudah mencapai 0. Proses looping akan
selesai bila nilai pada register CX mencapai nol. Seperti pada contoh diatas, maka
interupsi 21H servise 01H (meminta masukan dari keyboard) akan dihasilkan sebanyak 3
kali (sesuai dengan nilai CX).

TRICK:

Bila anda menetapkan nilai CX menjadi nol pada saat pertama kali sebelum
dilakukan loop, maka anda akan mendapatkan proses looping yang terbanyak. Hal ini
dikarenakan proses pengurangan 0 dengan 1 akan menghasilkan nilai FFFFH(-1), Contoh
:

MOV CX,00

Ulang: LOOP Ulang

Perlu diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP karena
hal ini akan menyebabkan nilai CX di-SET terus sehingga proses looping tidak bisa
berhenti
II.II Teori Penunjang
Perintah LOOP digunakan untuk melakukan suatu proses yang berulang-ulang sesuai
dengan nilai yang telah ditentukan.

LOOP Tujuan

Tujuan dapat berupa suatu label yang telah didefinisikan, contoh:

MOV CX,3 ; Banyaknya pengulangan yang dilakukan

Ulang : INT 10h ; Tempat terjadinya pengulangan

LOOP Ulang ; Lompat ke label 'Ulang'

Pada proses perulangan dengan perintah LOOP, registex CX memegang suatu peranan
khusus dimana register ini dijadikan sebagai counter/penghitung terhadap banyaknya
looping yang boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan
dikurangi dengan 1 terlebih dahulu, kemudian akan dilihat apakah CX sudah mencapai
0. Proses looping akan selesai bila nilai pada register CX mencapai nol. Seperti pada
contoh diatas, maka interupsi 10h akan dihasilkan sebanyak 3 kali(sesuai dengan nilai
CX).

Perlu diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP
karena hal ini akan menyebabkan nilai CX di SET terus sehinnga proses looping tidak
bisa berhenti.

Mencetak Beberapa Karakter

Berikut adalah kode untuk mencetak beberapa karakter dengan Loop

.MODEL SMALL
.CODE

ORG 100h

Proses :

MOV AH,02h

MOV DL,'A'

MOV CX,10

Ulang :

INT 21h

ADD DL,1

LOOP Ulang

INT 20h

END Proses

Bila program tersebut dijalankan, maka akan menghasilkan sebagai berikut.


Selanjutnya , kita akan mencetak karakter A-Z dengan perulangan disertai dengan
warna dan background .

berikut adalah kode program nya

.MODEL SMALL
.CODE
ORG 100h

proses :
MOV AH,9h
MOV BL,96h
MOV CX,26

ulang :
INT 10h
ADD BL,1
LOOP ulang

MOV AH,2h
MOV DL,'A'
MOV CX,26

dua :
INT 21h
ADD DL,1
LOOP dua

INT 20h
END proses

Simpan dengan ekstensi *.ASM , compile dan tlink, kemudian jalankan file tersebut,
jika tidak terjadi kesalahan, maka hasilnya adalah

http://webriky.blogspot.com/2014/09/pengulangan-loop-pada-bahasa-assembly.html
II.III Rangkuman

Percabangan

Percabangan pada mikroprosesor menjadi bagian yang sangat penting karena


dapat menyerhanakan program dari mikroprosesor dan menambah fleksibilitas atau
kegunaan (usability) dari mikroprosesor. Seperti yang sudah dipelajari sebelumnya
bahwa mikroprosesor akan mengeksekusi isi dari perintah pada Index Pointer (IP) dan
Index Pointer akan merujuk ke Index Pointer dibawahnya, percabangan pada
mikroprosesor dilakukan dengan cara merubah alamat dari Index Pointer ke alamat
yang diinginkan. Hal ini membuat percabangan pada mikroprosesor desebut juga
sebagai lompatan.

Percabangan pada mikroprosesor dibagi menjadi dua macam percabangan, yaitu

- Percabangan tak bersyarat (unconditional branch)


- Percabangan bersyarat (conditional branch)

Percabangan tidak bersyarat adalah percabangan yang dilakukan tanpa melihat isi dari
penanda/flag apapun pada saat melakukan lompatan ke alamat yang diberikan.
Sedangkan Percabangan bersyarat adalah lompatan yang dilakukan jika sebuah kondisi
tertentu dipenuhi.

Perulangan

Perintah LOOP digunakan untuk melakukan suatu proses yang berulang-ulang sesuai
dengan nilai yang telah ditentukan.

Pada proses perulangan dengan perintah LOOP, registex CX memegang suatu peranan
khusus dimana register ini dijadikan sebagai counter/penghitung terhadap banyaknya
looping yang boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan
dikurangi dengan 1 terlebih dahulu, kemudian akan dilihat apakah CX sudah mencapai
0. Proses looping akan selesai bila nilai pada register CX mencapai nol. Seperti pada
contoh diatas, maka interupsi 10h akan dihasilkan sebanyak 3 kali(sesuai dengan nilai
CX).

Perlu diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP
karena hal ini akan menyebabkan nilai CX di SET terus sehinnga proses looping tidak
bisa berhenti.
BAB III
Metode Praktikum
III.I Langkah Percobaan
1. Nyalakan komputer, kemudian jalankan Aplikasi emu8086

2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator

3. Kemudian screen shoot hasil program

4. Hasil screen shoot pada Program 1 - 2 dimasukkan dalam laporan praktikum

5. Kerjakan tugas akhir berdasarkan materi yang diberikan. Tambahkan keterangan


pada perintah-perintah yang diberikan pada mikroprosesor. Kerjakan masing-
masing.

6. Hasil tugas akhir di-screen shot dan dilampirkan pada laporan praktikum.
BAB IV
Hasil dan Analisa
IV.I Hasil Pengujian
Program 1

Program 2
IV.II Analisa Pembahasan
Pada praktikum Mikroprosesor modul IV berjudul Percabangan dan perulangan
pada Mikroprosesor. Pada praktikum mikroprosesor modul III bertujuan supaya praktikan
dapat memahami perintah dan proses operasi percabangan pada mikroprosesor, dan supaya
praktikan dapat melakukan operasi percabangan JMP, JE, JNE, JA, JB. Dan supaya dapat
memahami perintah dan proses operasi perulangan pada mikroprosesoro, dan tujuan yang
terakhir adalah supaya praktikan dapat melakukan operasi perulangan LOOP. Alat yang
digunakanan pada praktikum adalah komputer yang digunakan untuk tempat menginstall
dan menjalankan aplikasi Emu8086. Dan aplikasi Emu8086 untuk merancang dan
menjalankan program.

Mikroprosesor adalah sebuah komponen rangkaian elektronik terpadu yang terdiri


dari rangkaian aritmatik, logik dan kontrol yang diperlukan untuk menjalankan fungsi-
fungsi sebuah CPU(Central Processing Unit)dari sebuah komputer digital. Rangkaian
elektronika terpadu tersebut dapat diterjemahkan dan menjalankan intruksi dari sebuah
program serta menangani operasi aritmatik. Mikroprosesor dikembangkan pada akhir 1970
sebagai hasil dari teknologi LSI (Large Scale Integration), suatu rangkaian elektronik
terpadu yang memungkinkan menggabungkan ribuan transistor, dioda, dan resistor pada
sebuah chip silikon sebesar 5mm persegi.

CPU adalah perangkat keras komputer yang memiliki tugas untuk menerima dan
melaksanakan perintah dan data dari perangkat lunak. Fungsi dari CPU adalah melakukan
operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi
yang diberikan melalui beberapa perangkat keras. Banyak sekali tipe dari mikroprosesor,
tetapi pada umumnya isi di dalam mikroprosesor adalah sama. Salah satu chip
mikroprosesor yang dikembangkan oleh perusahaan Intel pada tahun 1970-an adalah
mikroprosesoor tipe 8085 dan seri selanjutnya yaitu 8086. Perbedaan signifikan pada 8085
dan 8086 yaitu mikroprosesor 8085 merupakan tipe 8-bit sedangkan 8086 merupakan tipe
16-bit mikroprosesor. Pada praktikum akan digunakan mikroprosesor tipe 8086.

Isi mikro prosesor 8086 dibagi menjadi dua berdasarkan fungsinya, yaitu EU
(execution Unit) dan BIU (Bus Interface Unit). EU memberikan instruksi pada biu untuk
memulai dari mana data yang ingin di eksekusi diambil lalu diterjemahkan menjadi bahasa
mesin sebelum diexsekusi. Fungsinya adalah untuk mengontrol penggunaan data dan
intruksi pada dekoder dan ALU. Excecution unit tidak terhubung langsung dengan sistem
bus, tetapi dia memproses data melalui Bus Interance Unit seperti yang terlihat pada
gambar. BIU mengurus semua transfer data dan alamat antar Bus untuk EU seperti
pengiriman alamat, pengambilan intruksi dari memori, membaca dan menulis data ke port
maupun memori.

Bahasa rakitan atau lebih dikenal sebagai bahasa Assembly adalah bahasa
pemrograman tingkat rendah yang dipakai untuk memprogram perangkat keras seperti
mikroprosesor dan mikrokontroler. Bahasa yang digunakan adalah bahasa pemrograman
yang berisi intruksi-intruksi yang diterjemahkan oleh decoder menjadi bahasa mesin yang
dimengerti oleh komputer. Interupsi adalah suatu permintaan khusus kepada mikroprosesor
untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan
terlebih dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang
menginterupsi. Pengertian dari input dan output pada mikroprosesor sama dengan
perangkat elektronik lainnya, yaitu input adalah masukan yang didapatkan oleh
mikroprosesor guna mengolah data yang dimasukkan sedangkan output adalah hasil olahan
data atau perintah yang diberikan dari mikroprosesor kepada lingkungannya.

Didalam pemrograman dengan bahasa assembler, bisa digunakan berbagai jenis


bilangan berdasarkan basisnya. Jenis bilangan yang bisa digunakan, yaitu: Bilangan
biner(basis 2), octal (basis 8) desimal (basis 10) dan hexadesimal (basis 16). Pemahaman
terhadap jenis-jenis bilangan ini adalah penting, karena akan sangat membantu kita dalam
pemrograman yang sesungguhnya. Penulisan penanda basis pada sebuah bilangan ditandai
dengan angka dipojok kanan bawah suatu bilangan, misalkan 10 adalah biner maka diulis
102, jika 10 adalah decimal ditulis 1010 dan heksadesimal 1016. Tetapi untuk
mendefisikan jenis bilangan pada Bahasa Assembly, bilangan tersebut diakhiri dengan
huruf B(Biner), O(Oktal), D(Desimal) dan H(Hexadesimal).

Sebenarnya semua bilangan, data maupun program itu sendiri akan diterjemahkan
oleh komputer ke dalam bentuk biner. Jadi pendefinisisan data dengan jenis bilangan
apapun (Desimal, dan hexadesimal) akan selalu diterjemahkan oleh komputer ke dalam
bentuk biner. Bilangan biner adalah bilangan yang hanya terdiri atas 2 kemungkinan
(Berbasis dua), yaitu 0 dan 1. Karena berbasis 2, maka pengkorversian ke dalam bentuk
desimal adalah menjumlahkan tiap suku yang tiap suku ke-n (n=0 dari paling kanan)
dikalikan dengan 2n .

Bilangan oktal adalah bilangan dengan basis 8, artinya angka yang dipakai hanyalah
antara 0 -7. Sama halnya dengan jenis bilangan yang lain, suatu bilangan oktal dapat
dikonversikan dalam bentuk desimal dengan menjumlahkan tiap suku yang tiap suku ke-n
(n=0 dari paling kanan) dikalikan dengan 8n . Tentunya jenis bilangan ini sudah tidak asing
lagi bagi kita semua. Bilangan Desimal adalah jenis bilangan yang paling banyak dipakai
dalam kehidupan sehari-hari, sehingga kebanyakan orang sudah akrab dengannya.
Bilangan desimal adalah bilangan yang terdiri atas 10 buah angka(Berbasis 10), yaitu
angka 0-9. Dengan basis sepuluh ini maka suatu angka dapat dijabarkan dengan
perpangkatan sepuluh. Bilangan hexadesimal merupakan bilangan yang berbasis 16.
Dengan angka yang digunakan berupa: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Dalam
pemrograman assembler, jenis bilangan ini boleh dikatakan yang paling banyak digunakan.
Hal ini dikarenakan mudahnya pengkonversian bilangan ini dengan bilangan yang lain,
terutama dengan bilangan biner dan desimal. Karena berbasis 16, maka 1 angka pada
hexadesimal akan menggunakan 4 bit.

Mikroprosesor dalam mengoperasikan perintah-perintah yang diberikan pada


dirinya dengan menggunakan aseembly, akan membaca perintah-perintah tersebut secara
terstruktur dari atas ke bawah. Masing-masing perintah tersebut tercatat pada alamat offset
register yang berbedabeda. Label pada bahasa pemrograman Assembly merupakan sebuah
penanda pada source code dimana label ini akan mencatat alamat offset register saat label
tersebut ditulis. Alamat offset register ini nantinya bisa diambil nilainya dengan memanggil
label tersebut. Meminta program mengeksekusi untuk kembali ke alamat yang terisi pada
label akan mengembalikan instruction pointer untuk menjalankan instruksi pada alamat
label dan dilanjutkan menjalankan instruksi di bawah label tersebut. Terdapat dua tipe label
pada Bahasa Assembly, Label simbolik dan label nomor.

Pada praktikum mikroprosesor modul VI ini membahas tentang percabangan dan


perulangan. Dimana pada operasi percabangan dibagi menjadi 2 yaitu adalah percabangan
bersyarat dan percabangan tidak bersyarat. Percabangan tidak bersyarat adalah
percabangan yang dilakukan tanpa melihat isi dari penanda/flag apapun pada saat
melakukan lompatan ke alamat yang diberikan. Sedangkan Percabangan bersyarat adalah
lompatan yang dilakukan jika sebuah kondisi tertentu dipenuhi. Pada mikroprosesor 8086
percabangan tidak bersyarat dapat dilakukan dengan instruksi JMP. Sedangkan
percabangan bersyarat dapat dilakukan dengan mempertimbangkan beberapa kondisi
penanda/ flag dimana isi flag akan berubah nilainya dengan perintah CMP (Compare).

Perintah JMP pada percabangan digunakan untuk melompat menuju alamat label
yang ditunjukkan oleh perintah JMP. Perintah JMP yang digunakan pada materi-materi
sebelumnya biasanya dimaksudkan agar melewati tempat data program, karena jika tidak
ada perintah JMP ini maka data program akan ikut dieksekusi sehingga kemungkinan besar
akan menyebabkan program anda menjadi Hang. Perintah JMP ini dikategorikan sebagai
Unconditional Branch, karena perintah ini tidak menyeleksi keadaan apapun untuk
melakukan suatu lompatan. Setiap ditemui perintah ini maka lompatan pasti dilakukan.
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 operand2. CMP tidak
mempengaruhi nilai Operand1 dan Operand2, perintah CMP hanya akan mempengaruhi
flags register sebagai hasil perbandingan. Pada contoh progaram percabangan terdapat 2
buah bilangan yaitu bilangan A yang bernilai 67 dan bilangan B yang bernilai 66. Dimana
proses di JMP proses yang artinya langsung masuk ke proses. Kemudian pada proses
detdapat mov al,bil A dimana akan menginput bilangan A ke AL. kemudian ada CMP AL,
bil B dimana pada proses ini membandingkan bilangan pada AL yaitu bilangan A dnegan
bilangan B. kemudian karena bilA lebih besar daripada bil B maka yang akan terproses dan
tercetak adalah kal kurang dimana “blangan A elbih besar daripada bilangan B”. dan akan
ditampilkan pada layar hitam dengan perintah mov AH, 09, dan int 21h.

pada modul IV mikroprosesor juga membahas mengenai peruangan. Dimana


perulangan pada mikroprosesor sangat diperlukan dan menjadi bagian penting karena
dengan perulangan akan meminimalisir proses penulisan program dan meminimalisir
pemakaian memori yang terlalu banyak dalam menulis program. Ketika akan melakukan
proses perulangan sebaiknya memperhatikan kondisi apa yang menyebabkan perulangan
akan berakhir, banyaknya perulangan yang diinginkan, dan register apa yang terpengaruh
pada saat perulangan dilakukan. Perulangan dengan perintah LOOP digunakan untuk
melakukan proses yang berulang ulang. Pada contoh program perulangan terdapat MOV
cx, 3 yang berguna sebagai banyaknya perulangan yang akan dilakukan. Dimana pada
contoh program perulangan ini akan dilakukan sebanyak 3 kali perulangan. Kemudian
terdapat label ulang dimana akan dilakukan proses perulangan. MOV AH, 01H berfungsi
untuk meminta masukan pada keyboard, dan int 21 h adalah sebagai tempat terjadinya
perulangan, dan ada perintah LOOP ulang dimana akan terjadi proses perulangan. Dimana
akan kembali ke label ulang dan setiap terjadi perulangan maka mov cx akan berkurang 1
dan ketika mov cx sudah 0 maka proses perulangan sudah selesai.
IV.III Tugas Akhir

PROGRAM

.MODEL SMALL
ORG 100H
JMP PROSES
XX DB 10,10,13,' $'
X0 DB 10,13, 'PILIHAN MENU $'
X1 DB 10,13, '1. PENJUMLAHAN $'
X2 DB 10,13, '2. PENGURANGAN $'
X3 DB 10,13, '3. PERKALIAN $'
X4 DB 10,13, '4. PEMBAGIAN $'
X5 DB 10,13, '5. NOT$'
X6 DB 10,13, '6. AND$'
X7 DB 10,13, '7. OR$'
X8 DB 10,13, '8. XOR$'
X9 DB 10,13, '9. EXIT$'
X10 DB 10,13, 'MASUKKAN ANGKA PERTAMA (0-15) : $'
X11 DB 10,13, 'MASUKKAN ANGKA KEDUA (0-15) : $'
X12 DB 10,10,13,'KETERANGAN DESIMAL',9,'BINER $'
X13 DB 10,13, 'ANGKA PERTAMA : $'
X14 DB 10,13, 'ANGKA KEDUA : $'
X15 DB 10,13, 'HASIL NOT 1 : $'
X16 DB 10,13, 'HASIL NOT 2 : $'
X17 DB 10,13, 'HASIL AND : $'
X18 DB 10,13, 'HASIL OR : $'
X19 DB 10,13, 'HASIL X0R : $'
X20 DB 10,10,13,'MASUKKAN ANDA : $'
X21 DB 10,13, 'MASUKKAN ANGKA PERTAMA (000-999) : $'
X22 DB 10,13, 'MASUKKAN ANGKA PERTAMA (000-999) : $'
X23 DB 10,13, 'HASILNYA : $'
X24 DB 10,13, 'MASUKKAN ANGKA PERTAMA (00-99) : $'
X25 DB 10,13, 'MASUKKAN ANGKA PERTAMA (00-99) : $'
X26 DB 10,13, 'SISANYA : $'

ANGKA1 DW ?
ANGKA2 DW ?
HASIL DW ?
SISA DW ?
INP DB ?
INPUTX1 DB ?
INPUTX2 DB ?
INPUTXX DB ?
BIN1 DB ?
BIN2 DB ?
BIN3 DB ?
BIN4 DB ?
X DW 1000D
Y DB 100D
Z DB 10D

PROSES:
;TAMPILAN MENU
LEA DX,X0
MOV AH,9H
INT 21H
LEA DX,X1
MOV AH,9H
INT 21H
LEA DX,X2
MOV AH,9H
INT 21H
LEA DX,X3
MOV AH,9H
INT 21H
LEA DX,X4
MOV AH,9H
INT 21H
LEA DX,X5
MOV AH,9H
INT 21H
LEA DX,X6
MOV AH,9H
INT 21H
LEA DX,X7
MOV AH,9H
INT 21H
LEA DX,X8
MOV AH,9H
INT 21H
LEA DX,X9
MOV AH,9H
INT 21H

;MEMILIH
LEA DX,X20
INT 21H
MOV AH,1H
INT 21H
SUB AL,30H
MOV INP,AL
CMP AL,3
JB INPUT1
CMP AL,5
JB INPUT2
CMP AL,9
JB INPUT3
CMP AL,9
JE EN

INPUT1:
;INPUT ANGKA PERTAMA
LEA DX,X21
MOV AH,9H
INT 21H

MOV AH,1H
INT 21H
SUB AL,30H
MUL Y
MOV ANGKA1,AX

MOV AH,1H
INT 21H
SUB AL,30H
MUL Z
ADD ANGKA1,AX

MOV AH,01H
INT 21H
SUB AL,30H
SUB BX,BX
MOV BL,AL
ADD ANGKA1,BX

;INPUT ANGKA KEDUA


LEA DX,X22
MOV AH,9H
INT 21H

MOV AH,1H
INT 21H
SUB AL,30H
MUL Y
MOV ANGKA2,AX

MOV AH,1H
INT 21H
SUB AL,30H
MUL Z
ADD ANGKA2,AX

MOV AH,1H
INT 21H
SUB AL,30H
SUB BX,BX
MOV BL,AL
ADD ANGKA2,BX

MOV AL,INP
CMP AL,1H
JE TAMBAH
CMP AL,2H
JE KURANG

TAMBAH:
;HASIL
LEA DX,X23
MOV AH,9H
INT 21H

MOV AX,ANGKA1
ADD AX,ANGKA2
MOV HASIL, AX

SUB DX,DX
MOV AX, HASIL
DIV X
MOV HASIL, DX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

MOV AX, HASIL


DIV Y
SUB BX,BX
MOV BL, AH
MOV HASIL, BX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

MOV AX, HASIL


DIV Z
SUB BX,BX
MOV BL, AH
MOV HASIL, BX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

SUB AX,AX
MOV AX, HASIL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
JMP SPA

KURANG:
;HASIL
LEA DX,X23
MOV AH,9H
INT 21H

MOV AX,ANGKA1
SUB AX,ANGKA2
MOV HASIL, AX

SUB DX,DX
MOV AX, HASIL
DIV X
MOV HASIL, DX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

MOV AX, HASIL


DIV Y
SUB BX,BX
MOV BL, AH
MOV HASIL, BX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

MOV AX, HASIL


DIV Z
SUB BX,BX
MOV BL, AH
MOV HASIL, BX
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

SUB AX,AX
MOV AX, HASIL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
JMP SPA

INPUT2:
;ANGKA PERTAMA
LEA DX,X24
MOV AH,9H
INT 21H

MOV AH,1H
INT 21H
SUB AL,30H
MUL Z
ADD ANGKA1,AX

MOV AH,01H
INT 21H
SUB AL,30H
SUB BX,BX
MOV BL,AL
ADD ANGKA1,BX

;ANGKA KEDUA
LEA DX,X25
MOV AH,9H
INT 21H

MOV AH,1H
INT 21H
SUB AL,30H
MUL Z
ADD ANGKA2,AX

MOV AH,01H
INT 21H
SUB AL,30H
SUB BX,BX
MOV BL,AL
ADD ANGKA2,BX

MOV AL,INP
CMP AL,3H
JE KALI
CMP AL,4H
JE BAGI

KALI:
;HASIL
LEA DX,X23
MOV AH,9H
INT 21H

MOV AX,ANGKA1
MOV BX,ANGKA2
MUL BX
MOV HASIL, AX

SUB DX,DX
MOV AX,HASIL
DIV X
MOV HASIL,DX
ADD AL,30H
MOV DL,AL
MOV AH,2H
INT 21H

MOV AX,HASIL
DIV Y
SUB BX,BX
MOV BL,AH
MOV HASIL,BX
ADD AL,30H
MOV DL,AL
MOV AH,2H
INT 21H

MOV AX, HASIL


DIV Z
SUB BX,BX
MOV BL, AH
MOV HASIL, BX
ADD AL,30H
MOV DL,AL
MOV AH,2H
INT 21H

SUB AX,AX
MOV AX,HASIL
ADD AL,30H
MOV DL,AL
MOV AH,2H
INT 21H

JMP SPA

BAGI:
;HASIL
LEA DX,X23
MOV AH,9H
INT 21H

MOV AX,ANGKA1
MOV BX,ANGKA2
DIV BL
SUB BX,BX
MOV BL,AL
MOV HASIL, BX
SUB BX,BX
MOV BL,AH
MOV SISA,BX

MOV AX,HASIL
DIV Z
SUB BX,BX
MOV BL,AH
MOV HASIL, BX
MOV DL,AL
MOV AH,02H
INT 21H

SUB AX,AX
MOV AX,HASIL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H

LEA DX,X26
MOV AH, 09H
INT 21H

MOV AX,SISA
DIV Z
SUB BX,BX
MOV SISA, BX
SUB BX,BX
MOV BL,AH
MOV SISA,BX
ADD AL,30H
MOV DL,AL
MOV AH,2H
INT 21H

SUB AX,AX
MOV AX,SISA
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
JMP SPA

INPUT3:
;INPUT ANGKA KE-1
LEA DX,X10
MOV AH,9H
INT 21H

MOV AH,1H
INT 21H

SUB AL,30H
MOV BH,AL
MUL Z
MOV BH,AL
MOV AH,1H
INT 21H

SUB AL,30H
MOV BL,AL
ADD BH,BL
MOV INPUTX1,BH

;INPUT ANGKA KE-2


LEA DX,X11
MOV AH,9H
INT 21H

MOV AH,1H
INT 21H
SUB AL,30H
MOV BH,AL
MUL Z
MOV BH,AL
MOV AH,1H
INT 21H
SUB AL,30H
MOV BL,AL

ADD BH,BL
MOV INPUTX2,BH

KET:
LEA DX,X12
MOV AH,9H
INT 21H

ANGKAAA1:
;MENAMPILKAN BENTUK DESIMAL ANGKA KE-1
LEA DX,X13
MOV AH,9H
INT 21H
MOV AL,INPUTX1
MOV INPUTXX,AL
MOV CL,2H
JMP CONV

ANGKAAA2:
;MENAMPILKAN BENTUK DSIMAL ANGKA KE-2
LEA DX,X14
MOV AH,9H
INT 21H
MOV AL,INPUTX2
MOV INPUTXX,AL
MOV CL,3H
JMP CONV

PILIH:
MOV AL,INP
CMP AL,5H
JE NOT1
CMP AL,6H
JE ANDG
CMP AL,7H
JE ORG
CMP AL,8H
JE XORG

NOT1:
LEA DX,X15
MOV AH,9H
INT 21H

XOR AX,AX
MOV AL,INPUTX1
NOT AL
MOV INPUTXX,AL
MOV CL,1H
JMP CONV
NOT2:
LEA DX,X16
MOV AH,9H
INT 21H

XOR AX,AX
MOV AL,INPUTX2
NOT AL
MOV INPUTXX,AL
MOV CL,0H
JMP CONV

ANDG:
LEA DX,X17
MOV AH,9H
INT 21H

MOV AL,INPUTX1
MOV BL,INPUTX2
AND AL,BL
MOV INPUTXX,AL
MOV CL,0H
JMP CONV

ORG:
LEA DX,X18
MOV AH,9H
INT 21H

MOV AL,INPUTX1
MOV BL,INPUTX2
OR AL,BL
MOV INPUTXX,AL
MOV CL,0H
JMP CONV

XORG:
LEA DX,X19
MOV AH,9H
INT 21H

MOV AL,INPUTX1
MOV BL,INPUTX2
XOR AL,BL
MOV INPUTXX,AL
MOV CL,0H
JMP CONV

CONV:
;DEC
XOR AX,AX
MOV AL,INPUTXX
AAA
MOV BX,AX

MOV DL,BH
ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,BL
ADD DL,30H
MOV AH,2H
INT 21H

;BIN
MOV DL,9H
MOV AH,2H
INT 21H

XOR AX,AX
XOR BX,BX
MOV BL,2H
MOV AL,INPUTXX
DIV BL
MOV BIN4,AH
MOV AH,0
DIV BL
MOV BIN3,AH
MOV AH,0
DIV BL
MOV BIN2,AH
MOV AH,0
DIV BL
MOV BIN1,AH

MOV DL,BIN1
ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,BIN2
ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,BIN3
ADD DL,30H
MOV AH,2H
INT 21H
MOV DL,BIN4
ADD DL,30H
MOV AH,2H
INT 21H

MOV AL,CL
CMP AL,0H
JE SPA
CMP AL,1H
JE NOT2
CMP AL,2H
JE ANGKAAA2
CMP AL,3H
JE PILIH

SPA:

MOV ANGKA1,0D
MOV ANGKA2,0D
MOV HASIL,0D
MOV SISA,0D
MOV INP,0D
MOV INPUTX1,0D
MOV INPUTX2,0D
MOV INPUTXX,0D
MOV BIN1,0D
MOV BIN2,0D
MOV BIN3,0D
MOV BIN4,0D
XOR AX,AX
XOR BX,BX
XOR CX,CX
XOR DX,DX

LEA DX,XX
MOV AH,9H
INT 21H
JMP PROSES

END:
INT 20H
BAB V
Penutup
V.I Kesimpulan
1. Percabangan pada mikroprosesor adalah suatu proses merubah alamat dari index
pointer ke alamat yang diinginkan
2. Pada percabangan terdapat 2 percabangan, yaitu percabangan bersyarat dan
percabangan tidak bersyarat Percabangan tidak bersyarat adalah percabangan yang
dilakukan tanpa melihat isi dari penanda/flag apapun pada saat melakukan lompatan
ke alamat yang diberikan. Sedangkan Percabangan bersyarat adalah lompatan yang
dilakukan jika sebuah kondisi tertentu dipenuhi. CMP digunakan untuk
membandingkan operand 1 dengan operand 2. Terdapat jenis perintah lompatan yang
mengikuti perintah CMP, diantaranya adalah JA, JE,JNE, JB. Dimana JA lompat
ketika operand 1 lebih besar dari operand 2, JE akan lompat ketika operand 1 sama
dengan operand 2, JNE akan lompat ketika operand 1 tidak sama dengan operand 2,
dan JB akan lompat ketika operand 1 lebih kecil daripada operand 2.
3. Perintah perulangan pada mikroprosesor digunakan untuk melakukan proses secara
berulang ulang.
4. Perintah loop digunakan untuk melakukan proses secara berulang ulang, dimana
ketika diberi perintah loop maka akan kembali ke label yang diinginkan dan akan
terjadi proses secara berulang sesuai keinginan.
V.II Saran
Pada saat praktikum menurut saya sudah sangat baik, untuk penyampaian materi jelas dan
tidak tegang, jadi lebih mudah untuk menerima materi dan menyenangkan. Untuk
kedepannya cukup dipertahankan .
Daftar Pustaka

http://webriky.blogspot.com/2014/09/pengulangan-loop-pada-bahasa-assembly.html
PRAKTIKUM V
Prosedur dan Stack pada Mikroprosesor
Andhika Fitra Ramadhan (201811031); Cahyo Utomo (201811043);
Mulia Djuang (201811034); Eki Nur Afifah (201811043) S1 Teknik
Elektro, Institut Teknologi – PLN
cahyoutomo3@gmail.com

BAB I
Pendahuluan
I.I Tujuan
1. Memahami perintah dan proses operasi prosedur pada mikroprosesor
2. Dapat mendekalarasikan prosedur menggunakan PROC dan menutup prosedur
dengan ENDP

3. Dapat melakukan operasi pemanggilan prosedur dengan CALL dan mengembalikan


dengan ke program utama dengan RET
4. Memahami perintah dan operasi stack pada mikroprosesor
5. Dapat melakukan operasi stack dengan PUSH dan POP

I.II Alat dan Bahan


1. Komputer
2. Aplikasi Emu8086
BAB II
Landasan Teori
II.I Teori Modul
Pemahaman Prosedur
Prosedur merupakan suatu alat bantu yang sangat berguna. Dengan prosedur suatu
program yang besar bisa diselesaikan dengan lebih mudah. Proses pencarian
kesalahanpun akan lebih mudah bila digunakan prosedur. Prosedur diidentifikasi dengan
nama, diikuti dengan bagian baris tugas yang akan dikerjakan oleh prosedur. Akhir dari
prosedur ditunjukkan dengan pernyataan pengembalian.

Membuat dan memanggil prosesdur

Untuk membuat prosedur bisa menggunakan syntax seperti berikut

Nama_Prosedur PROC

{Program}

RET

Nama_Prosedur ENDP

"Nama_Prosedur" adalah nama dari prosedur yang kita definisikan sendiri. Untuk
memudahkan nama untuk prosedur bisa didefinisikan sesuai dengan fungsi dari prosedur
tersebut.

Perintah "RET” (Return) digunakan untuk mengembalikan Kontrol program pada


si pemanggil prosedur. Sedangkan untuk memanggil atau menjalankan prosedur
digunakan operasi CALL, dengan syntax

CALL NamaP
Menggunakan Prosedur

Sebagai contoh dari pemakaian prosedur akan kita lihat pada contoh program
mencetak karakter dengan prosedur

Pemahaman Stack

Bila kita terjemahkan secara bebas, stack artinya adalah 'tumpukan'. Stack adalah
bagian memory yang digunakan untuk menyimpan nilai dari suatu register untuk
sementara. Operasi-operasi pada assembler yang langsung menggunakan stack misalnya
pada perintah PUSH dan POP.

Menggunakan Stack

Stack dapat kita bayangkan sebagai sebuah tabung yang panjang. Sedangkan nilai
pada register dapat dibayangkan berbentuk koin yang dapat dimasukkan dalam tabung
tersebut. Operasi stack menggunakan prinsip LIFO(Last In First Out). Artinya data
terakhir yang disimpan akan dikeluarkan terlebih dahulu. Data yang disimpan adalah data
dari register 16 bit (AX, BX, CX dan DX), atau dalam arti besarnya tiap penyimpanan
sebesar 2 bytes. Data yang bisa ditampung pada register stack adalah sebesar 64 Kbytes.
Untuk memasukkan nilai suatu register pada stack, digunakan perintah push
dengan

syntax:

Untuk mengambil keluar koin nilai pada tabung stack, digunakan perintah pop
dengan

syntax:

Menggunakan Stack dan Prosedur

Perlu dipahami bahwa ketika menggunakan prosedur, maka seringkali dalam isi
program prosedur akan merubah nilai-nilai dari general purpose register. Bagaimana
seandainya kita masih membutuhkan nilai dari general purpose register dimana nilai
tersebut ingin digunakan nantinya? Disanalah dapat digunakan stack untuk menyimpan
data general purpose register tanpa membuat variabel baru untuk menyimpannya. Masih
banyak pula fungsi lain dari pada penggabungan penggunaan stack dan prosedur

Berikut contoh program mencetak kalimat dengan jumlah karakter berdasarkan


nilai register CX
II.II Teori Penunjang
Stack artinya adalah "tumpukan". Stack adalah bagian memori yang digunakan untuk
menyimpan nilai dari suatu register pada alamat offset terakhir suatu segmen secara
sementara. Stack biasa dipakai diawal subroutine

Operasi pada assembler yang menggunakan stack :

1. PUSH (Register 16 Bit)

3. PUSF

2. POP (Register 16 Bit)

4. POPF

Cara Kerja Stack

;Program dengan operasi yang mirip dengan stack;

.MODEL SMALL

.CODE

ORG 100h

TData : JMP Proses

Kal DB 'LANG LING LUNG $'

Ganti DB 13,10,'$'

Stacks DW ?

Proses :

LEA DX,Kal

MOV Stacks, DX

MOV AH,09

INT 21h

LEA DX,Ganti
INT 21h

MOV DX,Stacks

INT 21h

Exit : INT 20h

END TData

;Program dengan stack yang sebenarnya; .

MODEL SMALL

.CODE

ORG 100h

TData : JMP Proses

Kal DB 'LANG LING LUNG $'

Ganti DB 13,10,'$'

Proses :

LEA DX,Kal

PUSH,DX

MOV AH,09

INT 21h

LEA DX,Ganti

INT 21h

POP DX

INT 21h

Exit : INT 20h

END TData
Dgn perintah PUSH, nilai register DX akan disimpan pada stack. Contoh program dalam
bahasa Pascal yang menggunakan pengulangan dalam pengulangan dengan
memanfaatkan stack.

For i:= 10 DownTo 1 Do

For j:= 5 DownTo 1 Do

For k:= 3 DownTo 1 Do

Begin

End

MOV CX,10

i:

PUSH CX

MOV CX,5

j:

PUSH CX

MOV CX,3

k:

LOOP k

POP CX

LOOP j

POP CX

LOOP i

PUSH dan POP

Untuk memasukkan nilai suatu register pada stack, sintaksnya : PUSH Reg16Bit

Contoh :
MOV AX,12

MOV BX,33

PUSH AX

PUSH BX

Untuk mengambil data yang telah disimpan pada stack, sintaksnya : POP Reg16Bit

Contoh :

POP BX

POP AX

Perintah POP akan mengambil nilai pada stack yang paling atas dan dimasukkan pada
Reg16Bit. Operasi stack dinamakan LIFO Jika terbalik dalam mengambil nilai pada stack
dengan POP AX kemudian POP BX maka nilai register AX dan BX akan terbalik PUSH
& POP dipakai untuk copy 1 segmen register ke segmen register langsung

PUSH ES ; copy ES ke DS Æ lambat juka dibandingkan

POPK DS ; dengan instruksi MOV

PUSHF dan POPF

ƒ PUSHF digunakan untuk menyimpan nilai flag register F ke dalam Stack

ƒ POPF digunakan untuk mengambil isi stack kemudian disimpan di dalam flag register
F

file:///C:/Users/cahyo/Downloads/Stack.pdf
II.III Rangkuman

Stack artinya adalah "tumpukan". Stack adalah bagian memori yang digunakan untuk
menyimpan nilai dari suatu register pada alamat offset terakhir suatu segmen secara
sementara. Stack biasa dipakai diawal subroutine

Operasi pada assembler yang menggunakan stack :

1. PUSH (Register 16 Bit)

3. PUSF

2. POP (Register 16 Bit)

4. POPF

Dengan perintah PUSH, nilai register DX akan disimpan pada stack.

Untuk memasukkan nilai suatu register pada stack, sintaksnya : PUSH Reg16Bit

Untuk mengambil data yang telah disimpan pada stack, sintaksnya : POP Reg16Bit

POP AX

Perintah POP akan mengambil nilai pada stack yang paling atas dan dimasukkan pada
Reg16Bit. Operasi stack dinamakan LIFO Jika terbalik dalam mengambil nilai pada stack
dengan POP AX kemudian POP BX maka nilai register AX dan BX akan terbalik PUSH
& POP dipakai untuk copy 1 segmen register ke segmen register langsung
BAB III
Metode Praktikum
III.I Langkah Percobaan

1. Nyalakan komputer, kemudian jalankan Aplikasi emu8086

2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator

3. Kemudian screen shoot hasil program

4. Hasil screen shoot pada Program 1 - 2 dimasukkan dalam laporan praktikum

5. Kerjakan tugas akhir berdasarkan materi yang diberikan. Tambahkan keterangan


pada perintah-perintah yang diberikan pada mikroprosesor. Kerjakan masing-
masing.

6. Hasil tugas akhir di-screen shot dan dilampirkan pada laporan praktikum.
BAB IV
Hasil dan Analisa
IV.I Hasil Pengujian
Program 1

Program 2
IV.II Analisa Pembahasan
Pada praktikum Mikroprosesor modul V berjudul Prosedur dan Stack
Mikroprosesor. Pada praktikum mikroprosesor modul V bertujuan supaya praktikan dapat
memahami perintah dan proses operasi prosedur pada mikroprosesor, dan dapat
mendekalarasikan prosedur menggunakan PROC dan menutup prosedur dengan ENDP.
Dan supaya dapat melakukan operasi pemanggilan prosedur dengan CALL dan
mengembalikan dengan ke program utama dengan RET, dan supaya praktikan dapat
memahami perintah dan operasi stack pada mikroprosesor, dan tujuan terakhir dari
praktikum modul ini adalah supaya praktikan dapat melakukan operasi stack dengan PUSH
dan POP. Alat yang digunakanan pada praktikum adalah komputer yang digunakan untuk
tempat menginstall dan menjalankan aplikasi Emu8086. Dan aplikasi Emu8086 untuk
merancang dan menjalankan program.

Mikroprosesor adalah sebuah komponen rangkaian elektronik terpadu yang terdiri


dari rangkaian aritmatik, logik dan kontrol yang diperlukan untuk menjalankan fungsi-
fungsi sebuah CPU(Central Processing Unit)dari sebuah komputer digital. Rangkaian
elektronika terpadu tersebut dapat diterjemahkan dan menjalankan intruksi dari sebuah
program serta menangani operasi aritmatik. Mikroprosesor dikembangkan pada akhir 1970
sebagai hasil dari teknologi LSI (Large Scale Integration), suatu rangkaian elektronik
terpadu yang memungkinkan menggabungkan ribuan transistor, dioda, dan resistor pada
sebuah chip silikon sebesar 5mm persegi.

CPU adalah perangkat keras komputer yang memiliki tugas untuk menerima dan
melaksanakan perintah dan data dari perangkat lunak. Fungsi dari CPU adalah melakukan
operasi aritmatika dan logika terhadap data yang diambil dari memori atau dari informasi
yang diberikan melalui beberapa perangkat keras. Banyak sekali tipe dari mikroprosesor,
tetapi pada umumnya isi di dalam mikroprosesor adalah sama. Salah satu chip
mikroprosesor yang dikembangkan oleh perusahaan Intel pada tahun 1970-an adalah
mikroprosesoor tipe 8085 dan seri selanjutnya yaitu 8086. Perbedaan signifikan pada 8085
dan 8086 yaitu mikroprosesor 8085 merupakan tipe 8-bit sedangkan 8086 merupakan tipe
16-bit mikroprosesor. Pada praktikum akan digunakan mikroprosesor tipe 8086.

Isi mikro prosesor 8086 dibagi menjadi dua berdasarkan fungsinya, yaitu EU
(execution Unit) dan BIU (Bus Interface Unit). EU memberikan instruksi pada biu untuk
memulai dari mana data yang ingin di eksekusi diambil lalu diterjemahkan menjadi bahasa
mesin sebelum diexsekusi. Fungsinya adalah untuk mengontrol penggunaan data dan
intruksi pada dekoder dan ALU. Excecution unit tidak terhubung langsung dengan sistem
bus, tetapi dia memproses data melalui Bus Interance Unit seperti yang terlihat pada
gambar. BIU mengurus semua transfer data dan alamat antar Bus untuk EU seperti
pengiriman alamat, pengambilan intruksi dari memori, membaca dan menulis data ke port
maupun memori.

Bahasa rakitan atau lebih dikenal sebagai bahasa Assembly adalah bahasa
pemrograman tingkat rendah yang dipakai untuk memprogram perangkat keras seperti
mikroprosesor dan mikrokontroler. Bahasa yang digunakan adalah bahasa pemrograman
yang berisi intruksi-intruksi yang diterjemahkan oleh decoder menjadi bahasa mesin yang
dimengerti oleh komputer. Interupsi adalah suatu permintaan khusus kepada mikroprosesor
untuk melakukan sesuatu. Bila terjadi interupsi, maka komputer akan menghentikan
terlebih dahulu apa yang sedang dikerjakannya dan melakukan apa yang diminta oleh yang
menginterupsi. Pengertian dari input dan output pada mikroprosesor sama dengan
perangkat elektronik lainnya, yaitu input adalah masukan yang didapatkan oleh
mikroprosesor guna mengolah data yang dimasukkan sedangkan output adalah hasil olahan
data atau perintah yang diberikan dari mikroprosesor kepada lingkungannya.

Didalam pemrograman dengan bahasa assembler, bisa digunakan berbagai jenis


bilangan berdasarkan basisnya. Jenis bilangan yang bisa digunakan, yaitu: Bilangan
biner(basis 2), octal (basis 8) desimal (basis 10) dan hexadesimal (basis 16). Pemahaman
terhadap jenis-jenis bilangan ini adalah penting, karena akan sangat membantu kita dalam
pemrograman yang sesungguhnya. Penulisan penanda basis pada sebuah bilangan ditandai
dengan angka dipojok kanan bawah suatu bilangan, misalkan 10 adalah biner maka diulis
102, jika 10 adalah decimal ditulis 1010 dan heksadesimal 1016. Tetapi untuk
mendefisikan jenis bilangan pada Bahasa Assembly, bilangan tersebut diakhiri dengan
huruf B(Biner), O(Oktal), D(Desimal) dan H(Hexadesimal).

Sebenarnya semua bilangan, data maupun program itu sendiri akan diterjemahkan
oleh komputer ke dalam bentuk biner. Jadi pendefinisisan data dengan jenis bilangan
apapun (Desimal, dan hexadesimal) akan selalu diterjemahkan oleh komputer ke dalam
bentuk biner. Bilangan biner adalah bilangan yang hanya terdiri atas 2 kemungkinan
(Berbasis dua), yaitu 0 dan 1. Karena berbasis 2, maka pengkorversian ke dalam bentuk
desimal adalah menjumlahkan tiap suku yang tiap suku ke-n (n=0 dari paling kanan)
dikalikan dengan 2n .

Bilangan oktal adalah bilangan dengan basis 8, artinya angka yang dipakai hanyalah
antara 0 -7. Sama halnya dengan jenis bilangan yang lain, suatu bilangan oktal dapat
dikonversikan dalam bentuk desimal dengan menjumlahkan tiap suku yang tiap suku ke-n
(n=0 dari paling kanan) dikalikan dengan 8n . Tentunya jenis bilangan ini sudah tidak asing
lagi bagi kita semua. Bilangan Desimal adalah jenis bilangan yang paling banyak dipakai
dalam kehidupan sehari-hari, sehingga kebanyakan orang sudah akrab dengannya.
Bilangan desimal adalah bilangan yang terdiri atas 10 buah angka(Berbasis 10), yaitu
angka 0-9. Dengan basis sepuluh ini maka suatu angka dapat dijabarkan dengan
perpangkatan sepuluh. Bilangan hexadesimal merupakan bilangan yang berbasis 16.
Dengan angka yang digunakan berupa: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Dalam
pemrograman assembler, jenis bilangan ini boleh dikatakan yang paling banyak digunakan.
Hal ini dikarenakan mudahnya pengkonversian bilangan ini dengan bilangan yang lain,
terutama dengan bilangan biner dan desimal. Karena berbasis 16, maka 1 angka pada
hexadesimal akan menggunakan 4 bit.

Pada modul V praktikum mikroprosesor membahas tentang prosedur dan stack.


Dimana Prosedur merupakan suatu alat bantu yang sangat berguna. Dengan prosedur suatu
program yang besar bisa diselesaikan dengan lebih mudah. Proses pencarian kesalahanpun
akan lebih mudah bila digunakan prosedur. Prosedur diidentifikasi dengan nama, diikuti
dengan bagian baris tugas yang akan dikerjakan oleh prosedur. Akhir dari prosedur
ditunjukkan dengan pernyataan pengembalian. Arti dari stack adalah tumpukan. Dimana
stack adalah bagian memory yang digunakan untuk menyimpan nilai dari suatu register
untuk sementara. Operasi-operasi pada assembler yang langsung menggunakan stack
misalnya pada perintah PUSH dan POP. Stack dapat dibayangkan sebagai sebuah tabung
yang panjang. Sedangkan nilai pada register dapat dibayangkan berbentuk koin yang dapat
dimasukkan dalam tabung tersebut. Operasi stack menggunaan prinsip LIFO(Last First
Out). Artinya data terakhit yang disimpan akan dikeluarkan terlebih dahulu. Data yang
disimpan adalah data dari register 16 bit (AX, BX, CX dan DX), atau dalam arti tiap
penyimpanan sebesar 2 bytes. Data yang ditampung pada register stack adalah sebesar
64Kbytes. Untuk memasukkan nilai suatu register pada stack digunakan perintah PUSH,
sedangkan untuk mengambil keluar koin nilai pada tabung stack, digunakan perintah POP.
Perintah POP akan mengambil koin nilai pada stack yang paling atas dan dimasukkan pada
register 16 bit. Pada contoh program terdapat PUSH AX, PUSH BX, PUSH CX. Dimana
fungsi dari push ax adalah untuk menyimpan nilai AX pada stack, begitu pula dengan
PUSH BX DAN CX. Kemudian POP CX, BX, dan AX berfungsi untuk mengambil nilai
yang tersimpan pada stack, dimana nilai yang akan keluar adalah nilai yang paling atas atau
yang paling terakhir disimpan pada stack. Dimana ketika nilai CX adalah nilai yang paling
terakhit disimpan, maka yang paling pertama keluar adalah nilai CX.

Perludipahami bahwa ketika menggunakan prosedur, maka seringkali dalam isi


program prosedur akan merubah nilai-nilai dari general purpose register. dapat digunakan
stack untuk menyimpan data general purpose register tanpa membuat variabel baru untuk
menyimpannya. Pada program 2 digunakan untuk mencetak kalimat dimana akan tercetak
sesuai jumlah karakter yang diinginkan. Pada program JMP Proses, yang berfungsi untuk
langsung lompat dan memproses pada bagian Proses. Pada proses terdapat MOV cx, 24
berfungsi sebagai banyaknya perulangan yang akan dilakukan, dimana pada program ini
akan mencetak sebanuak 24 karakter. XOR BX,BX berfungsi untuk memastikan tidak ada
nilai pada register. Kemudian terdapat ulang dimana akan terjadi proses perulangan. Proses
akan mencetak satu persatu karakter dan akan ditampilkan pada layar hitam dimana proses
perulangan terjadi sebanyak 24 kali sehingga yang akan tercetak adalah “AKU SUKA
PRAKTIKUM MIKRO” dikarenakan spasi juga terhitung sebagai karakter maka dari itu
yang tercetak tidak sampai kalimat selesai.pada program juga terdapat PUSH dan POP.
Dimana fungsinya sama dengan program sebelumnya dimana PUSH untuk menyimpan
data semendara dan POP berfungsi untuk mengeluarkan data yang tersimpan.
IV.III Tugas Akhir

PROGRAM

.model small
.code
org 100h

Data: JMP Proses


T_Enter EQU 0dh
kal0 db 13,10,'Masukan Kata atau Kalimat $'
kal1 db 10,13,'$'
kal2 db 10,13,'Hasil Dari Kata atau Kalimat Kebalikannya $'
kal3 db 10,'$'
Buffer db 30,?,30 DUP (?)
Proses:
lea dx,kal0
mov ah,09h
int 21h

mov ah,09h
lea dx,kal1
int 21h

lea dx,Buffer
mov ah,0Ah
int 21h

mov ah,09h
lea dx,kal2
int 21h
mov ah,09h
lea dx,kal3
int 21h
lea BX,Buffer+1
Ulang:
cmp byte ptr [BX],T_Enter
JE Balikan
mov dl,[BX]
push bx
inc BX
JMP Ulang
Balikan:
mov dl,[bx]
cmp dl,Buffer+1
je Exit

mov ah,02h
int 21h
dec bx
jmp Balikan

Exit:
loop Data
BAB V
Penutup
V.I Kesimpulan
1. Untuk membuat prosedur bisa menggunakan “nama_prosedur” dan perintah “RET”
dimana “Nama_Prosedur” adalah nama dari prosedur yang kita defunisikan sendiri,
sedangkan “RET” digunakan untuk mengembalikan kontrol program pada si
pemanggil prosedur.
2. Operasi CALL digunakan untuk memanggil atau menjalankan prosedur.
3. Stack adalah bagian memory yang digunakan untuk menyimpan nilai dari suatu
register untuk sementara.
4. PUSH digunakan untuk menyimpan nilai pada stack dan POP berfungsi untuk
mengeluarkan nilai yang tersimpan pada stack. Dimana nilai yang akan keluar duluan
adalah nilai yang terakhir tersimpan.
V.II Saran
Pada saat praktikum menurut saya sudah sangat baik, untuk penyampaian materi jelas dan
tidak tegang, jadi lebih mudah untuk menerima materi dan menyenangkan. Untuk
kedepannya cukup dipertahankan .
Daftar Pustaka

file:///C:/Users/cahyo/Downloads/Stack.pdf

Anda mungkin juga menyukai