Anda di halaman 1dari 34

LAPORAN PRAKTIKUM

MIKROPROSESOR DAN INTERFACE

Disusun oleh :
Firdaus Surya Pratama
201344013

Tanggal Praktikum : Kamis, 17 Februari 2022


Tanggal Pengumpulan : Selasa, 22 Februari 2022

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

PROGRAM STUDI D4-TEKNIK TELEKOMUNIKASI


JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI BANDUNG
2021
I. Judul Praktikum
• Program Transfer Data
II. Tujuan Praktikum
• Mahasiswa mampu melakukan instalasi dan menggunakan software emu8086 untuk
simulasi mikroprosesor

• Mahasiswa mampu memahami konsep Bahasa Pemrograman Assembly

• Mahasiswa mampu memahami konsep program transfer data pada Bahasa Assembly
III. Landasan Teori
Bahasa Assembly merupakan jenis bahasa pemrograman yang ada pada generasi
kedua. Bahasa Assembly ini juga dinamakan sebagai bahasa rakitan yang merupakan
bahasa digunakan untuk komputer, namun bahasa ini masuk ke dalam kategori sebagai
bahasa tingkat rendah atau low level language. Bahasa ini merupakan notasi untuk mesin
sehingga nanti bisa dibaca oleh manusia.

Bahasa assembly mempunyai hubungan 1-1 dengan berdasarkan instruksi mesin.


Contohnya, untuk setiap julukan atau mnemonic yang nanti akan ditulis dengan
menggunakan bahasa assembly, maka nanti juga akan langsung diterjemahkan dengan
tepat satu kode operasi sehingga bisa langsung dimengerti oleh komputer. Untuk
memahami cara kerja bahasa Assembly, Berikut ini merupakan tahapan-tahapan
bagaimana sebuah huruf “A” bisa tampil di layar monitor menggunakan bahasa
Assembly:

1. Microprocessor mengisi register di internal mikroprosesor dengan kode ASCII “A”,


yaitu 41h.

2. Microprocessor mengirim sinyal interupt 21h. Akibatnya interupsi 21h dijalankan, yaitu
mengirimkan “A” ke monitor.

3. Microprocessor mengirimkan sinyal interupt 20h tanda sudah selesai.

Pada sebuah mikroprosesor terdapat register, yaitu alat penyimpanan kecil yang
mempunyai kecepatan akses cukup tinggi, yang digunakan untuk menyimpan data dan
atau instruksi yang sedang diproses. Memori ini bersifat sementara dan biasanya
digunakan untuk menyimpan data selama pemrosesan atau data untuk diproses lebih
lanjut. Register memiliki jenis-jenis sebagai berikut:

1. Register Umum (General Purpose Register)


a) Register AX (AH+AL) / Accumulator Register

b) Register BX (BH+BL) / Base Register

c) Register CX (CH+CL) / Counter Register

d) Register DX (DH+DL) / Data Register

2. Register Segments

a) Code Segment (Register CS) yang berfungsi untuk menunjukkan alamat dari
instruksi selanjutnya pada mikroprosessor.

b) Data Segment (Register DS) yang memiliki fungsi untuk menunjukkan alamat data
pada pengiriman/transfer register.

c) Stack Segment (Register SS) yang memiliki fungsi pemanggilan (CALL) dan
pengarahan ke program utama (RET) pada operasi stack.

d) Extra Segment (Register ES) sebagai memori tambahan untuk operasi string pada
CX di register umum.

3. Pointer dan Index Register

a) Register IP (Instruction Pointer), yang menunjukkan alamat instruksi atau baris


perintah dalam program.

b) Register SP (Stack Pointer), yang menunjukkan byte terakhir pada operasi stack.

c) Register BP (Base Pointer), yang memiliki fungsi yang lebih kurang sama dengan
register BX yaitu membaca dan menulis data secara langsung dari atau ke memori.

d) Index Register

4. Flag Register Flag Register berfungsi sebagai penanda yang menunjukkan status atau
keadaan dari suatu mikroprosessor. Bit-bit data pada flag yang berfungsi sebagai penanda
status, akan mengalami perubahan tergantung kepada proses yang sedang berlangsung.
IV. Alat dan Bahan
• Laptop/Komputer
• Software emu8086
V. Langkah-Langkah Praktikum

5.1. Praktikum 3_1

Buatlah program untuk memindahkan 16 data 8 bit dari alamat offset 0000H s/d 000FH ke
alamat offset 0200H s/d 020FH. Sebelum dipindahkan, isi alamat offset 0000H s/d
0000FH seluruhnya dengan data ABH (Gunakan assembler directive DUP). pergunakan 4
cara sebagai solusi.

5.2. Praktikum 3_2

