Senin, 14 Oktober 2013

Perbedaan service 02h dan 09h pada Int 21 dalam perintah dasar assembler

BAB 1
Pendahuluan

1.1.        Latar belakang masalah

Bahasa rakitan /Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pengendali mikro dan perangkat lainnya yang dapat di program. Bahasa rakitan mengimplementasikan representasi atas kode mesin dalam bentuk simbol-simbol yang secara relatif lebih dapat dipahami oleh manusia.
Berbeda halnya dengan bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu ataupun beberapa jenis arsitektur komputer tertentu. Pemrograman merupakan cara dengan mana sekumpulan perintah yang dihasilkan bagi sebuah komputer menyelenggarakan aktivitas yang ditentukan. Aktivitas dapat berupa apa saja, tetapi secara umum berkaitan dengan penyelesaian perhitungan atau pengendalian

1.2.         Instruksi Bahasa Rakitan

Mnemonik adalah sekumpulan huruf yang terdiri dari dua sampai lebih, singkatan yang mewakili dari maksud perintah dinyatakan, misalnya MOV disingkat dari MOVE yang berarti pemindahan nilai, yaitu MOV AH,09h berarti AH=09h. Mnemonik dapat saja memerlukan operan, dan kadangkala lebih dari dua operan.
Mnemonik berlaku khusus, seperti INT disingkat dari interrupt yang diartikan sela, merupakan pemanggilan perangkat keras yang dihasilkan secara eksternal dari sinyal perangkat keras atau pemanggilan perangkat lunak secara internal dari pelaksanaan perintah atau dengan peristiwa lain. INT berasal dari BIOS (basic input-output system) dan SO (sistem operasi), misalnya INT 21h dan INT 20h berasal dari SO yang masing-masing berfungsi dan mempunyai ketentutan sendiri.

1.3.        Insruksi Int (Interrupt)

Interrupt adalah suatu permintaan khusus kepada mikroprosesor untuk melakukan suatu perintah. Ketika terjadi permintaan interupsi, microprocessor akan mengeksekusi interrupt handler, yaitu suatu program yang melayani interupsi. Setiap interrupthandler itu memmiliki alamat masing-masing yang disimpan dalam bentuk array yang masing-masing terdiri dari 4 byte ( 2 offset dan segment). Array ini disebut vektorinterupsi. Vector interupsi ini disusun berdasarkan nomor interupsi yaitu dari hexa. Selain itu, dikenal juga istilah service dan subservice, maksudnya adalah bahwa setiap interrupt dibagi atas beberapa bagian yang mempunyai tugas masing-masing. Tetapi ada juga interrupt yang tidak memiliki service.
Perintah Int (Interrupt) mempunyai cara kerja yang sama dengan perintah GOSUB pada BASIC, hanya pada Int, subrotine yang akan dipaggil sudah tersedia pada memori komputer. Subrotine yang dipanggil menggunakan perintah Int (interrupt) terdiri dari 2 jenis, yaitu:
1.    Bios Interrupt yaitu Int yang disediakan oleh BIOS (Basic Input Output System). Interrupt yang termasuk dalam Interrupt BIOS adalah Int 0 hingga Int 1F hexa.
2.    DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operating System). Interupt yang termasuk dalam Interrupt DOS adalah Interrupt diatas Int 1F hexa. Misal: Interrupt 20 hexa, Interrupt 21 hexa dll.

1.3.1.   Int 21h Service 02

Service 02h berfungsi untuk mencetak satu buah karakter pada layar.
Register Input : AH = 02h DL= karakter/kode ASCII
Register Output : Tidak ada
Int 21h juga merupakan salah satu dari DOS Interrupt. Int 21h mempunyai banyak tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian itu, perlu disertakan nomor bagiannya yang disebut Service Number.
Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi beberapa syarat:
-          Register AH, harus berisi service number dari Int 21h yang akan dijalankan (02h)
-          Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak.

1.3.1.1. Contoh membuat program sederhana
Untuk membuat program bahasa rakitan, anda bisa menggunakan editor apapun. Missal kita menggunakan editor Edit.com dan file yang akan kita buat adalah a.asm, maka perintah yang anda gunakan adalah :
Edit a.asm[enter]
kemudian anda ketik listing program di bawah ini :
; Program mencetak huruf A ke layar
            ; by code_abu_syafa@yahoo.com
            .model small
            .code
                        org 100h
            mulai: mov ah,02
                        movdl,65
int 21h
int 20h
            end mulai
kemudian simpan program anda, dan keluar dari program editor.

