Powered by Blogger.
RSS

Praktikum Mikroprosesor


Laporan 1 Praktikum Mikroprosesor

Anggota Kelompok:   1. Rahmayezi Edwar
                                  2. Rani Novesari

Pemrograman Assembler 8086 dengan Debug
1.    Tujuan
Setelah melakukan praktikum ini diharapkan mahasiswa mampu:
1.      Membuat program assambler dengan ekstensi .COM dengan menggunakan debug
2.      Menampilkan dan membaca isi register
3.      Menjelaskan fungsi-fungsi register sebagai pengalamatan data
4.      Menjelaskan instruksi-instruksi dasar pada mikroprosesor X86
5.      Menjelaskan mode alamat efektif dan alamat mutlak

2.    Dasar Teori
a. Bahasa Assambler



Dalam bahasa assembler mempunyai 3 instruksi dasar, yaitu mnemonic opcode), operan 1 dan operan2 serta komentar (jika diperlukan)
Mnemonic atau opcode ialah kode yang akan melakukan aksi terhadap operand . Operand ialah data yang diproses oleh opcode. Sebuah opcode bisa membutuhkan 1 ,2 atau lebih operand, kadang juga tidak perlu operand. Sedangkan komentar dapat kita berikan dengan menggunakan tanda titik koma (;). Berikut contoh jumlah operand yang berbeda beda dalam suatu assembly.
CJNE R0,#22H, Tasmi ;dibutuhkan 3 buah operand
MOVX @DPTR, A ;dibutuhkan 2 buah operand
RR A ;1 buah operand
NOP ; tidak memerlukan operand
b. Debug dan Interrupt
1.  Debug
Debug adalah suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM.
2.  Interrupt (Int)
Perintah ini merupakan pemanggilan subroutin yang sudah tersedia di memori computer
Subroutine yang dapat dipanggil menggunakan perintah int (Interrupt) terdiri dari dua jenis yaitu:
1.  Bios Interrupt, yaitu Int yang disediakan oleh BIOS(Basic Input Output System). Int yang termasuk dalam Interrupt Bios adalah Int 0 hingga 1F hexa
2.  DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operation System). Yang termasuk dalam Interrupt ini adalah Interrupt diatas 1F hexa
3.  Instruksi-Instruksi Dasar
1.     Instruksi Pengalamatan
2.     Instruksi Penjumlahan
3.     Instruksi Pengurangan

3.    Alat dan Bahan
a. PC
b. Utility Debug

4.    Pengujian
a. Kerja 1 Menggunakan Debug.com
Langkah Kerja:
1.     Mengklik start, dari tampilan menu  pilih Run. Ditampilan menu  Run, ketik command dan selanjutnya pilih OK
2.     Dari layar DOS prompt yang muncul, menukar folder “document and settings” ke folder compiler untuk mikroprosessor 8088
3.     Mengetik Debug (huruf besar atau kecil tidak berpengaruh)
4.     Mengetik A/a
5.     Menuliskan program berikut:
MOV AH,02, Kemudian tekan Enter
MOV DL,41, tekan Enter
INT 21, tekan Enter
INT 20, tekan Enter 2 kali
6.     Memeriksa panjang program dan memperbaharui isi register CX yang merupakan tempat penampungan panjang program yang aktif sebelum dijalankandengan mengetikkan rcx dan isi kursor dengan angka 8
7.     Memberi nama program dengan mengetikkan N(nama file.COM)
Misal : Ncoba.com
8.     Memastikan register IP menunjuk alamat awal program yang akan dijalankan, dengan cara mengetikkan rIP dan pastikan berisi 0100 (alamat offset), jika sudah terisi dengan benar Enter, kalau tidak ketik pada kursor 0100
9.     Menyimpan program dengan mengetikkan perintah W
10.  Menjalankan program dengan mengetikkan perintah G
11.  Mencek perbaris program dengan mengetikkan perintah T
12.  Kemudian mengetik T 2 kali, maka akan terlihat sebagai berikut
13.  Keluar dari utiliti Debug dengan ketik Q dan Panggil ulang program, dengan ketik coba.com
14.  Tabel Instruksi
Alamat
Instruksi
Opcode
Keterangan
Segmen
Offset
0B0B
0100
B402
Mov ah, 02
Mencetak karakter
0B0B
0102
BA4100
Mov dl, 0041
Huruf A
0B0B
0105
C021
Int 21
Mencetak
0B0B
0107
C020
Int20
Keluar

15.  Tabel Isian Register
Alamat
Register
Segmen
Offset
AX
BX
CX
DX
SP
IP
0B0B
0100
0200
0000
0000
0000
FFEE
0102
0B0B
0102
0200
0000
0000
0041
FFEE
0105
0B0B
0105
0200
0000
0000
0041
FFE8
107C
0B0B
0107
0200
0000
0000
0041
FFE8
107D

b. Mencetak huruf A—Z
1.  Program
Mov cx, 1A
Mov dl, 41
Mov ah, 02
Int 21
Loop 0105
Int 20
2.  Tabel Instruksi
Alamat
Instruksi
Opcode
Keterangan
Segmen
Offset
0B0B
0100
B91A00
Mov cx, 001A
Mencetak 26 kali
0B0B
0103
B241
Mov dl, 0041
Mencetak karakter
0B0B
0105
B402
Mov ah, 02
Huruf A
0B0B
0107
CD21
Int 21
Mencetak
0B0B
0109
FEC2
Inc dl
Menambah dl satu kali
0B0B
010B
E2F8
Loop 0105
Mengulang register dl
0B0B
010D
CD20
Int20
Keluar
3.  Tabel Isian Register
Alamat
Register
Segmen
Offset
AX
BX
CX
DX
SP
IP
0B0B
0100
0000
0000
001A
000
FFEE
0103
0B0B
0103
0000
0000
001A
0041
FFEE
0105
0B0B
0105
0200
0000
001A
0041
FFEE
0107
0B0B
0107
0200
0000
001A
0041
FFE8
107C
0B0B
0109
0200
0000
001A
0041
FFE8
107D
0B0B
010B
0200
0000
001A
0041
FFE8
107E
0B0B
010D
0200
0000
001A
0041
FFE6
1161