Buatlah program untuk memindahkan 16 data 16 bit dari alamat offset 0000H s/d 001FH
ke alamat offset 07DDH s/d 071FH. Sebelum dipindahkan, isi alamat offset 0000H s/d
D01FH seluruhnya dengan data ABCDH (Gunakan assembler directive DUP). pergunakan
2 cara sebagai solusi.

5.3. Praktikum 3_3

Buatlah program untuk memindahkan 6 data Heksadesimal berikut : FAAFH, BEDAH,


ABCDH, AA66H, 88DDH, BECAH yang berada pada suatu blok memori ke blok memori
lain.

5.4. Praktikum 3_4

Buatlah program untuk memindahkan data 32 8 bit dari alamat offset 0000H s/d 001FH ke
alamat offset 0500H s/d 051FH. Sebelum dipindahkan, isi alamat offset 0000H s/d 000FH
seluruhnya dengan data CFH (Gunakan assembler directive DUP). pergunakan 4 cara
sebagai solusi.

5.5. Praktikum 3_5

Buatlah program untuk menukar data antara BM1 dan BM2 yang masing-masing berisi 20
data 8 bit. Isi kedua BM dengan data yang berlainan. Selesaikan dengan 2 cara.

5.6. Praktikum 3_6

Buatlah program untuk mengisi 32 data 8 bit ( 00H s/d 1FH ) pada suatu blok memori.
Pergunakan 3 cara penyelesaian.
VI. Hasil dan Analisis Praktikum
6.1 Praktikum 3_1
A. Menggunakan MOVSB dan CLD(Solusi 1)
• Code

• Kondisi Sebelum diproses

• Kondisi Saat diproses


• Hasil

B. Menggunakan MOVSB dan STD(Solusi 2)


• Code
• Kondisi Sebelum diproses

• Kondisi Saat diproses

• Hasil
C. Menggunakan STOSB dan CLD(Solusi 3)
• Code

• Kondisi Sebelum diproses

• Kondisi Saat diproses


• Hasil

D. Menggunakan STOSB dan STD(Solusi 4)


• Code
• Kondisi Sebelum diproses

• Kondisi Saat diproses

• Hasil
6.2 Praktikum 3_2
A. Menggunakan MOVSW dan CLD (solusi 1)
• Code

• Kondisi Sebelum diproses


• Kondisi Saat diproses

• Hasil

B. Menggunakan MOVSW dan STD (solusi 2)


• Code
• Kondisi Sebelum diproses

• Kondisi Saat diproses


• Hasil

6.3 Praktikum 3_3


• Code
• Hasil

6.4 Praktikum 3_4


A. Menggunakan MOVSB dan CLD (solusi 1)
• Code

• Kondisi Sebelum diproses


• Kondisi Saat diproses

• Hasil

B. Menggunakan MOVSB dan STD (solusi 2)


• Code
• Kondisi Sebelum diproses

• Kondisi Saat diproses


• Hasil

C. Menggunakan STOSB dan CLD (solusi 3)


• Code

• Kondisi Sebelum diproses


• Kondisi Saat diproses

• Hasil
D. Menggunakan STOSB dan STD (solusi 4)
• Code

• Kondisi Sebelum diproses


• Kondisi Saat diproses

• Hasil

6.5 Praktikum 3_5


A. Menggunakan Loop
• Code
• Kondisi Sebelum diproses
• Kondisi Saat diproses
• Hasil

B. Menggunakan MOVSB
• Code

• Kondisi Sebelum diproses


• Kondisi Saat diproses
• Hasil

6.6 Prakitkum 3_6


A. Menggunakan STOSB dan CLD (solusi 1)
• Code
• Kondisi Sebelum diproses

• Kondisi Saat diproses

• Hasil
B. Menggunakan STOSB dan STD (solusi 2)
• Code

• Kondisi Sebelum diproses

• Kondisi Saat diproses


• Hasil

C. Menggunakan MOV (solusi 3)


• Code

• Kondisi Sebelum diproses


• Kondisi Saat diproses

• Hasil

