MIKROPROSESOR
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.
PENGERTIAN MIKROPROSESOR
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.
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
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.
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
• 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.
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.
- 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.
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.
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.
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
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.
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.
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
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
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 :
ADC Tujuan,Asal
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.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
Berikut akan kami berikan materi mengenai operasi Aritmatika Bilangan Biner, Oktal,
serta Heksadesimal.
Aritmatika Bilangan Binner merupakan beberapa operasi perhitungan yang terjadi dalam
bilangan biner.
1. Penjumlahan
2. Pengurangan
3. Perkalian
4. Pembagian
5. Bilangan Biner Bertanda
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.
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
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
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:
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).
Aritmatika Bilangan Binner merupakan beberapa operasi perhitungan yang terjadi dalam
bilangan biner.
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.
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.
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.
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
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
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
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
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
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.
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.
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)
Input dan Output pada Gerbang Logika hanya memiliki 2 level. Kedua Level tersebut
pada umumnya dapat dilambangkan dengan :
Berikut ini adalah Penjelasan singkat mengenai 7 jenis Gerbang Logika Dasar beserta
Simbol dan Tabel Kebenarannya.
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 yang menandakan Operasi Logika OR adalah tanda Plus (“+”). Contohnya : Z =
X + Y.
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.
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.
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.
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)
Input dan Output pada Gerbang Logika hanya memiliki 2 level. Kedua Level tersebut
pada umumnya dapat dilambangkan dengan :
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.
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.
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.
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:
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
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
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
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
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
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
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
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
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
;MENAMPILKAN HASIL 0R
MOV DX, OFFSET TULISHASILOR ; Print minta masukan
MOV AH, 09H
INT 21H
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
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
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
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
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
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
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.
syntax:
CMP Operand1,Operand2
- 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.
- 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.
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
LOOP Label_Tujuan
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
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
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.
.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
.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 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
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.
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.
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.
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.
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
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
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
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
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
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
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.
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:
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
3. PUSF
4. POPF
.MODEL SMALL
.CODE
ORG 100h
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
END TData
MODEL SMALL
.CODE
ORG 100h
Ganti DB 13,10,'$'
Proses :
LEA DX,Kal
PUSH,DX
MOV AH,09
INT 21h
LEA DX,Ganti
INT 21h
POP DX
INT 21h
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.
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
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
ƒ 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
3. PUSF
4. POPF
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
2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator
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.
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.
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.
PROGRAM
.model small
.code
org 100h
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