rakha15412@gmail.com
BAB I
PENDAHULUAN
1.1 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.
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.
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).
2.1.2.1 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.
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.
2.1.2.3 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.
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.
Kolom Editor
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 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.
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.
Syntax Highlight
INTERRUPT 21h - Service 02h
Write Character To Standard Output
Fungsi : Untuk mencetak satu buah karakter pada layar.
Register Input : Register Output : Tidak ada
AH = 02h
DL = Kode ASCII
Syntax Highlight
INTERRUPT 20h
Terminate Program
Fungsi : Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan kendali
sepenuhnya kepada DOS
Register Input : Tidak ada Register Output : Tidak ada
.MODEL SMALL
.CODE
ORG 100h
Proses :
MOV AH,09h ; Nilai servis untuk mencetak karakter
MOV AL,'A' ; AL = Karakter yang akan dicetak
MOV BH,00h ; Nomor Halaman layar
MOV BL,93h ; Warna atau atribut dari karakter
MOV CX,03h ; Banyaknya karakter yang ingin dicetak
INT 10h ; Laksanakan !!!
INT 20h ; Selesai ! kembali ke DOS
END Proses
Syntax Highlight
INTERRUPT 10h - Service 09h
Write Character And Attribute At Cursor Position
Fungsi : Mencetak karakter dan atribut pada posisi kursor.
Register Input : Register Output : Tidak Ada.
AH = 09h
AL = kode ASCII karakter
BH = nomor halaman
BL = atribut karakter
CX = jumlah pengulangan pencetakan
Penjelasan : Karakter kontrol akan dicetak sebagai karakter biasa.
.MODEL SMALL
.DATA
ORG 100H
MSG1 DB "ENTER YOUR CHARACTER : $" ;DB = Define Bytes
MSG2 DB 10,13, "THE CHARACTER IS $" ;DB bisa numerik atau text
.CODE
START:
MOV DX,OFFSET MSG1 ;OFFSET meminta alamat variabel
MOV AH,09H ;Nilai servis untuk mencetak karakter
INT 21H ;Cetak data pada alamat DX
MOV AH,01H ;Nilai servis untuk mencetak karakter
INT 21H ;Membaca masukan 1 karakter
MOV BL,AL ;Menyimpan isi AL ke BL
MOV DX,OFFSET MSG2 ;OFFSET meminta alamat variabel
MOV AH,09H ;Nilai servis untuk mencetak karakter
INT 21H ;Cetak data pada alamat DX
MOV DL,BL ;Menyimpan isi BL ke DL
MOV AH,02H ;Nilai servis untuk mencetak karakter
INT 21H ;Cetak karakter pada alamat DL
INT 20H ;Exit Program
END START
Syntax Highlight
INTERRUPT 21h - Service 01h
Read Character With Echo
Fungsi : Untuk membaca masukan 1 karakter dari keyboard dan menampilkannya ke layar. Fungsi
ini dapat dihentikan oleh penekanan tombol Ctrl+Break.
Register Input : Register Output :
AH = 10h AL = Kode ASCII
Catatan : Berbeda dengan fungsi dari BIOS, untuk membaca karakter khusus yang mempunyai
kode Extended, anda harus membacanya dua kali dengan fungsi dari OS ini.
Syntax Highlight
DB
Define Bytes
Fungsi : Mendefinisikan isi dari sebuah variabel
Register Input : Tidak Ada. Register Output :
Cara pakai :
NamaVariabel Data1, Data2, Data3... ;
Penjelasan : Jika data berupa string menggunakan tanda petik buka untuk memulai, ditutup juga
dengan tanda petik. Tanda dollar ($) merupakan akhir dari string
2.2 Teori Penunjang
Program adalah susunan atau urutan perintah-perintah sederhana yang diberikan kepada
komputer untuk memecahkan beberapa permasalahan.Jika sebuah program telah ditulis
dan dilakukan debuging, komputer akan dapat mengeksekusi program tersebut dengan
sangat cepat dan dengan cara yang sama setiap saat tanpa kesalahan.Kebanyakan orang
berpikir bahwa komputer adalah sebuah peralatanyang sangat komplek r sulit dipelajari,
don dapat berfikir melebihi manusia.Pernyataan ini terlolu berlebihan, karena komputer
hanya dapat bekerja jikaado perintah yang diberikan yang disebut program.Program
adalah susunan atau urutan perintah-perintah sederhana yang diberikan kepada komputer
untuk memecahkan beberapa permasalahan. Jikasebuah program telah ditulis dan
dilakukan debuging, komputer akan dapatmengeksekusi program tersebut dengan sangat
cepat dan dengan cara yangsama setiap saat tonpa kesalahan.Disinilah kehebatan
komputer, meskipun program tersusun dari perintah-perintah yang sang at sederhana,
hasil akhir sangat menakjubkan sebabkomputer dapat bekerja dengan kecepatan tinggi.
ntsruksi transfer data dapat menggunakan perintah LOAD atau MOVE,Instruksi
matematika sederhana menggunakan perintah ADD, SUBTRACT, MULTIPLY,
DEVIDE. Ada tiga tingkat level bahasa yang dapat digunakan untuk menulis program
pada sebuah mikrokomputer yaitu:~ Bahasa MESIN~ Bahasa ASSEMBLY~ Bahasa
Aras Tinggi (High LevelUntuk menjalcmkan program, sebuah mikrokomputer harus
memilikiprogram yang tersimpan dalam format biner pada suatu lokasi memori. Bahasa
mesin adalah bahasa dalam bentuk kode-kode biner sebagai sandi operasi (Operation
Code) dari sebuah mikroprosesor.Bahasa mesin adalah bahasa yang langsung
berhubungan dengan mikroprosesor yang ditulis dan dikembangkan dari set
instruksi.Tanpa bantuan set instruksi bahasa mesin sangat sulit dimengerti atau difahami.
Untuk dapat menulis bahasa mesin maka penguasaan set instruksi sebuah mikroprosesor
adalah wajib . programmer menuliskan program dalam bentuk bahasa assembly
kemudian menterjemahkan bahasa assembly yang ditulisnya menjadi bahasa mesin
sehingga dapat di load ke memori dan di run atau dijalankanPenterjemahan bahasa
assembly menjadi kode biner bahasa mesin dapat dilakukan secara manual atau
menggunakan program yang disebut dengan assemblerUntuk membuat proses
pemrograman menjadi lebih mudah,kebanyakan programmer menuliskan program dalam
bentuk bahasaassembly. Kemudian mereka menterjemahkan bahasa assembly yang
ditulisnya menjadi bahasa mesin sehingga dapat di load ke memori dan di runatau
dijalankan. Penterjemahan bahasa assembly menjadi kode biner bahasaMesin dapat
dilakukan secara manual atau menggunakan program yangdisebut dengan assembler.
Bahasa assembly menggunakan sejumlah mnemonik untuk merepresentasikan instruksi
–Instruksl.Mnemonik adalah singkatan dari suatu perintah atau instruksi sebagai piranti
untuk membantu ingatan. LOAD disingkat LD,ADD disingkat ADD,ADD With Carry
disingkat ADC,SUBTRACT disingkat SUB,SUBTRACT With Carry disingkat
SBC,COMPLEMENT disingkat CPL. Label adalah simbol atau kelompok simbol yang
digunakan untuk merepresentasikan alamat yang tidak diketahui secara spesifik pada
saat pernyataan-pernyataan ditulis.Label tidak dipersyaratkan dalam setiap pernyataan,
label dimasukkan bila diperlukan saja. Bagian operand dapat memuat nama Register,
alamat memori, alamat port, atau data immediate dari sebuah instruksi.Operand adalah
sasaran dari instruksi.Pada bagian operand terbagi menjadi dua bagian yaitu sumber data
yang disebut dengan Source dan tujuan data atau Destinasi.Bagian komentar biasanya
digunakan untuk memberi penjelasan singkat maksud atau sasaran dari instruksi
disebelah kirinya.Pada umumnya Source ada disebelah kanan dari Destinasi. Bagaimana
menterjemahkan program dalam bahasa assembly menjadi bahasa mesin yang siap
dieksekusi ke sistim mikroprosesor?Ada 2 Cara:Secara manual dengan menerjemahkan
setiap instruksi bahasa assembly menjadi bahasa mesin melalui set instruksi.Jika kita
sudah menulis program dalam bahasa assembly, pertonvocnnvobagoimana
menterjemahkan menjnadi bahasa mesin yang siap dieksekusi kesisfim mikroprosesor?
Ada dua jawaban atas pertanyaan ini. Pertama secaramanual dengan menerjemohkan
setiap instruksi bahasa assembly menjadibahasa mesin melalui set instruksi. Kemudian
kedua secora otomatis denganmenggunakan ASSEMBLER. Assembler adalah sebuah
program yang dapatdijalankan pado sebuah mikrokomputer atau pada sebuah
MicrocomputerDevelopment System.Secara otomatis dengan menggunakan sebuah
program yang dapat dijalankan pada sebuah mikrokomputer atau pada sebuah
Microcomputer Development System, sering disebut program ASSEMBLER. Cara lain
dalam menulis program pada mikrokomputer adalah dengan bahasa aras tinggi seperti
Bahasa C, bahasa Pascal, BASIC, FORTRAN,dan sebagainya.Secara umum bahasa aras
tinggi dapat dikelompokkan menjadi dua yaitu sebagai Compiler otau Interpreter.
Sesederhana apapun dari sebuah program dalam bahasa assembly memerlukan
penggunaan Computer Development System dan Program Development Tools.Sistim
tersebut biasanya memuat beberapa kilo byte RAM/RWM, Keyboard, Display, Floppy
Disk, Hard Disk, dan Emulator.Sesederhana apapun dari sebuah program dalam bahasa
assembly memerlukan penggunaan Computer Development System dan Program
Development Tools (contoh : MPF-7,Guru Mikro Soya, MidiCom). Sistim tersebut
biasanya memuat beberapa kilo byte RAM/RWM, Keyboard, Display, FloppyDisk,
Hard Disk, dan Emulator. Untuk mengembangkan program dalam Bahasa assembly
diperlukan tool sebagai berikut. Untuk mengembangkan program dalam bahasa
assembly diperlukan tool sebagai
berikut:Editor,Assembler,Linker,Locator,Debugger,Emulator. Sesederhana apapun dari
sebuah program dalam bahasa assemblymemerlukan penggunaan Computer
Development System dan ProgramDevelopment Tools (contoh : MPF-7,Guru Mikro
Soya, MidiCom). Sistim tersebutbiasanya memu at beberapa kilo byte RAM/RWM,
Keyboard, Display, Floppy Disk, Hard Disk, dan Emulator. Untuk mengembangkan
program dalam bahasaassembly diperlukan tool sebagai berikut. Editor adalah sebuah
program yang digunakan untuk mengetik atau mengedit program dalam bentuk
pernyataan-pernyataan.Contoh program editor : TV Demo, EDLlN, ALTER.Fungsi
utama program editor adalah untuk membantu programmer dalam membangun program
dalam bahasa assembly dalam bentuk format yang benar sehingga assembler dapat
menterjemahkannya menjadi bahasa mesin yang benar.Hasil atau bentuk program hasil
dari editor disebut Source Program. Assembler adalah program yang digunakan untuk
menterjemahkan mnemonik bahasa assembly menjadi kode biner yang benar untuk
setiap instruksinya.Assembler akan membaca File Source Program di disk dimana
source program tersebut disimpan setelah diedit menggunakan editor.Assembler
biasanya membaca file source program lebih dari sekali.Pertama, untuk menentukan
penggantian nama item data dan offset dari sebuah label, dan meletakkan informasi
tersebut dalam sebuah Symbol Table.Kedua, assembler membangkitkan kode biner (Op-
code) untuk setiap instruksi. Object File yang berisi kode biner untuk instruksi-instruksi
dan informasi tentang alamat instruksi.Assembler List File yang memuat pernyataan
bahasa assembly, kode biner untuk setiap instruksi, dan offset unluk setiap instruksi.File
yangkedua ini yang biasanya di cetak ke printer sebagai pegangan pada saat melakukan
testing dan troubleshooting. Lingker adalah program yang digunakan untuk
menggabungkan beberapa object file menjadi satu object file yang lebih besar.Biasanya
dalam membangun program yang sangat besar agar lebih efesient program tersebut
dipecah dan dibagi-bagi menjadi beberapa program yang lebih kecil yang disebut
dengan Modul.Setiap modul dapat ditulis, ditest, dan di debugged secara individual.Jika
semua modul-modul telah berfungsi dengan baik, selanjutnya dapat di linked menjadi
program dalam fungsinya yang besar.
Rangkuman :
Program adalah susunan atau urutan perintah-perintah sederhana yang diberikan kepada
komputer untuk memecahkan beberapa permasalahan.Jika sebuah program telah ditulis
dan dilakukan debuging, komputer akan dapat mengeksekusi program tersebut dengan
sangat cepat dan dengan cara yang sama setiap saat tanpa kesalahan.Kebanyakan orang
berpikir bahwa komputer adalah sebuah peralatanyang sangat komplek r sulit dipelajari,
don dapat berfikir melebihi manusia.Pernyataan ini terlolu berlebihan, karena komputer
hanya dapat bekerja jikaado perintah yang diberikan yang disebut program.Program
adalah susunan atau urutan perintah-perintah sederhana yang diberikan kepada komputer
untuk memecahkan beberapa permasalahan. Jikasebuah program telah ditulis dan
dilakukan debuging, komputer akan dapatmengeksekusi program tersebut dengan sangat
cepat dan dengan cara yangsama setiap saat tonpa kesalahan.Disinilah kehebatan
komputer, meskipun program tersusun dari perintah-perintah yang sang at sederhana,
hasil akhir sangat menakjubkan sebabkomputer dapat bekerja dengan kecepatan tinggi.
ntsruksi transfer data dapat menggunakan perintah LOAD atau MOVE,Instruksi
matematika sederhana menggunakan perintah ADD, SUBTRACT, MULTIPLY,
DEVIDE. Ada tiga tingkat level bahasa yang dapat digunakan untuk menulis program
pada sebuah mikrokomputer yaitu:~ Bahasa MESIN~ Bahasa ASSEMBLY~ Bahasa
Aras Tinggi (High LevelUntuk menjalcmkan program, sebuah mikrokomputer harus
memilikiprogram yang tersimpan dalam format biner pada suatu lokasi memori.
Assembler adalah sebuah program yang dapatdijalankan pado sebuah mikrokomputer
atau pada sebuah MicrocomputerDevelopment System.Secara otomatis dengan
menggunakan sebuah program yang dapat dijalankan pada sebuah mikrokomputer atau
pada sebuah Microcomputer Development System, sering disebut program
ASSEMBLER. Cara lain dalam menulis program pada mikrokomputer adalah dengan
bahasa aras tinggi seperti Bahasa C, bahasa Pascal, BASIC, FORTRAN,dan
sebagainya.Secara umum bahasa aras tinggi dapat dikelompokkan menjadi dua yaitu
sebagai Compiler otau Interpreter. Sesederhana apapun dari sebuah program dalam
bahasa assembly memerlukan penggunaan Computer Development System dan Program
Development Tools.Sistim tersebut biasanya memuat beberapa kilo byte RAM/RWM,
Keyboard, Display, Floppy Disk, Hard Disk, dan Emulator
BAB III
METODE PRAKTIKUM
Program 3.
Meminta Memasukkan dan Menampilkan Masukkan
4.2 Analisa Pembahasan
Pada pembahasan analisa kali ini untuk Praktikum Mikroprosesor Modul 1 berjudul
Pengantar Mikroprosesor dan Bahasa Pemograman Assembly (Interupsi dan Input/Output).
Sebagai dasarannya, kita perlu tau dulu apa itu bahasa pemograman Assembly. Bahasa Assembly
merupakan Bahasa pemograman tingkat rendah yang digunakan dalm pemograman komputer,
mikroprosesor, pengendali mikro dan perangkat lainnya yang dapat diprogram. Bahasa assembly
mengimplementasikan representasi atas kode mesin dalam bentuk symbol-simbol yang secara
relative lebih dapat dipahami oleh manusia. Ada pula kode ASCII (American Standard Code for
Information Interchange) yaitu suatu standar internasional dalam kode huruf dan symbol seperti
hex dan unicode tetapi ASCII lebih bersifat universal. Sebagai contoh kode 124 untuk karakter “|” .
Kode ASCII itu sendiri digunakan untuk mewakili karakter-karakter angka maupun huruf didalam
computer.
penulisan coding ada beberapa aturan yang harus kita ikuti dan untuk mendapatkan hasil yang
maksimal, Dalam penulisan program bagian atas merupakan bagian untuk melakukan bagian
identifikasi dan setting ( diluar tanda ; dan tulisan karakter berwarna hijau karena karakter warna
hijau merupakan tanda informasi program maupun informasi tiap-tiap instruksi).
Bagian awal tiap pengkodingan, terdapat .MODEL SMALL yang merupakan tanda
directive untuk memberi tahu kepada assembler bentuk memory yang kita gunakan dalam program
yang kita buat contohnya seperti tiny, small, medium, compact, large mauun huge. Bila yang
digunakan small, maka artinya data dan code yang digunakan oleh program kurang dari 1 segment
atau 64 kb. Selain itu ada .CODE yang merupakan directive untuk memberitau ke assembler bahwa
kita akan menggunakan code segmentnya disini, code segment digunakan untuk menyimpan
program yang nantinya akan dijalankan. Sedangkan .ORG 100h ini adalah perintah yang selalu
digunakan untuk memberitau assembler agar program ketika dijalankan ditaruh pada offset 100h
(255) bytes atau dengan kata lain kita menyediakan memori kosong 100h byte pada saat proram
dijalankan.
CPU 8086 mempunyai 8 general purpose register, dimana tiap register mempunyai
namanya sendiri- sendiri : AX-the accumulator register (dibagi menjadi AH/AL), BX-the base
address register (dibagi menjadi BH/BL), CX-the count register (dibagi menjadi DH/DL), SI-
source index register, DI-destination index register, BP base pointer, dan SP-stack pointer. Register
ditujuan untuk menyimpan angka (variabel). Karena register berada dalam CPU, mereka lebih
cepat dibandingkan dengan memory. Pengaksesan data dalam register biasanya tidak
membutuhkan waktu . Oleh karena itu kita harus menyimpan variabel dan register. Kumpulan
register sangat kecil dan hamper semua register mempunyai kegunaan yang khusus yang
penggunaanya dibatasi sebagaimana suatu variabel, tetapi register masih merupakan tempat yang
baik untuk menyimpan data sementara untuk suatu perhitungan. Walaupun mungkin menyimpan
data apapun dalam segmen register, tapi hal ini tidaklah dianjurkan . Segmen register mempunyai
tujuan yang sangat khusus, yaitu menunjuk blok memori yang dapat diakses.
Interupsi adalah suatu permintaan khusus kepada mikroprosesor untuk melakukan sesuatu.
Bila terjadi interupsi, maka komputer akan menghentikan dahulu apa yang sedang dikrjakannya
dan melakukan apa yang diminta oleh yang menginterupsinya. Interupsi dibagi menjadi 2 yaitu
interusi BIOS dan DOS. Interupsi 00h-1Fh (0-31) merupakan interupsi BIOS. Interupsi 20h-FFh
adalah interupsi DOS.
Praktikum dilakukan dengan menguji 3 contoh program yang tersedia pada modul. Mari
kita bahas satu persatu modul yang ada. Untuk program 1 ini bertujuan menampilkan huruf A ke
layar. Penggunaan mov AH diperuntukan untuk mencetak huruf. Karena yang dipakai adalah AH
02h, maka pasangan interupsinya adlaah INT 21h. Pengkodingannya cukup sederhana, karena
hanya untuk mencetak huruf A pada hasil running. Masuk keprogram 2 untuk mencetak karakter
beserta atribut. Penggunaan AH 09h untuk mencetak huruf dibarengi dengan interupsi nya yaitu
INT 10h. Terdapat BL 93h yang ditujukan untuk memberi warna background dan warna font
seperti yang ditampilkan pada hasil program. Kemudiah BH untuk nomor halaman hasi running,
namun apabila ada dua halaman makan hanya satu halaman yang akan terlihat pada layar komputer
kita. Disitu juga digunakan CX, dimana CX itu sendiri digunakan apabila kita ingin mencetak
karakter sebanyak yang kita mau. Pada program, CX 03h yang artinya nanti akan terjadi
pengulangan huruf A sebanyak tiga kali. Program 3 meminta memasukkan dan menampilkan
masukkan. Sesuai judul maka nanti hasil layar akan tertulis bahwa program meminta kita
menginput suatu karakter atau angka dan
menampilkan apa yang kita input tadi. Dari program 3 ini kita tau bahwa penempatan .CODE
kemudian ORG 100h tidak akan sama dengan .DATA baru kemudian ORG 100h. Program tidak
akan berjalan apabila seperti itu. Penggunaan huruf kapital maupun tidak kapital juga tidak
memengaruhi jalannya program sebagaimana telah saya buktikan pada lampiran diatas. Pada
program 3 ini agak berbeda dengan dua program sebelumnya karna program 3 ini menggunakan
format pengkodingan dari kode ASCII jadi lebih singkat apabila kita perhatikan pada program
sebelumnya.
BAB V
PENUTUP
5.1 Kesimpulan
5.2 Saran
o Saya pribadi berharap agar penjelasan di dalam praktikum nya dan pemberian tugas
akhir nya seimbang,karena saya pribadi atau mungkin teman-teman yang lainnya
belum dapat memahami sepenuhnya
MODUL II
rakha15412@gmail.com
BAB I
PENDAHULUAN
1.1 Tujuan
1. Mampu menjelasakan 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
BAB II
LANDASAN TEORI
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 :
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.
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 :
2.1.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:
Hasil penjumlahan akan ditampung pada register AX:CX yaitu ACF13568h. Adapun flag-flag
yang terpengaruh oleh perintah ADD dan ADC ini adalah CF,PF,AF,ZF,SF dan OF.
2.1.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.
Contoh Program 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.1.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:=Tujuan-Asal-CF).
2.1.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.
Contoh Program 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.1.5 PEMBAGIAN
Operasi pada pembagian pada dasarnya sama dengan perkalian. Untuk operasi pembagian
digunakan perintah DIV dengan syntax:
DIV Sumber
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.
Sedangkan untuk eksekusi instruksi merujuk pada contoh dari ekspresi aritmatika berikut: AFD9h -
((40h+30h+2A6h)*5h) dituliskan dalam op-code seperti ini:
a. MOV AX 0040
b. MOV BX 0030
c. MOV BX 02A6
d. ADD AX BX
e. ADD AX CX
f. MOV BX 0005
g. MUL BX
h. MOV BX AX
i. MOV AX AFD9
j. SUB AX BX
Rangkuman
Pengalamatan mikroprosesor adalah bagian yang tidak terpisahkan dari ranah penelitian arsitektur
dan organisasi computer. Pengalamatan ini juga membahas tentang komponen penyusun sistem
komputer antar interkoneksi serta tentang unit-unit operasional sedangkan di arsitektur komputer
akan membahas tentang atribut sistem komputer yang berterkaitan dengan seorang programmer.
Penelitian ini diangkat untuk meneliti peran operasi aritmatika menggunakan microprosessor
8086/8088. Peran sangat tidak lepas dari kata prosesor yang biasa disebut dengan otaknya
computer. Apabila suatu komponen PC biasanya memiliki fungsi sebagai pentransmisi data,dan
professornya memiliki fungsi untuk menghitung dan menentukan segala aktifitas.
Mikroprosesor menurut teknologi bisa dikumpulkan berdasarkan jumlah dari bit data,berdasarkan
kemampuan atau karakteristik mikroposesor serta struktur dan fungi dari mikroprosesor itu
sendiri.Memiliki jumlah bit data yang bisa do mulai dari 1 bit,4bit,8bit,lalu 16bit kemudian 32bit
selanjutnya 64 bit. Prosessor biasanya mempunyai alamat bus sebanyak kira-kira 20 bit, memiliki
arti bahwa bisa mencapai alamat sampai 1.048.575 lokasi. Berdasarkan Heksadesimal, angka
seperti itu dikatakan 00000 hingga dengan FFFFF merupakan alamat fisik dari sebuah
microprosessor. Jika 8086 serta 8088 memiliki alamat bus yang terdiri dari 20 bit, maka secara
otomatis penulisan fisik alamatnya yang ada 5 bit dari Heksadesimal. Berdasarkan latar belakang
diatas akan diperlukan penelitian tentang pengalamatan mikroprosesor 8086/8088 menggunakan
operasi aritmatika.
Metode penelitian yang digunakan adalah metode manual dan eksekusi program. Berikut metode
manual dalam pembuatan Op-Code: Tentukan perintah program nya yang akan di buat kode
operasi. dibuat Contoh : MOV AX,BX. Kita ambil salah satu dari pilihan data sheet di tabel yang
sejalur dengan perintah program yang akan dibuat. Tuliskan kode instruksinya. Contoh:
Register/Memory from/to Register yaitu 1000 10dw mod reg r/m. Variabel-variabel seperti
d,w,mod dll kita ganti dengan angka biner yang cocok. kemudian dilanjutkan ke pengkonversian
biner ke heksadesimal. Hasilnya 100010 1111000111 heksademilanya menjadi 8BC7. Jadi kode
operasinya adalah 8BC7 .
Hasil dari metode diatas yaitu kita dapat menemukan proses atau cara untuk eksekusi instruksi.
Kita juga bisa melihat contoh ekspresi aritmatika yang kemudian di tuliskan dalam bentuk Op
Code. Pada bagian ini diterangkan dahulu pengertian Op Code. Op Code diartikan menjelaskan
atau mendeskripsikan jenis operasi yang akan dikerjakan. . Kode Operasi tersebut berbentuk Biner.
Pada suatu Bidang, Op Code merupakan suatu bagian dari instruksi bahasa mesin dan menentukan
jenis operasi yang akan dilaksanakan. Selain itu, intruksi tersebut menentukan data yang akan
memproses, berupa Operand.
BAB III
METODE PRAKTIKUM
BAB IV
HASIL DAN ANALISA
4.1 Hasil Pengujian
Program 1 Penambahan
Program 2 Pengurangan
Program 3 Perkalian
Program 4 Pembagian
4.2 Analisa Pembahasan
Setelah selesai membahas dasar – dasar dalam membuat perintah dengan Bahasa assembler dalam
emu8086, selanjutnya kita akan melakukan praktikum tentang operasi aritmatika dalam
mikroprosesor di modul kedua ini. Aritmatika adalah tentang penjumlahan, pengurangan,
perkalian, dan pembagian. Dalam program yang pertama akan di kerjakan yaitu tentang
penjumlahan. Penjumlahan dalam mikroprosesor ada tiga perintah, dan dalam program ini ketiga
perintah tersebut akan di masukkan sekaligus yang bekerja secara berurutan. Program ini, hanya
kita lihat dalam registernya saja karena kita tidak menampilkan nya dalam layar hitam, sehingga
untuk melihat prosesnya dengan menekan single run hingga sampai ke program terakhir. Program
pertama ini dimulai dari .mode small, .code, dan org 100h. Kemudian masuk ke dalam proses,
dimana pertama melakukan perintah Add AH, AL yang berarti AH menjadi tujuan dan AL akan di
tambahkan ke AH menjadi AH = AH + AL, dimana AH sendiri memiliki nilai 15h, itu dilihat dari
perintah sebelumnya mov AH, 15h dan AL bernilai 4 yang juga berasal dari perintah sebelumnya
mov AL, 4h. Dari register setelah kita mengsingle run hingga perintah mov AX, 1234h, perintah
Add AH, AL menghasilkan nilai 19h. Kemudian beralih ke perintah Add kedua yaitu Add AX, BX,
yang berarti AX = AX + BX. Dengan nilai masing – masing AX dan BX dengan perintah nya
adalah mov AX, 1234h bernilai 1234h, dan mov BX, 0F221h bernilai 0F221h, sehingga bila kedua
angka tesebut dijumlahkan dilihat dari register seteleh mengsingle run hingga mov AX, 1234h
yang kedua bernilai 0455h, sebenarnya nilai ini salah di bagian 0 karena seharusnya bernilai 16
tetapi karena nilai tersebut adalah 17 bit sementara batas dari penjumlahan ini adalah 16 bit
sehingga sisa 1 tersebut di pindahkan ke carry flag. Kemudian masuk ke perintah gabungan dari
ADC dan ADD, dimana yang dikerjakan pertama adalah perintah Add yaitu Add CX, DX yang
berarti CX = CX = DX karena CX merupakan tujuan, keduanya bernilai mov CX, 5678h = 5678h
dan mov DX, 0DEF0h = 0DEF0h sehingga bila dijumlahkan dan terlihat juga dalam register
menjadi 3568h pada CX. Tentunya nilai CX ini memiliki nilai 1 untuk carry flag karena dari hasil
penjumlahan tersebut melebihi dari 16 bit sehingga 1 bit nya disimpan di carry flag, yang mana
dengan penjumlahan dengan ADC, carry flag akan di pakai untuk menambahkan nilai tujuan.
Dimana setelah ADD CX, DX, kemudian menjumlahkan ADC AX, BX yang berarti AX = AX +
BX + CF, AX menjadi tujuan dan BX serta CF akan dijumlahkan dengan AX. Dengan nilai dari
keduanya yaitu mov AX, 1234 h = 1234h dan mov BX, 9ABCh = 9ABCh, serta CF bernilai 1 yang
merupakan kelebihan bit dari perintah ADD sebelumnya. Menjadikan nilai dari AX dalam register
adalah ACF1, dimana satu tersebut berasal dari carry flag, sehingga dalam carry flag tidak lagi
memiliki kelebihan angka. Setelah kedua perintah ADD dan ADC kemudian masuk ke perintah
ketiga yaitu INC yang hanya akan menambahkan nilai tujuan dengan 1, dalam program ini di
masukkan INC AL, yang mana AL akan di tambahkan dengan 1 menjadi AL = AL + 1. AL nya
sendiri memiliki nilai dari hasil penjumlahan ADC sebelumnya yaitu ACF1 sehingga nilai AL
menjadi ACF2 dalam register setelah mengsingle run program hingga akhir karena hanya
ditambahkan 1 dengan perintah INC. Program kedua membuat operasi pengurangan dengan ketiga
operasi nya yaitu SUB, SBB, dan DEC. sama saja fungsi ketiganya dengan ketiga operasi
penjumlahan diatas, namun operasi ini untuk pengurangan. Dalam program kedua proses dimulai
dengan sub AH, AL yang mana akan mengurangkan AH dengan AL karena AH adalah tujuan,
menjadi AH = AH – AL. dengan nilai keduanya adalah mov AH, 15h = 15h dan mov AL, 4h = 4h
menjadikan hasil dari pengurangan keduanya yang terlihat dalam register adalah 11h pada AH.
Begitu pula yang terjadi pada perintah sub kedua yaitu AX, BX namun hasil dari AX = AX – BX
ini memiliki kelebihan yang akan di simpan ke carry flag, karena nilai keduanya mov AX, 1234h =
1234h dan mov BX, F221h = F221h dan hasilnya adalah 2013h pada AX dan CF berisi 1.
Diteruskan ke perintah selanjutnya gabungan dari SUB dan SBB. Sub ketiga sub CX, DX pun
menghasilkan kelebihan bit yang kemudian di simpan di carry flag. Yang kemudian carry flag ini
dipakai oleh SBB yang akan mengurangi tujuan dengan carry flag dan nilai yang lain, dilihat dari
perintah sbb AX, BX yang mengurangi tujuan AX dengan BX dan CF atau dalam rumus menjadi
AX = AX - BX - CF. Dengan nilai ketiganya mov AX, 1234h = 1234h dan mov BX, 0001h =
0001h, serta carry flag bernilai 1 dari kelebihan hasil perintah SUB sebelumnya. Menjadikan hasil
dari sbb ini adalah 1232h dalam register AX. Setelah melalui SUB dan SBB kemudian masuk ke
perintah ketiga yaitu DEC yang akan mengurangkan tujuan hanya dengan 1. Dalam program yang
menjadi tujuan adalah AL, dilihat dari DEC AL, yang mana nilai AL sendiri berasal dari hasil
perintah SBB sebelumnya yaitu 1232h. menjadikan hasil dari pengurangan DEC AL adalah 1231
dalam register karena hanya dikurangi 1 saja. Kemudian beralih ke program perkalian dan
pembagian, masing – masing memakai perintah yang berbeda. MUL untuk perkalian dan DIV
untuk pembagian. Perkalian mengenal high dan low, high untuk 4 angka dari kanan dan low untuk
4 angka dari kiri. Sementara pembagian mengenal hasil dan sisa, dimana hasil pembagian
ditunjukkan dalam hasil dan apabila bersisa atau ada angka di belakang koma maka angka di taruh
dalam sisa. Pada program perkalian dan pembagian ini setelah memasukkan keseluruhan perintah,
pada saat di single run saat sampai di ‘jmp proses’ apabila kita mensingle run lagi maka perintah
akan lompat ke bagian proses karena itu merupakan kegunaan dari Jmp. Untuk perintah di bawah
‘Jmp proses’, seperti A DW 01EFH, B DW 02EFH, HSLLO DW ?, HSLLI DW ?, dan A DW
01EFh, B DW 2, Hsl DW ?, Sisa DW ? merupakan variable yang akan di pakai. A dan B menjadi
variable tetap karena diberikan nilai, pada perkalian A bernilai 1EFH dan B 2EFH dan pembagian
A = 1EFH dan B = 2. Sementara HSLLO dan HSLLI pada perkaliaan dan Hsl dan sisa pada
pembagian sebagai variable bebasnya karena nilai di dalam nya akan di isi oleh hasil perkalian
ataupun pembagian dari A dan B. pada proses perkalian awalnya nilai A di taruh ke AX dengan
mov AX, A kemudian langsung dikalikan dengan B dengan MUL B. hasilnya akan dibagi menjadi
dua bagian dengan tempat penyimpan yang berbeda mov HSLLO, AX untuk low pada AX dan
mov HSLLI, DX untuk high pada DX. Terlihat hasil perkalian A dan B(1EFH X 2EFH) pada saat
mensingle run hingga akhir, hasil dari high yang ada pada DX adalah 0005 dan low pada AX
adalah ACF1. Untuk proses pembagian, awalnya dengan menjadikan DX menjadi 0 terlebih dahulu
dengan SUB DX, DX yang berarti DX = DX – DX. Mov AX, A nilai dari A di masukkan ke AX
kemudian dibagi langsung dengan B dengan DIV B hasilnya ditaruh dalam AX untuk hasil dengan
mov hsl, AX dan sisa dalam DX dengan mov sisa, DX. Yang mana hasil pembagian A dengan B
( 1EFH : 2H ) dilihat dari register AX yaitu F7 untuk hasil dan pada DX yaitu 0001 untuk sisa.
Pada angka diperkalian dan pembagian dibelakang nya terdapat huruf H untuk menandakan bahwa
angka tersebut adalah Hexadesimal, untuk menandakan decimal sendiri kita dapat memakai huruf
D dibelakang angka tersebut. Untuk program kreasi, saya bersama kelompok saya berdiskusi
mengejakantugas tersebut dan didapat program seperti screen shot yang dilampirkan. Semua
program memakai cara program ketiga pada modul 1 untuk menginput dan program operasi
aritmatika. Pada program penambahan dan pengurangan kami membuat angka yang dapat di input
hanya 2 untuk A dan B nya. Sehingga untuk dapat menginput 2 angka tersebut dengan membuat
masing masing perintah dalam 1 kelompok tersebut semisal A. Jadi pada A dimasukkan mov
ah,01h, int 21h, mov bl,al, sub bl,30h untuk dapat menginput angka pertama, dan mov ah,01h, int
21h, mov bh,al, sub bh,30h untuk dapat menginput angka kedua, kemudian untuk B dilakukan hal
yang sama seperti pada A. Namun keduanya berbeda pada output nya, agar dapat menjadikan nya
penjumlahan maka dipakai add untuk operator dan pengurangan memakai sub. Untuk diperhatikan
pada pada program penjumlahan kami hanya dapat menjumlahkan masing – masing, dan tidak
dapat lebih dari 10 maksudnya semisal ada 35 + 56 yang seharusnya 91 namun yang keluar 8/
karena penjumlahan 5 + 6 = 11 sehingga menjadi error. Begitu juga pada pengurangan tidak dapat
mengurangkan angka pertama angka yang lebih kecil dengan angka kedua, seperti 84 – 46 yang
seharusnya 38 tetapi menjadi 4/ pada tampilannya. Dan untuk perkalian dan pembagian di program
kreasi tetap menggunakan mul untuk perkalian dan div untuk pembagiannya dimana ditambahkan
program input juga agar dapat memasukkan angka dan mendapatkan hasil dari perkalian atau
pembagian angka tersebut.
4.3 Tugas Akhir
Program Penambahan
Program Pengurangan
Program Pembagian
Program Perkalian
BAB V
PENUTUP
5.1 Kesimpulan
o Kita dapat mengetahui proses dan perintah dari operasi aritmatika di dalam
mikroprosesor
o Kita dapat mengerti dari proses menjalankan operasi
penambahan,pengurangan,perkalian dan juga pembagian.
5.2 Saran
o Saya pribadi berharap agar penjelasan di dalam praktikum nya dan pemberian tugas
akhir nya seimbang,karena saya pribadi atau mungkin teman-teman yang lainnya
belum dapat memahami sepenuhnya.
Daftar Pustaka :Sumber : file:///C:/Users/user/Downloads/342-1271-2-PB.pdf
MODUL III
rakha15412@gmail.com
BAB I
Pendahuluan
1.1 Tujuan :
2. Dapat melakukan operasi logika NOT, AND, OR dan XOR pada mikroprosesor
1. Komputer
2. Aplikasi Emu8086
BAB II
LANDASAN TEORI
Operasi Logika
Gerbang NOT
Operator NOT akan menginvers suatu nilai seperti yang terlihat pada table dibwah ini.
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 :3F
_______________________ NOT
Hexadesimal :C0
.MODEL SMALL
ORG 100H
.CODE
START:
MOV AL,3FH ;AL = 3FH 0011 1111
NOT AL ;AL = C0H 1100 0000
INT 20H ;Exit Program
END START
Gerbang AND
Operator AND akan menghasilkan nilai nol bila salah satu operandnya bernilai nol. Dan
hanya akan bernilai satu bila kedua operandnya bernilai satu.
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.
.MODEL SMALL
ORG 100H
.CODE
START:
MOV AL,3FH ;AL = 3FH 0011 1111
MOV BL,5BH ;Bl = 5BH 0101 1011
AND AL,BL ;AL = 1BH 0001 1011
INT 20H ;Exit Program
END START
Gerbang OR
Operator logik OR akan menghasilkan nilai nol bila kedua operannya bernilai nol dan satu bila
salah satunya bernilai satu.
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.
Program 3. Operasi OR
.MODEL SMALL
ORG 100H
.CODE
START:
MOV AL,3FH ;AL = 3FH 0011 1111
MOV BL,1AH ;Bl = 3AH 0101 1010
OR AL,BL ;AL = 7FH 0111 1111
INT 20H ;Exit Program
END START
Gerbang XOR
Operator XOR akan menghasilkan nol untuk dua nilai yang sama nilainya dan satu untuk yang
berbeda.
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.
.MODEL SMALL
ORG 100H
.CODE
START:
MOV AX,0A12H ;AX = 0A12H 0000 1010 0001 0010
XOR AX,AX ;AX = 0000H 0000 0000 0000 0000
INT 20H ;Exit Program
END START
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.
Akan menghasilkan nilai 07h pada register AX. Operasi detilnya dapat dilihat
di bawah ini.
Operasi Logika
• Operasi manipulasi bit dan logika merupakan salah satu operasi yang paling sederhana
dalam bahasa mesin.
• Operasi bit dan logika pada umumnya dipergunakan untuk menyederhanakan akses ke port
– port maupun register – register.
• Misalnya untuk menghidupkan sebuah pin pada mikroprosesor maka cukup menghidupkan
bit yang bersangkutan tanpa perlu mengubah keseluruhan isi register port tersebut.
• Adapun operasi bit dan logika yang ada dalam bahasa mesin antara lain : NOT, AND, OR,
XOR, TEST, SHR, SHL.
NOT
NOT variabel
• Hasil dari operasi NOT akan disimpan di dalam register variabelnya sendiri.
AND
• AND merupakan operasi logika di mana keluaran akan bernilai 1 jika kedua masukannya
bernilai 1 juga
• Data di register Tujuan akan di – AND dengan data pada register Sumber, untuk
selanjutnya hasilnya akan disimpan di Tujuan
OR
• OR merupakan operasi logika di mana keluaran akan bernilai 1 jika salah satu masukan
bernilai 1 juga.
OR Tujuan, Sumber
• Data di register Tujuan akan di – OR dengan data pada register Sumber, untuk selanjutnya
hasilnya akan disimpan di Tujuan
XOR
• XOR merupakan operasi logika di mana keluaran akan bernilai 1 jika kedua masukannya
berbeda nilainya dan bernilai 0 jika kedua masukannya sama nilainya.
• Data di register Tujuan akan di – OR dengan data pada register Sumber, untuk selanjutnya
hasilnya akan disimpan di Tujuan
TEST
• TEST merupakan operasi untuk mengetes suatu data, apakah sama atau tidak. Sama dalam
hal ini bisa diartikan memiliki pola bit yang sama.
• TEST tidak mengubah nilai pada operan-operannya, tapi mengubah nilai pada register flag.
• Bit-bit flag yang berubah yaitu : CF, OF, PF, ZF, SF, dan AF.
PERGESERAN BIT
• Operasi penggeseran bit dalam bahasa mesin yaitu Shift Right(SHR), Shift Left(SHL),
Rotate Right(RR), dan Rotate Left(RL).
• Shift Right merupakan operasi bit di mana bit-bit data akan digeser ke kanan sebanyak yang
telah ditentukan pada Operan2.
• Sedangkan SHL merupakan operasi kebalikan dari SHR. Shift Left merupakan cara lain
untuk melakukan perkalian berbasis 2
CONTOH SHL DAN SHR
.Model Small
.Code
ORG 100h
Proses:
MOV CL, 3
SHR AX, CL
MOV CL, 3
SHL AX, CL
INT 20h
End Proses
• Rotate Left (ROL) merupakan operasi bit di mana bit-bit datanya akan diputar ke kiri
sebanyak Operan2 kali.
• Operasi ini hampir sama dengan SHL, namun ROL tetap mempertahankan bit asli datanya.
• Rotate Right (ROR) merupakan operasi bit di mana bit-bit datanya akan diputar ke kanan
sebanyak Operan2 kali.
• Operasi ini hampir sama dengan SHR, namun ROR tetap mempertahankan bit asli datanya.
.Code
ORG 100h
Proses:
MOV CL, 3
ROR AX, CL
MOV CL, 3
ROL AX, CL
INT 20h
End Proses
Rangkuman:
Operasi manipulasi bit dan logika merupakan salah satu operasi yang paling sederhana dalam
bahasa mesin. Operasi bit dan logika pada umumnya dipergunakan untuk menyederhanakan akses
ke port – port maupun register – register. Misalnya untuk menghidupkan sebuah pin pada
mikroprosesor maka cukup menghidupkan bit yang bersangkutan tanpa perlu mengubah
keseluruhan isi register port tersebut. Adapun operasi bit dan logika yang ada dalam bahasa mesin
antara lain : NOT, AND, OR, XOR, TEST, SHR, SHL. NOT digunakan untuk menghasilkan
inverting dari bit-bit masukannya,dan hasil dari operasi NOT akan disimpan di dalam register
variabelnya sendiri. AND merupakan operasi logika dimana keluaran akan bernilai 1 jika kedua
masukannya bernilai satu juga. OR merupakan operasi logika dimana keluaran akan bernilai 1 jika
salah satu masukan bernilai 1 juga. XOR merupakan operasi logika dimana keluaran akan bernilai
1 jika kedua masukannya berbeda nilainya dan bernilai 0 jika kedua masukannya sama nilainya.
TEST merupakan operasi untuk mengetes suatu data,apakah data tersebut sama atau tidak. Sama
dalam hal ini bisa diartikan memiliki pola bit yang sama. TEST tidak mengubah nilai pada operan-
operannya,tapi mengubah nilai pada register flag. Operasi penggeseran bit dalam bahasa mesin
yaitu Shift Right(SHR), Shift Left(SHL), Rotate Right(RR), dan Rotate Left(RL). Shift Right
merupakan operasi bit di mana bit-bit data akan digeser ke kanan sebanyak yang telah ditentukan
pada Operan2. Sedangkan SHL merupakan operasi kebalikan dari SHR. Shift Left merupakan cara
lain untuk melakukan perkalian berbasis 2. Rotate Left (ROL) merupakan operasi bit di mana bit-
bit datanya akan diputar ke kiri sebanyak Operan2 kali. Operasi ini hampir sama dengan SHL,
namun ROL tetap mempertahankan bit asli datanya. Operasi ini hampir sama dengan SHR, namun
ROR tetap mempertahankan bit asli datanya. Rotate Right (ROR) merupakan operasi bit di mana
bit-bit datanya akan diputar ke kanan sebanyak Operan2 kali.
BAB III
METODE PRAKTIKUM
3. 1 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
6. Hasil tugas akhir discreen shot dan dilampirkan pada laporan praktikum.
BAB IV
Operasi NOT
Operasi AND
Operasi OR
Operasi XOR
Operasi SHL
Operasi SHR
Pada praktikum mikroprosesor kali ini,kita akan membahas mengenai modul yang berjudul Operasi
Logika dan Manipulasi Bit. Operasi Logika adalah operator kondisional dimana kedua variabel
dibandingkan,jika salah satu variabel bernilai benar,maka output kondisional tersebut bernilai
true,jika nilai kedua dari variabel bernilai salah,maka output dari kondisional tersebut bernilai false.
Kalau manipulasi bit yaitu Tindakan memanipulasi bit atau potongan data lain yang lebih pendek
dari sebuah kata secara algoritme. Lalu BIT itu sendiri adalah satuan unit data terkecil dalam
kompulasi digital yang pada dasarnya terdiri dari satu digit biner (bisa berupa nilai 0 atau 1).
Praktikum kali ini,kita diminta untuk membuat program atau coding aritmatika. Dimana
kita hanya sampai pada tampilan emulator 8086,alat untuk membuat program atau coding pada
praktikum kali ini kita memerlukan aplikasi yang bernama emulator 8086. Ada beberapa operasi
yang terdapat di modul III ini,yaitu antara lain ada operasi NOT,lalu ada operasi AND,selanjutnya
yaitu operasi OR,yang ke empat ialah operasi XOR,kemudian program operasi SHL atau yang
biasa disebut Shift Left dan yang terakhir yaitu program operasi SHR atau yang biasa disebut Shift
Right.
Operasi AND akan menghasilkan nilai nol apabila salah satu operand nya bernilai nol dan
akan bernilai satu apabila kedua operand nya bernilai satu. Operasi NOT akan menginvers suatu
nilai,operasi OR akan menghasilkan nilai NOL bila kedua operand nya bernilai NOL dan akan
menghasilkan satu apabila salah satunya bernilai satu. Operasi XOR pun akan menghasilkan nilai
nol untuk dua nilai yang sama nilainya dan akan menghasilkan angka satu jika nilai nya berbeda.
Selanjut nya operasi SHL akan menggeser operand satu ke kiri sebanyak operand operand secara
per bit. Lalu,bit kosong yang sudah tergeser disebelah kanan akan diberi nilai nol. Operand wajib
digunakan register CL bila ada pergeseran yang dilakukan lebih dari satu kali. Yang terakhir adalah
operasi SHR atau shift right,operasi shift right akan menggeser operand sat uke sebelah kanan
sebanyak operand operand per bit dan menambahkan nilai NOL pada bit yang geser seperti pada
operasi SHL atau shift left.
Tujuan dari praktikum kali ini ialah yang pertama kita mampu memahami perintah dan
proses operasi logika pada mikroprosesor. Yang kedua dapat melakukan operasi logika
NOT,AND,OR dan XOR pada mikroprosesor. Selanjutnya,kia mampu memahami perintah dan
proses operasi manipulasi bit pada mikroprosesor. Yang terakhir yaitu dapat melakukan manipulasi
bit geser kiri dan geser kanan.
Agar memudahkan percobaan dalam operasi bilangan,sebaiknya kita harus lebih dahulu tau
cara untuk mengenal angka berapa yang ditunjukan pada bilangan biner yaitu 0000 = 0, 0001=1,
0010=2, 0011=2, 0100=4, 0101=5, 0110=6, 0111=7, 1000=8, 1001=9, 1010=10, atau A, 1011=11
atau B, 1100=12 atau C, 1101=13 atau D, 1110=14 atau E, 1111=15 atau F. Yang dimana angka ini
telah ditetapkan dari acuan 24 2² 21 20.
Baris pertama terdapat semua program yang dimana awalannya sama saja,yaitu kita harus
menginisialisasi header,yaitu terdapat kata (.MODEL SMALL) diangkat sebagai header. Dimana
secara universal header dapat diartikan sebagai merupakan file yang dimana file tersebut berisi
deklarasi variabel,function,tipe data,dll. Pada mikroprosesor terdapat beberapa model yaitu ada
model small,tiny,medium compact,huge dan large.
Kemudian di program pertama ini menggunakan model small yang dimana pengertian
model small tersebut adalah jika data dan code yang digunakan oleh program kurang dari satu
segment atau 65kb. Selanjutnya,kita ke baris ke dua,pada baris ke dua terdapat (.CODE) yang
dimana merupakan assembler directives untuk memberi tahu pada assembler bahwa bagian
dibawah ini adalah instruksi program. ‘.code’ ini mempunyai fungsi untuk menginisialisasi
program-program setelahnya atau program dibawahnya.
Dibaris ketiga ada (ORG 100h). ORG adalah assembler directivies untuk menentukan
address dari program yang terdapat dalam memori. Kemudian,dapat disimpulkan ‘org 100h’ di
program yang pertama ini adalah address dari program atau awalan dari suatu program,sehingga
terbaca pada program ini awal program dimulai dari ORG 100h. Pengertian ORG adalah assembler
directivies untuk menentukan address dari program yang terdapat dalam memori.
4.3 Tugas Akhir
BAB V
PENUTUP
5.1 Kesimpulan
o Kita dapat memahami perintah dan proses operasi logika pada mikroprosesor
o Kita dapat melakukan operasi logika NOT, AND, OR dan XOR pada mikroprosesor
o Kita dapat memahami perintah dan proses operasi manipulasi bit pada mikroprosesor
5.2 Saran
o Saya pribadi berharap agar penjelasan di dalam praktikum nya dan pemberian tugas akhir
nya seimbang,karena saya pribadi atau mungkin teman-teman yang lainnya belum dapat
memahami sepenuhnya
Daftar Pustaka:
http://pdf.nsc.ac.id/16_02_16-Operasi%20Bit%20dan%20Logika-20150521.ppt#:~:text=Operasi
%20manipulasi%20bit%20dan%20logika,%E2%80%93%20port%20maupun%20register
%20%E2%80%93%20register.
MODUL IV
rakha15412@gmail.com
BAB I
PENDAHULUAN
1.1 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
2.1.1 Label
2.1.2 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).
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.
a
k
a
n
1
,
j
i
k
a
o
p
e
r
a
n
d
1
2.1.5 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.
.MODEL SMALL
.CODE
ORG
100h
Proses:
Akecil:
Sama:
LEA DX,KalSama ; Ambil offset Kal1
JMP Cetak ; Lompat ke cetak
ABesar:
END TData
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.
2.1.6 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 :
2.1.7 Kapan / kondisi apa yang menyebabkan perulangan itu akan berakhir
2.1.8 Berapa banyak perulangan yang diinginkan
2.1.9 Register apa saja yang terpengaruh pada saat perulangan dilakukan
2.1.7 Perulangan dengan LOOP
Perintah LOOP digunakan untuk melakukan suatu proses yang berulang-ulang. Adapun
syntax dari perintah ini adalah :
LOOP Label_Tujuan
.CODE
ORG
100h
EXIT :
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).
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.
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
Register program counter (PC) adalah register 16 bit ynag digunakan sebagai penghitung program,
yang berisi instruksi berikutnya akan dilaksanakan oleh CPU. Jika tegangan pada CPU kaki
RESET turun menjadi 0 dan kemudian naik menjadi 1, PC akan menjadi 0000H. Pelaksanaan
program kemudian akan dimulia dari address 0000H menurut pulsa clock yang dihasilkan oleh
sistem hardware. Setiap kali CPU selesai mengambil 1 byte untuk tiap – tiap instruksi dari
memory, secara otomatis PC akan ditambah dengan 1.
Jump bersyarat adalah jenis instruksi Jump yang bekerja melakukan lompatan atau
kontinyu/tidak melompat berdasarkan syarat yang diberikan. Mnemonik untuk lompatan bersyarat
ada tiga yaitu :
Lompatan absolut bersyarat, Lompatan absolut bersyarat adalah lompatan yang langsung
menunjuk alamat sasaran dengan data alamat 16 bit.
Lompatan relative barsyarat, Lompatan Relatif bersyarat adalah lompatan yang
penunjukan alamatnya bernilai relatif terhadap alamat posisi saat melompat.
Lompatan Relatif Khusus terhadap register B, Lompatan Relatif Khusus terhadap
register B adalah lompatan yang penunjukan alamatnya bernilai relatif terhadap alamat
posisi saat melompat yaitu dengan perintah JRNZ XXXX, jika hasil decrement register B
tidak sama dengan 0 maka ke XXXX.
Program loop merupakan suatu program yang berisi pengulangan langkah-langkah yang
diperlukan dalam menyelesaikan suatu tugas sebanyak mungkin sampai tugas tersebut slesai
dilaksanakan. Program loop dasar harus emncakup hal hal seperti berikut:
Suatu preset loop counter dengan jumlah loop yang harus dilakukan regester dalam CPU
maupun memory dapat digunakan sebagai penghitung loop
Penghitung loop dikurangi dengan 1 setiap kali satu putaran loop selesai dilakukan. Setiap
selesai 1 putaran , nilai penghitung loop harus diperiksa. Jika penghitung loop tidak sama
dengan 0, loop diulangi sampai penghitung loop sama dengan 0.
Jika jumlah loop lebih kecil dari 256, register B dianggap sebagai penghitung loop. Pada
khir loop, instruksi DJNZ dapat dipakai untuk mengurangi register B dengan 1. Jika hasilnya tidak
sama dengan 0, loncat ke lokasi yang ditunjuk dengan menggunakan metode jump relative untuk
melanjutkan pelaksanaan progarm.
Setelah suatu program dilaksanakan sampai alamat tertentu, PC dapat diubah ke alamat
yang lain bilamana pemrogram tidak menghendaki program dilaksanakan pada alamat berikutnya.
Misalnya karena tidak adanya memori setelah alamat tersebut ataupun karena program tidak
disimpan pada daerah tersebut. Program kemudian meloncat ke alamat yang lain dan melanjutkan
pelaksanaan program. Pada bahasa rakitan berikut ini berati PC akan diubah ke 1828H setelah
instruksi tersebut dilaksanakan, pelaksanaan program selanjutnya dilaksanakan dari alamat 1828H.
LD PC, 1828H (instruksi ini tidak berlaku pada bahasa rakitan Z80). Sebenarnya dalam bahasa
rakitan jump (JP) digunakan untuk menyatakan perubahan dalam urutan pelaksanaan program.
Penghitung Program (PC) adalah register 16 bit yang penting dalam CPU. Jika tegangan
pada CPU kaki Reset (pin 26) turun menjadi nol dan kemudian naik menjadi satu (1) dengan
menekan tombol RS, PC akan menjadi 0000H. Pelaksanaan program kemudian akan dimulai dari
alamat 0000H menurut pulsa clock yang dihasilkan oleh sistem hardware. Setiap kali CPU selesai
mengambil satu byte untuk tiap-tiap instruksi dari memori secara otomatis PC akan ditambah
dengan 1. Rangkaian kontrol dalam CPU menentukan berapa byte yang tercakup dalam instruksi
tersebut setelah CPU mengambil byte pertama instruksi itu. Instruksi hanya akan dilaksanakan bila
PC telah ditambah dengan jumlah byte pada instruksi tersebut. Biasanya program diambil dari
memori dengan instruksi untuk pelaksanaan, dimulai dari alamat memori terendah.
Salah satu keunggulan komputer yang paling penting adalah bahwa komputer tersebut dapat
mengulangi langkah-langkah yang diperlukan dalam menyelesaikan suatu tugas sebanyak mungkin
sampai tugas yang bersangkutan selesai dilaksanakan. Hal ini didapat dengan mempergunakan
program loop. Loop merupakan suatu alat yang penting dalam merancang program.
Program loop dasar harus mencakup hal-hal dibawah ini:
Suatu preset loop counter (penghitung loop) dengan jumlah loop yang harus dilakukan.
Biasanya, suatu register dalam CPU dapat dipakai sebagai penghitung loop. Tentu saja
memori dapat juga dipakai penghitung loop.
Penghitung loop dikurang dengan 1 setiap kali satu putaran loop selesai dilakukan. Setiap
selesai satu putaran, nilai penghitung loop harus diperiksa. Jika penghitung tidak sama nol,
loop diulangi sampai penghitung loop sama dengan nol.
Rangkuman :
Register program counter (PC) adalah register 16 bit ynag digunakan sebagai penghitung program,
yang berisi instruksi berikutnya akan dilaksanakan oleh CPU. Jika tegangan pada CPU kaki
RESET turun menjadi 0 dan kemudian naik menjadi 1, PC akan menjadi 0000H. Pelaksanaan
program kemudian akan dimulia dari address 0000H menurut pulsa clock yang dihasilkan oleh
sistem hardware. Setiap kali CPU selesai mengambil 1 byte untuk tiap – tiap instruksi dari
memory, secara otomatis PC akan ditambah dengan 1. Penghitung Program (PC) adalah register 16
bit yang penting dalam CPU. Jika tegangan pada CPU kaki Reset (pin 26) turun menjadi nol dan
kemudian naik menjadi satu (1) dengan menekan tombol RS, PC akan menjadi 0000H.
Pelaksanaan program kemudian akan dimulai dari alamat 0000H menurut pulsa clock yang
dihasilkan oleh sistem hardware. Setiap kali CPU selesai mengambil satu byte untuk tiap-tiap
instruksi dari memori secara otomatis PC akan ditambah dengan 1. Rangkaian kontrol dalam CPU
menentukan berapa byte yang tercakup dalam instruksi tersebut setelah CPU mengambil byte
pertama instruksi itu. Instruksi hanya akan dilaksanakan bila PC telah ditambah dengan jumlah
byte pada instruksi tersebut. Biasanya program diambil dari memori dengan instruksi untuk
pelaksanaan, dimulai dari alamat memori terendah.
Program loop dasar harus mencakup hal-hal dibawah ini:
Suatu preset loop counter (penghitung loop) dengan jumlah loop yang harus dilakukan.
Biasanya, suatu register dalam CPU dapat dipakai sebagai penghitung loop. Tentu saja
memori dapat juga dipakai penghitung loop.
Penghitung loop dikurang dengan 1 setiap kali satu putaran loop selesai dilakukan. Setiap
selesai satu putaran, nilai penghitung loop harus diperiksa. Jika penghitung tidak sama nol,
loop diulangi sampai penghitung loop sama dengan nol.
Jika jumlah loop lebih kecil dari 256, register B dianggap sebagai penghitung loop. Pada khir loop,
instruksi DJNZ dapat dipakai untuk mengurangi register B dengan 1. Jika hasilnya tidak sama
dengan 0, loncat ke lokasi yang ditunjuk dengan menggunakan metode jump relative untuk
melanjutkan pelaksanaan progarm. Program loop merupakan suatu program yang berisi
pengulangan langkah-langkah yang diperlukan dalam menyelesaikan suatu tugas sebanyak
mungkin sampai tugas tersebut slesai dilaksanakan
BAB III
METODE PRAKTIKUM
3.1 Langkah Percobaan
BAB IV
Pada Praktikum kalo ini di laksanakan dengan online dimana dimana para praktikan akan
mempraktikumkan atau melakukan percobaan pada Modul IV dengan judul Percabangan dan
Perulangan pada Mikroprosesor. Dimana Modul ini mempunyai tujuan yaitu ,Memahami perintah
dan proses operasi percabangan pada mikroprosesor, Dapat melakukan operasi percabangan JMP,
JE, JNE, JA, JB, Memahami perintah dan proses operasi perulangan pada mikroprosesor, Dapat
melakukan operasi perulangan LOOP. Adapun perlengkapan yang dibuthkan yaitu Komputer dan
Aplikasi Emu8086.
Program loop merupakan suatu program yang berisi pengulangan langkah-langkah yang
diperlukan dalam menyelesaikan suatu tugas sebanyak mungkin sampai tugas tersebut slesai
dilaksanakan. Program loop dasar harus emncakup hal hal seperti berikut, Suatu preset loop
counter dengan jumlah loop yang harus dilakukan regester dalam CPU maupun memory dapat
digunakan sebagai penghitung loop dan Penghitung loop dikurangi dengan 1 setiap kali satu
putaran loop selesai dilakukan. Setiap selesai 1 putaran , nilai penghitung loop harus diperiksa. Jika
penghitung loop tidak sama dengan 0, loop diulangi sampai penghitung loop sama dengan 0. Lalu
ada pula perintah loop, yang dimana adalah mirip seperti perintah JMP, hanya saja perintah LOOP
adalah lompatan yang memerhatikan nilai register CX. Setelah suatu program dilaksanakan sampai
alamat tertentu, PC dapat diubah ke alamat yang lain bilamana pemrogram tidak menghendaki
program dilaksanakan pada alamat berikutnya. Misalnya karena tidak adanya memori setelah
alamat tersebut ataupun karena program tidak disimpan pada daerah tersebut.
Register program counter (PC) adalah register 16 bit ynag digunakan sebagai penghitung
program, yang berisi instruksi berikutnya akan dilaksanakan oleh CPU. Jump bersyarat adalah jenis
instruksi Jump yang bekerja melakukan lompatan atau kontinyu/tidak melompat berdasarkan syarat
yang diberikan. Mnemonik untuk lompatan bersyarat ada tiga yaitu : Lompatan absolut bersyarat,
Lompatan relative barsyarat dan Lompatan Relatif Khusus terhadap register B. Program loop
merupakan suatu program yang berisi pengulangan langkah-langkah yang diperlukan dalam
menyelesaikan suatu tugas sebanyak mungkin sampai tugas tersebut slesai dilaksanakan.
Percabangan pada mikroprosesor menjadi bagian yang sangat penting karena dapat
menyerdehanakan program layer gelap atau black screen dari mikroprosesor dan menambah
fleksibilitas atau kegunaan dari mikroprosesor. Perintah ini tidak menyeleksi keadaan apapun
untuk melakukan suatu lompatan. Setiap kita membaca atau step run, maka perintah dari JMP ini
akan lompat ke data berikutnya tanpa membaca data yang lainnya. Perintah JMP ini di kategorikan
atau diklasifikasikan sebagai unconditional branch. Lalu ada perintah CMP, dimana perintah ini
hanya mempengaruhi flag register. Perulangan pada mikroprosesor sangat diperlukan dan
menjadikan bagian terpenting karena perulangan akan meminimalisir proses penulisan program
dan meminimalisir pemakaian memori yang terlalu berlebih atau banyak dalam menulis program.
Lalu ada pula perintah loop, yang dimana adalah mirip seperti perintah JMP, hanya saja perintah
LOOP adalah lompatan yang memerhatikan nilai register CX. Pada proses perulangan dengan
perintah LOOP, register CX memegang peranan yang khusus dimana register ini dijadikan sebagai
Counter/penghitung terhadap banyaknya perulangan atau looping yang boleh terjadi pada
programnya. Setiap penemuan perintah LOOP, maka register CX akan dikurangi dengan satu (1)
terlebih dahulu, kemudian akan dilihat apakah register CX sudah mencapai 0 (nol). Proses looping
akan selesai bila nilai pada register CX mencapai 0 (nol).
4.3 Tugas Akhir
BAB V
PENUTUP
5.1 Kesimpulan
o Kita dapat memahami perintah dan proses operasi percabangan pada mikroprosesor
o Kita dapat melakukan operasi percabangan JMP, JE, JNE, JA, JB
o Kita dapat melakukan operasi perulangan LOOP
5.2 Saran
o Saya pribadi berharap agar penjelasan di dalam praktikum nya dan pemberian tugas
akhir nya seimbang,karena saya pribadi atau mungkin teman-teman yang lainnya
belum dapat memahami sepenuhnya.
Daftar Pustaka :
https://vhydgarfield.wordpress.com/2012/12/28/instruksi-percabangan-dan-program-
loop/
MODUL V
rakha15412@gmail.com
BAB I
PENDAHULUAN
1.1 Tujuan
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.
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
2.1.3 Menggunakan Prosedur
Sebagai contoh dari pemakaian prosedur akan kita lihat pada contoh program mencetak
karakter dengan prosedur
Contoh Program 1. Mencetak karakter dengan Prosedur
.MODEL SMALL
.CODE
ORG 100h
Proses:
MOV AX, DX
CALL Cetak_Kar ; Panggil Cetak_Kar
MOV BX, AX
END Proses
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.
2.1.5 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
: PUSH Reg16Bit
syntax Untuk mengambil keluar koin nilai pada tabung stack, digunakan perintah pop dengan
:
POP Reg16Bit
Perintah POP akan mengambil koin nilai pada stack yang paling atas dan dimasukkan pada
Reg16Bit.
POP CX ; Ambil nilai pada puncak stack, masukkan ke CX
POP BX ; Ambil nilai pada puncak stack, masukkan ke BX
POP AX ; Ambil nilai pada puncak stack, masukkan ke AX
TData:
JMP Proses
Kar DB ?
MOV DL,Klm[BX]
MOV Kar,DL
LOOP Ulang
INT 20h
Cetak_Kar PROC
PUSH AX ; Simpan semua register
PUSH DX ; Yang digunakan
MOV AH,02h
MOV DL,Kar
INT 21h ; Cetak karakter
POP DX ; Kembalikan semua register
POP AX ; Yang disimpan
RET ; Kembali kepada si pemanggil
Cetak_Kar ENDP ; END Prosedur
END TData
2.2 Teori Penunjang
1.1 Tujuan
Stack
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 dapat
pula didefinisikan sebagai sekelompok lokasi memori di dalam memori baca tulis yang digunakan
untuk menyimpan memori sementara selama proses eksekusi program. Lokasi awal memori stack
didefinisikan di dalam program utama dan alokasi stack ini biasanya berada pada peta memori baca
tulis bagian atas.
Prosedur (Subrutin)
Prosedur atau subrutin adalah sebuah kelompok instruksi yang membentuk substack (misalnya
operasi penunda waktu) yang sering dikerjakan oleh program utama. Stack dan subrutin
menawarkan keuntungan yang fleksibel di dalam penulisan program. Sebuah rencana pembuatan
software yang besar biasanya dibagi dlaam substack yang disebut modul. Awal sebuah modul
subrutin, isi register program utama disimpan ke dalam stack dan isi register dikembalikan sebelum
kembali ke program utama. Instruksi operasi pada assembler yang menggunakan stack adalah
PUSH dan POP. Dalam proses stack ini melibatkan register Stack Pointer (SP). Contoh instruksi
stack ditunjukkan dalam Tabel 1. Sedangkan instruksi prosedur ditunjukkan dalam Tabel 2.
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 dapat pula didefinisikan sebagai sekelompok lokasi memori di dalam
memori baca tulis yang digunakan untuk menyimpan memori sementara selama proses
eksekusi program. Lokasi awal memori stack didefinisikan di dalam program utama dan
alokasi stack ini biasanya berada pada peta memori baca tulis bagian atas.
Prosedur atau subrutin adalah sebuah kelompok instruksi yang membentuk substack
(misalnya operasi penunda waktu) yang sering dikerjakan oleh program utama. Stack
dan subrutin menawarkan keuntungan yang fleksibel di dalam penulisan program.
Sebuah rencana pembuatan software yang besar biasanya dibagi dlaam substack yang
disebut modul. Awal sebuah modul subrutin, isi register program utama disimpan ke
dalam stack dan isi register dikembalikan sebelum kembali ke program utama. Instruksi
operasi pada assembler yang menggunakan stack adalah PUSH dan POP. Dalam proses
stack ini melibatkan register Stack Pointer (SP).
2. Kemudian tulis dan jalankan program yang sudah dibuat pada aplikasi emulator
Alat yang kita pakai di praktikum kali ini yaitu ada laptop atau
computer,dan aplikasi emu8086.
PENUTUP
5.1 Kesimpulan
o Kita dapat memahami perintah dan proses operasi prosedur pada
mikroprosesor
o Kita dapat mendekalarasikan prosedur menggunakan PROC dan
menutup prosedur dengan ENDP
o Kita dapat melakukan operasi pemanggilan prosedur dengan CALL dan
mengembalikan dengan ke program utama dengan RET
5.2 Saran
o Saya pribadi berharap agar penjelasan didalam praktikum nya dan
pemberian tugas akhir nya seimbang,karena saya pribadi atau mungkin
teman-teman yang lainnya belum dapat memahami sepenuhnya.
Daftar Pustaka
o http://faridstifler.blogspot.com/2017/03/assembler-stack-dan-
prosedur.html
o http://staff.uny.ac.id/sites/default/files/pendidikan/drs-sumarna-msi-
meng/stack-dan-subroutine-mpf5.pdf