Analisis:
Pada praktikum kali ini, dilaksanakan transfer data baik dari alamat offset menuju
alamat offset maupun dari blok memori menuju blok memori lainnya.
Perpindahan/transfer data ini dapat dilakukan dengan berbagai cara salah satunya adalah
menggunakan instruksi perpindahan string seperti MOVSB, MOVSW, STOSB, STOSW,
dan lain sebagainya. Instruksi-instruksi tersebut memiliki fungsinya masing-masing,
seperti LEA memiliki fungsi yang mirip seperti MOV, namun memiliki tingkat efektif
yang lebih baik, dengan sintaks “LEA REG,Memory”. STOSB atau STOSW berfungsi
untuk menyetor byte atau word dalam AX (AL jika menggunakan STOSB) ke dalam
ES:[DI]. CLD dan STD digunakan untuk menentukan arah flag (direction flag), jika CLD
bersifat forward (dari kiri ke kanan) dengan memberi nilai DF=0, sedangkan STD bersifat
backward (dari kanan ke kiri) dengan memberi nilai DF=1. Dan LOOP adalah perintah
yang akan “JUMP” ketika nilai CX tidak sama dengan 0, dimana register CX adalah
tempat untuk meletakkan batas akhir dari perulangan yang diinginkan. Perintah ini juga
akan secara otomatis melakukan pengurangan data sebanyak 1 dari register CX yang
dijadikan patokan dari perulangan. Assembler directive DUP digunakan untuk
menduplikasikan data sebanyak n-buah pada sebuah blok memori.
Untuk program nomor 1, 2, dan 4 diminta untuk memindahkan data dari alamat
offset source menuju alamat offset destination. Data akan dipindahkan menuju register
indeks DI baik dengan urutan forward (dari kiri ke kanan, dengan DF = 0) maupun
backward (dari kanan ke kiri, dengan DF = 1), nilai DF dapat diatur sendiri menggunakan
perintah CLD (Clear Direction Flag) supaya DF = 0 dan STD (Set Direction Flag) supaya
DF = 1. Terdapat berbagai cara untuk untuk melakukan transfer data ini seperti
menggunakan perintah MOVSB/W dan STOSB/W. Jika menggunakan MOVSB/W maka
programmer perlu memasukan alamat offset source dan alamat offset destination ke
register indeks SI dan DI karena MOVSB/W digunakan untuk mengcopy data 1 byte/word
dari alamat DS:SI ke alamat ES:DI. Lalu batas akhir dari perulangan diletakkan pada
register CX yang secara otomatis akan terus diulang oleh perintah REP hingga semua data
berhasil dipindahkan (CX=0). Jika menggunakan STOSB/W maka programmer perlu
untuk menggunakan sintaks tambahan yaitu LEA, sederhananya programmer menyimpan
data yang akan ditransfer di register AL maupun AX tergantung dari ukuran data yang
digunakan kemudian menggunakan sintaks LEA untuk menambahkan alamat offset
destination ke register indeks DI, dengan menggunakan sintaks STOSB/W maka data akan
secara otomatis di-copy dari register AL/AX menuju alamat ES:DI.
Untuk program nomor 3 di mana diminta untuk memindahkan data dari Blok
Memori 1 ke Blok Memori 2. Data dari BM1 diambil dan dipindahkan dengan register
indeks SI ke BM2 dengan register indeks DI, menggunakan perintah LEA. Lalu batas
akhir dari perulangan diletakkan pada register CX yang secara otomatis akan terus diulang
oleh perintah REP hingga semua data berhasil dipindahkan (CX=0).
Untuk program nomor 5 hanya memiliki perbedaan sedikit dari program no 3, di
mana kali ini diminta untuk menukar data antara BM1 dan BM2, dalam pelaksanaannya
dibutuhkan tempat untuk menampung data dari satu blok memori secara sementara dalam
hal ini digunakan BMT, setelah data dari BM1 dipindahkan ke BMT selanjutnya adalah
pemindahan data dari BM2 menuju BM1 dan dari BMT, yang sudah berisi data BM1 pada
awal, menuju BM2. Proses pemindahan data antar blok memori ini menggunakan metode
yang sama seperti program nomor 3, menggunakan LEA dan MOVSB.
Program nomor 6 bertujuan untuk mengisi 32 data 8-bit kepada suatu blok memori,
data-data ini memiliki membentuk baris angka heksadesimal dari 00H sampai dengan
1FH. Jadi proses yang dilakukan adalah nilai awal dari data yang telah ditentukan tersebut
dipindahkan ke sebuah register, kemudian dipindahkan ke blok memori yang dituju. Lalu
nilai dari data tersebut diberikan operasi sesuai dengan aturan dari baris bilangannya.
Kesimpulan

Dalam praktikum kali ini didapat kesimpulan bahwa pada operasi blok diagram ini
dilakukan beberapa percpbaan yaitu mengisi memindahkan, menukar dan mengcopy data
dari suatu blok memori ke blok memori lain. Dalam proses menukar data dari suatu blok
memori ke blok memori lainnya tidak dapat dilakukan secara langsung, tetapi perlu
menggunakan blok memori tambahan yang akan menampung salah satu data dari blok
memori secara sementara. Jika proses menukar dilakukan secara langsung maka data dari
salah satu blok memori akan tertimpah oleh data hasil copy dan menyebabkan data aslinya
akan hilang.
DAFTAR PUSTAKA

[1] Catur, “Pengertian Register dan Jenis-Jenis Register” garudacyber.co.id, 2018.


http://garudacyber.co.id/artikel/1486-pengertian-register-dan-jenis-jenis-register. (accessed
Feb. 8, 2022).
[2] Rahmawati Hasanah, “Mikroprosesor dan Interface” . Bandung: Politeknik Negeri Bandung,
2019.

Anda mungkin juga menyukai