Selasa, 08 Januari 2013

Pemograman Assembly (Interrupt)


BAB III 

INTERRUPT 


3.1. PENGERTIAN INTERRUPT
            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.  Pada IBM PC dan kompatibelnya disediakan 256 buah interupsi yang diberi nomor 0 sampai 255. Nomor interupsi  0 sampai  1Fh disediakan oleh ROM BIOS, yaitu suatu IC didalam komputer yang mengatur operasi  dasar komputer. Jadi bila terjadi interupsi dengan nomor  0-1Fh, maka secara default  komputer akan beralih menuju ROM BIOS dan melaksanakan program yang terdapat disana. Program yang melayani suatu interupsi dinamakan Interrupt Handler.  

3.2. VEKTOR INTERUPSI
          Setiap interrupt akan mengeksekusi interrupt handlernya masing-masing berdasarkan nomornya. Sedangkan alamat dari masing- masing interupt handler tercatat di memori dalam bentuk array yang besar elemennya masing-masing 4 byte. Keempat byte ini dibagi lagi yaitu 2 byte pertama berisi  kode offset sedangkan 2 byte berikutnya berisi kode segmen dari alamat interupt handler yang bersangkutan. Jadi besarnya array itu adalah 256  elemen dengan ukuran elemen masing-masing 4 byte. Total keseluruhan memori yang dipakai adalah sebesar 1024 byte (256 x 4 = 1024) atau 1 KB dan disimpan dalam lokasi memori absolut 0000h sampai 3FFh. Array sebesar 1 KB ini disebut Interupt Vector Table (Table Vektor Interupsi). Nilai-nilai yang terkandung pada Interupt Vector Table ini tidak akan sama di satu komputer dengan yang lainnya. Interupt yang berjumlah 256 buah ini dibagi lagi ke dalam 2 macam yaitu: 

-  Interupt 00h -  1Fh (0 -  31) adalah interrupt BIOS dan standar di semua komputer baik yang menggunakan sistem operasi DOS atau bukan. Lokasi Interupt Vector Table-nya ada di alamat absolut 0000h-007Fh. 

-  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. 

---------------------------------------------------------------+ 
| Nomor      Nama               Nomor      Nama                | 
| Interupt   Interupt           Interupt   Interupt            | 
+---------------------------------------------------------------+ 
| *00h     Divide By Zero        10h     Video Service         | 
| *01h     Single Step           11h     Equipment Check       | 
| *02h     Non MaskableInt(NMI)  12h     Memory Size           | 
| *03h     Break point           13h     Disk Service          | 
|  04h     Arithmatic Overflow   14h     Communication (RS-232)| 
|  05h     Print Screen          15h     Cassette Service      | 
|  06h     Reserved              16h     Keyboard Service      | 
|  07h     Reserved              17h     Printer Service       | 
|  08h     Clock Tick(Timer)     18h     ROM Basic             | 
|  09h     Keyboard              19h     Bootstrap Loader      | 
|  0Ah     I/O Channel Action    1Ah     BIOS time & date      | 
|  0Bh     COM 1 (serial 1)      1Bh     Control Break         | 
|  0Ch     COM 2 (serial 2)      1Ch     Timer Tick            | 
|  0Dh     Fixed Disk            1Dh     Video Initialization  | 
|  0Eh     Diskette              1Eh     Disk Parameters       | 
|  0Fh     LPT 1 (Parallel 1)    1Fh     Graphics Char         | 
+---------------------------------------------------------------+ 
Gambar 3.1. BIOS Interrupt

* Interrupt ini telah dipastikan kegunaannya oleh sistem untuk  keperluan yang khusus , tidak boleh dirubah oleh pemrogram seperti yang lainnya.

- DEVIDE BY ZERO : Jika terjadi pembagian dengan nol maka proses akan segera  dihentikan. 
- SINGLE STEP : Untuk melaksanakan / mengeksekusi intruksi satu persatu. 
- NMI : Pelayanan terhadap NMI (Non Maskable Interrupt) yaitu  interupsi yang tak dapat dicegah.   
- BREAK POINT : Jika suatu program menyebabkan overflow flag menjadi 1 maka interrupt ini akan melayani pencegahannya dan memberi  tanda error. 
     
-------------------------------------------+ 
|  Nomor       Nama Interrupt               | 
|  Interrupt                                | 
+-------------------------------------------+ 
|   20h       Terminate Program             | 
|   21h       DOS Function Services         | 
|   22h       Terminate Code                | 
|   23h       Ctrl-Break Code               | 
|   24h       Critical Error Handler        | 
|   25h       Absolute Disk Read            | 
|   26h       Absolute Disk Write           | 
|   27h       Terminate But Stay Resident   | 
+-------------------------------------------+ 
Gambar 3.2. DOS Interrupt

Didalam pemrograman dengan bahasa assembler kita akan banyak sekali menggunakan interupsi untuk menyelesaikan suatu tugas.

Semoga bermanfaat :D

S ' to

Tidak ada komentar:

Posting Komentar