5.    Pertanyaan
a. Dari program-program yang sudah ditulis dan diuji fungsi dari register: 
AX, BX, CX, DX, SP, IP, DS, SS, ES, CS.
Jawab:
-  Accumulator Register (AX)
Fungsi: Sebagai akumulator dan berhubungan dengan jenis-jenis operasi khusus seperti Aritmetika, In/Out, Shift, Logic, Rotate, dan operasi desimal berkode biner.
-  Base Register (BX)
Fungsi: Sebagai register base untuk mereferensi alamat memori. Operasi yang dapat dilakukan adalah Rotate, Logic, Shift, dan Aritmetika.
-  Counter Register (CX)
Fungsi: Sebagai pencacah implisit dengan instruksi tertentu, misalnya terhadap perintah Loop dan operasi string. Counter naik jika direction flag bernilai 0, dan counter turun jika direction flag bernilai 1.
-  Data Register (DX)
Fungsi: Menyimpan alamat port I/O selama operasi I/O tertentu, baik alamat port 8 bit maupun 16 bit. Digunakan juga dalam operasi perkalian dan pembagian.
-  Register SP (Stack Pointer, 16 bit)
Fungsi: Digunakan untuk operasi stack seperti menyimpan alamat return saat memanggil subroutine. SP merupakan register yang secara implisit digunakan oleh perintah PUSH dan POP yaitu menyimpan dan mengambil kembali dari stack.
-  Register IP (Instruction Pointer, 16 bit)
Fungsi: Register yang berpasangan dengan CS sebagai register utama untuk menunjukkan baris perintah program. Pada saat program dijalankan, IP akan langsung menunjuk pada awal program. Code Segment dan Instruction Pointer berfungsi sebagai program counter ditulis dengan format CS:IP. Secara umum, kode mesin diletakkan di Code Segment, semua data diletakkan di Data Segment, dan operasi PUSH dan POP dilakukan di Stack Segment.
-  Register CS (Code Segment)
Fungsi: Mencatat segment dari kode program atau instruksi, register CS berpasangan dengan register IP (Instruction Pointer) dalam format CS:IP.
- Register DS (Data Segment)
      
Fungsi: Menyimpan alamat dari segment dimana data terletak
b. Membuat program untuk menampilkan:
1*1 = 1
Jawab: ProgramàMOV AH,02
                        MOV DL,31
                        INT 21
                        MOV BL,DL
                        MOV DL,2A
                        INT 21
                        MOV BL,DL
                        MOV DL,31
                        INT 21
                        MOV BL,DL
                        MOV DL,3D
                        INT 21
                        MOV BL,DL
                        MOV DL,31
                        INC DL
                        LOOP 107
                        INT 20
2*1 = 2
Jawab: Programà           MOV AH,02
                        MOV DL,32
                        INT 21
                        MOV BL,DL
                        MOV DL,2A
                        INT 21
                        MOV BL,DL
                        MOV DL,31
                        INT 21
                        MOV BL,DL
                        MOV DL,3D
                        INT 21
                        MOV BL,DL
                        MOV DL,32
                        INC DL
                        LOOP 107
                        INT 20
6.    Kesimpulan
Dalam penulisan Pemograman Assambler 1 ini kita terlebih dahulu dapat mengenal Bahasa Assambler,  ada 3 instruksi dasar pada Bahasa sssembler yaitu Mnemonic atau Opcode, Operand1 dan Operand2.
Kita dapat mengenal debug dan perintah-perintahnya. Debug yaitu suatu utiliti dalam DOS yang digunakan untuk membuat pemrograman assambler dengan format ekstensi COM.
Beberapa perintah-perintah debug dan kegunaannya yaitu :
1.       Q (Quit)
Mengembalikan ke dos prompt
2.       H (Hexa)
Melaksanakan perintah penambahan dan pengurangan terhadap dua bilangan hexa
3.       A (assambler)
Perintah untuk menulis program assembler
4.       R(Register)
Digunakan untuk mengetahui isi masing-masing register, perintah ini juga bias untuk mengetahui atau memperbaruhi isi register tertentu
5.       G (Go)
Untuk menjalankan program
6.       T(Trace)
Menjalankan program perbaris dengan menampilkan register dipakai
7.       U (Unsamble)
Menampilkan list dari program yang sedang berjalan U (tempat awal program yang diinginkan) L (panjang program/1 byte akhir dari alamat akhir program).
Kita juga dapat mengenal fungsi dan kegunaan masing-masing instruksi yaitu :
-  Instruksi Pengalamatan = MOV
-  Instruksi Penjumlahan = INC,ADD
-  Instruksi Pengurangan = DEC,SUB
-  Instruksi untuk menentukan Larik = BX
-  Instruksi lompat jika tidak sama = JNE
-  Instruksi lompat jika masih kurang/ sama dengan = JLE
Keterangan dari program diatas :
MOV CX, adalah  : untuk perulangan yang akan di buat
AH, 02 adalah  :  untuk menunjukkan fungsi pada INT 21
0L, 41 adalah  :  menunujukkan kode asciinya
INT 21 adalah  :  fungsi yang di lakukan
LOOP, 0103 adalah   :  perulangan
INT 20 adalah  :  untuk keluar dari program

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comments:

Post a Comment