Keterangan program :
-       ( ; )tanda titk koma = merupakan baris keterangan program. Artinya setelah tanda ( ; )  program akan mengabaikan perintah apapun yang ada.
-       Model small = digunakan untuk menentukan mode dari program anda, seperti tiny, small dll.
-       .code org 100h = menentukan alamat offset dari program yang akan digunakan. Untuk program com selalu diawali dari offset 100h.
-       Mulai: = adalah nama label. Pada pemrograman assembly anda harus mengawali program anda dengan sebuah label. Label ini juga digunakan untuk lompatan program dengan perintah jmp (jump).
-       Mov ah,02 = mengisi register ah dengan service 2, identik dengan ah: = 2 dalam bahasa pascal. Artinya kita menyuruh program nantinya untuk mencetak sebuah karakter yang ada pada registerdl. Dengan kata lain perintah mov ah,02 adalah service untuk mencetak sebuah karakter. Angka 2 disini adalah hexadecimal, sehingga bisa ditulis 02h. untuk menerima interupsi.
-       Mov dl,65 = mengisi register dl dengan karakter ascii 65 atau ‘A’ jadi perintah diatas bisa diubah atau sama artinya dengan perintah mov dl,’A’.
-       Int21h = menjalankan interupsi nomor 21. Interupai ini kan mengerjakan sesuai dengan nilai service yang diisikan. Karena ada perintah mov ah,02 maka program akan mencetak karakter yang ada pada register dl.
-       Int20h = menjalankan interupsi 20. Interupsi ini berfungsi untuk mengembalikan kontrol ke DOS, dengan kata lain interupsi ini digunakan untuk menghentikan jalannya program.
-        End mulai = akhir dari program. Untuk mengakhiri program anda harus mengetikan perintah end diikuti oleh nama label yang pertama kali digunakan.

1.3.2.   Int 21h Service 09

Int 21 Service 09 adalah perintah untuk mencetak string ke layar.
Setelah mencetak sebuat karakter ataupun kalimat dengan int 21, ada baiknya untuk mencetak kalimat dengan karakter yang panjang kita menggunakan prinsip String. Untuk itu digunakan fasilitas int 21h yang lainnya, yaitu dengan Service 09h pada AH. Penyimpanan String menggunakan register DX sebagai penampung variabel. String/Pesan yang tersimpan dalam variabel tersebut harus diakhiri dengan tanda ‘$’ (dollar). DS:DX = alamat untaian.
      Ada beberapa hal yang harus diperhatikan dan ditambahkan, salah satunya adalah mendefinisikan variabel. Variabel akan mengambil tempat pada memory untuk menyimpan data String. Besarnya memory yang dipakai oleh variabel ini ditentukan oleh besarnya data pada variabel tersebut. Variabel ini dapat didenisikan dengan DEBUG ataupun menggunakan compiler.
Besaran-besaran variabel tersebut adalah:
• DB (define byte) mendefinisikan variabel per byte
• DW (define word) mendefinisikan variabel per word (2 byte)
• DD (define double word) mendefinisikan variabel per 2 word
Cara penulisan variabel jenis ini:
LABEL (DB/DW/DD) [Isi Variabel]
Contoh penulisannya:
SATU DB ‘Ini adalah Penulisan String$’
DUA DW 1234H
TIGA DB 12H
1.3.2.1.  Contoh membuat program sederhana dengan menggunakan debug
Dalam sistem debug kita wajib mengetahui panjang karakter yang dipakai untuk string, sehingga kita dapat mengetahui besar memory yang terpakai untuk menyimpan String tersebut.
Penerapan String pada DEBUG:
C:\>DEBUG
-A
17B6:0100 MOV AH,9
17B6:0102 JMP 109
17B6:0104 DB 'SAYA$'
17B6:0109 MOV DX,104
17B6:010C INT 21
17B6:010E INT 20
17B6:0110
-G
SAYA
Program terminated normally
 -
KESIMPULAN

ü  Bahasa rakitan /Assembly adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pengendali mikro dan perangkat lainnya yang dapat di program.
ü  Mnemonik adalah sekumpulan huruf yang terdiri dari dua sampai lebih, singkatan yang mewakili dari maksud perintah dinyatakan.
ü  Interrupt adalah suatu permintaan khusus kepada mikroprosesor untuk melakukan suatu perintah
ü  Int 21 Service 02h berfungsi untuk mencetak satu buah karakter pada layar.
ü  Int 21 Service 09h adalah perintah untuk mencetak string ke layar.


DAFTAR ISI

agusharyawan.files.wordpress.com
jac85.files.wordpress.com/2010/
arenosy-iam.blogspot.com
Mahyuddin.Pengantar Pemrograman Bahasa Rakitan-pdf


1 komentar: