SlideShare une entreprise Scribd logo
1  sur  14
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 handlertercatat 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.




                                                                                      1
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

 Interrupt                Interrupt             Interrupt              Interrupt

    *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



                                                                                       2
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




                                                                     3
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




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


       Kadang-kadang proses dalam CPU mengalami interrupsi untuk kejadian-kejadian
yangperlu segera mendapat respon, seperti pengetikan pada keyboard, proses I/O lainnya, dan
clock tick untuk mengupdate waktu system. Pada prinsipnya interrupt terbagi atas eksternal, dan
internal. Eksternal interruptdibangkitkan oleh proses diluar program seperti proses I/O, dan
clock, sedangkan prosesInternal interrupt dibangkitkan oleh proses program seperti devide for
zero error (Trapsinterrupt) dan Software interrupt (dibangkitkan dengan perintah INT).


       Ketika suatu interrupt terjadi, processor akan menyelesaikan siklus memori saat ini,
danbercabang kepada rutin khusus menanggani interrupt tersebut, status dari program saat ini
akan disimpan dan rutin interrupt handle umumnya akan mengembalikan kendali keprogram
termasuk semua nilai register seakan-akan tidak pernah terjadi sesuatu (hanyakehilangan
beberapa siklus CPU), sedangkan Traps interrupt tidak akan kembali ke program dan
menghentikan program tersebut.
Catatan : Pada bagian ini kita akan lebih memfokuskan diri pada Software interrupt


Maskable Interrupt
       Processor dapat     mencegah interrupt      dengan     menggunakan mask       bit       khusus
interrupt.Mask bit ini adalah bagian dari flag register pada microprocessor 8086 yang dikenal
sebagai interrupt flag (IF), jika bit ini clear (IF=0), dan terjadi permintaan interrupt pada pin
Interrupt Request, maka permintaan tersebut akan diabaikan.




Non-Maskable Interrupt (NMI)
       Ada beberapa interrupt yang mana tidak dapat di mask atau diabaikan oleh processor, hal
ini terkait dengan tugas-tugas prioritas tinggi yang tidak boleh diabaikan (seperti terjadi pariti
pada memori atau kegagalan BUS). NMI memiliki prioritas yang absolut, dan ketika itu terjadi,
processor menyelesaikan siklus memori saat ini, dan kemudian bercabang ke rutin khusus yang
ditulis untuk menangani permintaan interrupt.



                                                                                           5
Interrupt pada 8086
Adapun urutan dari proses interrupt pada microprocessor 8086 dapat dijelaskan sebagai
berikut:


1. Interface eksternal mengirim suatu sinyal interrupt ke pin Interrupt Request (INTR), atau suatu
internal interrupt terjadi.


2. CPU menyelesaikan instruksi yang berlangsung dan mengirim (untuk suatuhardware interrupt)
dan mengirim Interrupt Acknowledge (INTA) ke interface hardware.
Hendra, MT. & Hartono, M.Kom. 19 Pemrograman Bahasa Rakitan


3. Interrupt jenis N (masing-masing interrupt memiliki nomor) dikirim ke Central Processing
Unit (CPU) melalui data bus dari interface hardware.


4. Isi dari register flag didorong ke stack.


5. Flag interrupt (IF) dan trap (TF) di clear, hal ini akan mencegah pin INTR dan kemampuan
single-step untuk proses debugging (trap)


6. Isi dari register CS didorong ke Stack


7. Isi dari register IP didorong ke Stack


8. Isi dari vektor interrupt diambil, dari (4 x N) dan kemudian ditempatkan ke IP dan dari (4 x N
+ 2) ke CS, sehingga instruksi berikutnya yang akan dijalankan adalah procedure dari interrupt
service berdasarkan alamat pada interrupt vector.


9. Ketika kembali dari rutin interrupt-service oleh instruksi Interrupt Return (IRET),
nilai IP, CS dan register Flag akan ditarik dari Stack dan kembali ke kondisi
sebelum terjadinya interrupt.




                                                                                         6
Software Interrupt
        Software interrupt merupakan fungsi-fungsi yang disediakan oleh BIOS maupun sistim
operasi, dimana fungsi-fungsi tersebut membuat tugas pemrograman menjadi lebih mudah, dari
pada menulisnya sendiri dari awal, anda cukup mengirimkan nilai input yang dibutuhkan melalui
register, kemudian memanggil rutin interrupt tersebut, dan selanjutnya rutin interrupt akan
melakukan fungsinya dan mengembalikan nilai hasil proses melalui register.


        Fungsi yang tersedia dalam interrupt dapat terdiri dari layanan hardware seperti screen,
diskdrive, printer, serial port dan keyboard, maupun layanan secara software seperti directory
dan file.


        Untuk melakukan panggilan terhadap rutin interrupt menggunakan perintah INT N
Dimana N merupakan nomor interrupt yang dapat bernilai 0 s/d 255, yang umumnya ditulis
secara hexadecimal 0 s/d FF Pada kenyataannya masing-masing interrupt terbagi lagi sub-sub
layanan, yang ditentukan pada nilai register AH, sebelum interrupt tersebut dipanggil, sehingga
kitadapat memiliki 256 x 256 = 65536 fungsi layanan. Hendra, MT. & Hartono, M.Kom. 20
Pemrograman Bahasa Rakitan


Pemakaian Interrupt


        Seperti yang telah dijelaskan sebelumnya, salah satu parameter layanan fungsi
interruptadalah sub layanan yang ditentukan oleh nilai register AH, selain nilai register AH, kita
juga perlu mengisi nilai-nilai register lainnya sesuai dengan kebutuhan layanan interrupt tersebut.
Contoh:
INT 21,9 - Print String
AH = 09
DS:DX = menunjuk alat suatu striung yang diakhir dengan "$"




                                                                                          7
returns nothing
- outputs character string to STDOUT up to "$"
- backspace is treated as non-destructive
- if Ctrl-Break is detected, INT 23 is executed


       Berdasarkan data tersebut diatas, maka untuk pemakaian interrupt $21, sub layanan
$9dengan fungsi “Print String”, maka perlu ditentukan nilai register AH=$9, dan kemudian nilai
register DS:DX menunjuk ke alamat suatu string yang diakhiri dengan '$'. Coba kita review
kembali program hello world sebelumnya. Dimana kita menggunakan INT $21 sub layanan
AH=$9 untuk mencetak tulisan yang berada dioffset DX=$102. Jadi dalam hal ini AH dan DX
merupakan parameter bagi INT $21.


0B11:0100 jmp 112
0B11:0102 db 'hello world !',0d,0a,'$'
0B11:0112 mov ah,9
0B11:0114 mov dx,102
0B11:0117 int 21
0B11:0119 mov ah,4c
0B11:011B int 21


       Dalam hal ini kita tidak menentukan nilai DS, karena secara default pada program jenis
COM, nilai DS, ES, dan SS adalah sama dengan CS.


       Pada contoh sebelumnya kita bekerja dengan rutin interrupt yang tidak mengembalikan
hasil, tetapi hanya proses mencetak string ke layar, berikut ini kita akan membahas rutin interrupt
yang mengembalikan hasil.


INT 21,8 - Console Input Without Echo
AH = 08
Hendra, MT. & Hartono, M.Kom. 21
Pemrograman Bahasa Rakitan



                                                                                          8
on return:
AL = character from STDIN
- returns 0 for extended keystroke, then function must be
called again to return scan code
- waits for character from STDIN and returns data in AL
- if Ctrl-Break is detected, INT 23 is executed


       Berdasarkan data tersebut diatas, maka untuk menjalankan fungsi Int $21 “Console Input
Without Echo”, kita perlu ditentukan nilai register AH=$8, dan interrupt rutin akan menunggu
karakter dari STDIN, jika ada karakter yang diketik, maka akan disimpan di register AL.


       Untuk kongkritnya mari kita lihat contoh berikut ini, dimana setelah mencetak
pesan“Ketik huruf A untuk selesai”, program akan menanti input dari keyboard dengan
menggunakan INT $21 sub layanan AH=$8, dan nilai ASCII dari input keyboard akan
dikembalikan di register AL. Selanjutnya program dapat membandingkan nilai register AL
dengan $41 (65 desimal).


0B11:0100 mov ah,9
0B11:0102 mov dx,113
0B11:0105 int 21
0B11:0107 mov ah,8 ;baca dari STDIN tanpa echo
0B11:0109 int 21 ;karakter dikembalikan ke AL
0B11:010B cmp al,41
0B11:010D jnz 100
0B11:010F mov ah,4c
0B11:0111 int 21
0B11:0113 db „Ketik huruf A untuk selesai‟,0d,0a,‟$‟
0B11:0131




                                                                                          9
Latihan
1. Misalkan diberikan suatu data interrupt sebagai berikut:
INT 21,39 - Create Subdirectory (mkdir)
AH = $39
DS:DX = pointer to ASCIIZ path name
on return:
CF = 0 if successful
= 1 if error
AX = error code (see DOS ERROR CODES)
Hendra, MT. & Hartono, M.Kom. 22
Pemrograman Bahasa Rakitan
- creates specified subdirectory
- returns error if directory already exists, element of the path
is not found, directory full or write protected disk
Catatan: ASCIIZ adalah suatu string yang diakhiri dengan null (0)
Buatlah sebuah program assembly yang dapat membuat directory di E:Hendra.
2. Misalkan diberikan suatu data interrupt sebagai berikut:


INT 21,3B - Change Current Directory (chdir)
AH = $3B
DS:DX = pointer to ASCIIZ path name
on return:
CF = 0 if successful
= 1 if error
AX = error code if CF set (see DOS ERROR CODES)
- changes the current directory to the directory specified
by pointer DS:DX
Buat program yang dapat mengaktifkan ke directory E:Hendra.




                                                                             10
3. Misalkan diberikan suatu data interrupt sebagai berikut:
INT 21,56 - Rename File
AH = $56
DS:DX = pointer to old ASCIIZ path/filename
ES:DI = pointer to new ASCIIZ path/filename
on return:
AX = error code if CF set (see DOS ERROR CODES)
- supports full pathnames and allows renaming files across
directories and in DOS 3.x allows renaming subdirectories
- does not support use of wildcards unless invoked from via
INT $21, $5D in which case error code $12 is returned
- unpredictable result may occur if an opened file is renamed
- see Bibliography reference to "Undocumented DOS"
Buatlah program yang dapat mengubah directori E:Hendra menjadi E:Susan
Hendra, MT. & Hartono, M.Kom. 23
Pemrograman Bahasa Rakitan


Quiz :
1. Jika anda diberi data sebagai berikut
INT 10h / AH = 2 – setting posisi cursor.
input:
DH = baris.
DL = kolom.
BH = nomor halaman (0..7).
Contoh:
mov dh, 10
mov dl, 20
mov bh, 0
mov ah, 2
int 10h



                                                                           11
Buatlah program yang dapat mencetak tulisan “Hello World” pada lokasi 10,10.


2. Jika anda diberi data sebagai berikut


INT 10h / AH = 03h – mendapatkan posisi cursor dan ukuran.
input:
BH = page number.
return:
DH = row.
DL = column.
CH = cursor start line.
CL = cursor bottom line.
Untuk menyimpan nilai register 16-bit ke Stack anda dapat mengunakan perintah
PUSH, dan untuk mengambil kembali nilai dari Stack anda dapat menggunakan
POP.
Contoh:
Push DX
Pop DX
Buatlah program yang dapat mencetak tulisan “Hello World” pada lokasi 10,10
dan mengembalikan posisi cursor ke lokasi semula sebelum proses pencetakan.
Hendra, MT. & Hartono, M.Kom. 24
Pemrograman Bahasa Rakitan




                                                                                12
3. Jika anda diberi data sebagai berikut
INT 10h / AH = 06h – menggulung layar ke atas.
INT 10h / AH = 07h – menggulung layer ke bawah.
input:
AL = jumlah baris yang digulung (00h = membersihkan layar).
BH = attribute untuk baris kosong pada bagian bawah window.
CH, CL = row, column sisi kiri atas jendela.
DH, DL = row, column sisi kanan bawah jendela.
Atribut
HEX BIN COLOR
0 0000 black
1 0001 blue
2 0010 green
3 0011 cyan
4 0100 red
5 0101 magenta
6 0110 brown
7 0111 light gray
8 1000 dark gray
9 1001 light blue
A 1010 light green
B 1011 light cyan
C 1100 light red
D 1101 light magenta
E 1110 yellow
F 1111 white
Jika nilai BH = $07, berarti warna background adalah black (0), dan warna foreground adalah
light gray (7).
Jumlah Baris = 0 s/d 24
Jumlah Kolom = 0 s/d 79



                                                                                     13
Buatlah program yang mensimulasi perintah CLS pada DOS, dan mengeserkursor ke posisi
sudut kiri atas.




4. Jika anda diberi data berikut :
INT 16h / AH = 00h - ambil keystroke dari keyboard (no echo).
return:
AH = BIOS scan code.
Hendra, MT. & Hartono, M.Kom. 25
Pemrograman Bahasa Rakitan
AL = ASCII character.
(if a keystroke is present, it is removed from the keyboard buffer).
INT 10h / AH = 0Eh - teletype output.
input:
AL = karakter yang dicetak.
Fungsi ini menampilkan suatu karakter pada layer, memajukan cursor dan
mengulung layer bila perlu, pencetakan dilakukan pada halaman yang aktif.
Contoh:
mov al, 'a'
mov ah, 0eh
int 10h
Buatlah program yang mengambil satu ketukan dari keyboard dan mencetak
kelayar pada posisi cursor aktif.




                                                                                14

Contenu connexe

Tendances

Mp 4 mode-pengalamatan
Mp 4 mode-pengalamatanMp 4 mode-pengalamatan
Mp 4 mode-pengalamatanOlbers Letfaar
 
Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]
Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]
Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]Dwi Prasetyo
 
Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)rein sahren
 
 Manajemen memory dan Swapping
 Manajemen memory dan Swapping Manajemen memory dan Swapping
 Manajemen memory dan SwappingEdho Pratama
 
01 memahami bahasa assembly
01 memahami bahasa assembly01 memahami bahasa assembly
01 memahami bahasa assemblyArman Tan
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatanBuhori Muslim
 
Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80Habibullah Srg
 
Ii Rangkaian Listrik Fasor
Ii Rangkaian Listrik FasorIi Rangkaian Listrik Fasor
Ii Rangkaian Listrik FasorFauzi Nugroho
 
Testing&implementasi 2
Testing&implementasi 2Testing&implementasi 2
Testing&implementasi 2aiiniR
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Wesnu Prajati
 
Pertemuan 2 orkomr_struktur__fungsi_komputer
Pertemuan 2 orkomr_struktur__fungsi_komputerPertemuan 2 orkomr_struktur__fungsi_komputer
Pertemuan 2 orkomr_struktur__fungsi_komputersaid zulhelmi
 

Tendances (20)

Mp 4 mode-pengalamatan
Mp 4 mode-pengalamatanMp 4 mode-pengalamatan
Mp 4 mode-pengalamatan
 
Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]
Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]
Remidial sistem mikroprosesor interrupt [dwi novia prasetyo 1410501052]
 
Jenis dan proses interupsi
Jenis dan proses interupsiJenis dan proses interupsi
Jenis dan proses interupsi
 
Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)Sistem Waktu Nyata (Real Time System)
Sistem Waktu Nyata (Real Time System)
 
 Manajemen memory dan Swapping
 Manajemen memory dan Swapping Manajemen memory dan Swapping
 Manajemen memory dan Swapping
 
UNIT CONTROL Tgs.ppt
 UNIT CONTROL  Tgs.ppt UNIT CONTROL  Tgs.ppt
UNIT CONTROL Tgs.ppt
 
Modul pengenalan proteus
Modul pengenalan proteusModul pengenalan proteus
Modul pengenalan proteus
 
Ppt register
Ppt register Ppt register
Ppt register
 
Bab 3 flip flop
Bab 3   flip flopBab 3   flip flop
Bab 3 flip flop
 
01 memahami bahasa assembly
01 memahami bahasa assembly01 memahami bahasa assembly
01 memahami bahasa assembly
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
 
Modul io
Modul ioModul io
Modul io
 
Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80Mikroprosesor Zilog Z80
Mikroprosesor Zilog Z80
 
Sejarah Perkembangan Prosessor Intel
Sejarah Perkembangan Prosessor IntelSejarah Perkembangan Prosessor Intel
Sejarah Perkembangan Prosessor Intel
 
Ii Rangkaian Listrik Fasor
Ii Rangkaian Listrik FasorIi Rangkaian Listrik Fasor
Ii Rangkaian Listrik Fasor
 
Testing&implementasi 2
Testing&implementasi 2Testing&implementasi 2
Testing&implementasi 2
 
Cache memory
Cache memoryCache memory
Cache memory
 
Register
RegisterRegister
Register
 
Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led Laporan praktikum mikrokontroler dengan led
Laporan praktikum mikrokontroler dengan led
 
Pertemuan 2 orkomr_struktur__fungsi_komputer
Pertemuan 2 orkomr_struktur__fungsi_komputerPertemuan 2 orkomr_struktur__fungsi_komputer
Pertemuan 2 orkomr_struktur__fungsi_komputer
 

Similaire à OPTIMIZED TITLE FOR INTERRUPT DOCUMENT

materi interruption
materi interruptionmateri interruption
materi interruptionElviraHafis2
 
Materi teknologi informasi dan komunikasi
Materi teknologi informasi dan komunikasiMateri teknologi informasi dan komunikasi
Materi teknologi informasi dan komunikasiPretty Menur
 
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535al farisi
 
Presentasi dan video pembelajaran Mikrokontroller
Presentasi dan video pembelajaran MikrokontrollerPresentasi dan video pembelajaran Mikrokontroller
Presentasi dan video pembelajaran Mikrokontrollerirsyadsyawal1
 
14684664 mikroprosesor
14684664 mikroprosesor14684664 mikroprosesor
14684664 mikroprosesorAbe Mubarok
 
Nanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputerNanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputersariprahmat
 
Nanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputerNanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputersariprahmat
 
Nota Pengenalan Kepada Komputer.pdf
Nota Pengenalan Kepada Komputer.pdfNota Pengenalan Kepada Komputer.pdf
Nota Pengenalan Kepada Komputer.pdfnazmijuhari
 
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009newM I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009newDeddy Susilo
 

Similaire à OPTIMIZED TITLE FOR INTERRUPT DOCUMENT (20)

AOK 04
AOK 04AOK 04
AOK 04
 
K14. mikrokontroler
K14. mikrokontrolerK14. mikrokontroler
K14. mikrokontroler
 
materi interruption
materi interruptionmateri interruption
materi interruption
 
Materi teknologi informasi dan komunikasi
Materi teknologi informasi dan komunikasiMateri teknologi informasi dan komunikasi
Materi teknologi informasi dan komunikasi
 
Direct memoryaccess
Direct memoryaccessDirect memoryaccess
Direct memoryaccess
 
Bahan uas mp
Bahan uas mpBahan uas mp
Bahan uas mp
 
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
Perancangan keypad mesin fotocopy sederhana menggunakan ATmega8535
 
Presentasi dan video pembelajaran Mikrokontroller
Presentasi dan video pembelajaran MikrokontrollerPresentasi dan video pembelajaran Mikrokontroller
Presentasi dan video pembelajaran Mikrokontroller
 
Bab 1 kelas x
Bab 1 kelas xBab 1 kelas x
Bab 1 kelas x
 
Bab 1 kelas x
Bab 1 kelas xBab 1 kelas x
Bab 1 kelas x
 
Komputer terapan
Komputer terapanKomputer terapan
Komputer terapan
 
Tugas perkom part 3
Tugas perkom part 3Tugas perkom part 3
Tugas perkom part 3
 
14684664 mikroprosesor
14684664 mikroprosesor14684664 mikroprosesor
14684664 mikroprosesor
 
Pti 3
Pti 3Pti 3
Pti 3
 
Bab ii atmega8
Bab ii atmega8Bab ii atmega8
Bab ii atmega8
 
Nanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputerNanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputer
 
Nanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputerNanopdf.com fungsi dasar-komponen-komputer
Nanopdf.com fungsi dasar-komponen-komputer
 
Bahan ajar
Bahan ajarBahan ajar
Bahan ajar
 
Nota Pengenalan Kepada Komputer.pdf
Nota Pengenalan Kepada Komputer.pdfNota Pengenalan Kepada Komputer.pdf
Nota Pengenalan Kepada Komputer.pdf
 
M I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009newM I C R O C O N T R O L L E R 2009new
M I C R O C O N T R O L L E R 2009new
 

OPTIMIZED TITLE FOR INTERRUPT DOCUMENT

  • 1. 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 handlertercatat 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. 1
  • 2. 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 Interrupt Interrupt Interrupt Interrupt *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 2
  • 3. 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 3
  • 4. 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 4
  • 5. Didalam pemrograman dengan bahasa assembler kita akan banyak sekali menggunakan interupsi untuk menyelesaikan suatu tugas. Kadang-kadang proses dalam CPU mengalami interrupsi untuk kejadian-kejadian yangperlu segera mendapat respon, seperti pengetikan pada keyboard, proses I/O lainnya, dan clock tick untuk mengupdate waktu system. Pada prinsipnya interrupt terbagi atas eksternal, dan internal. Eksternal interruptdibangkitkan oleh proses diluar program seperti proses I/O, dan clock, sedangkan prosesInternal interrupt dibangkitkan oleh proses program seperti devide for zero error (Trapsinterrupt) dan Software interrupt (dibangkitkan dengan perintah INT). Ketika suatu interrupt terjadi, processor akan menyelesaikan siklus memori saat ini, danbercabang kepada rutin khusus menanggani interrupt tersebut, status dari program saat ini akan disimpan dan rutin interrupt handle umumnya akan mengembalikan kendali keprogram termasuk semua nilai register seakan-akan tidak pernah terjadi sesuatu (hanyakehilangan beberapa siklus CPU), sedangkan Traps interrupt tidak akan kembali ke program dan menghentikan program tersebut. Catatan : Pada bagian ini kita akan lebih memfokuskan diri pada Software interrupt Maskable Interrupt Processor dapat mencegah interrupt dengan menggunakan mask bit khusus interrupt.Mask bit ini adalah bagian dari flag register pada microprocessor 8086 yang dikenal sebagai interrupt flag (IF), jika bit ini clear (IF=0), dan terjadi permintaan interrupt pada pin Interrupt Request, maka permintaan tersebut akan diabaikan. Non-Maskable Interrupt (NMI) Ada beberapa interrupt yang mana tidak dapat di mask atau diabaikan oleh processor, hal ini terkait dengan tugas-tugas prioritas tinggi yang tidak boleh diabaikan (seperti terjadi pariti pada memori atau kegagalan BUS). NMI memiliki prioritas yang absolut, dan ketika itu terjadi, processor menyelesaikan siklus memori saat ini, dan kemudian bercabang ke rutin khusus yang ditulis untuk menangani permintaan interrupt. 5
  • 6. Interrupt pada 8086 Adapun urutan dari proses interrupt pada microprocessor 8086 dapat dijelaskan sebagai berikut: 1. Interface eksternal mengirim suatu sinyal interrupt ke pin Interrupt Request (INTR), atau suatu internal interrupt terjadi. 2. CPU menyelesaikan instruksi yang berlangsung dan mengirim (untuk suatuhardware interrupt) dan mengirim Interrupt Acknowledge (INTA) ke interface hardware. Hendra, MT. & Hartono, M.Kom. 19 Pemrograman Bahasa Rakitan 3. Interrupt jenis N (masing-masing interrupt memiliki nomor) dikirim ke Central Processing Unit (CPU) melalui data bus dari interface hardware. 4. Isi dari register flag didorong ke stack. 5. Flag interrupt (IF) dan trap (TF) di clear, hal ini akan mencegah pin INTR dan kemampuan single-step untuk proses debugging (trap) 6. Isi dari register CS didorong ke Stack 7. Isi dari register IP didorong ke Stack 8. Isi dari vektor interrupt diambil, dari (4 x N) dan kemudian ditempatkan ke IP dan dari (4 x N + 2) ke CS, sehingga instruksi berikutnya yang akan dijalankan adalah procedure dari interrupt service berdasarkan alamat pada interrupt vector. 9. Ketika kembali dari rutin interrupt-service oleh instruksi Interrupt Return (IRET), nilai IP, CS dan register Flag akan ditarik dari Stack dan kembali ke kondisi sebelum terjadinya interrupt. 6
  • 7. Software Interrupt Software interrupt merupakan fungsi-fungsi yang disediakan oleh BIOS maupun sistim operasi, dimana fungsi-fungsi tersebut membuat tugas pemrograman menjadi lebih mudah, dari pada menulisnya sendiri dari awal, anda cukup mengirimkan nilai input yang dibutuhkan melalui register, kemudian memanggil rutin interrupt tersebut, dan selanjutnya rutin interrupt akan melakukan fungsinya dan mengembalikan nilai hasil proses melalui register. Fungsi yang tersedia dalam interrupt dapat terdiri dari layanan hardware seperti screen, diskdrive, printer, serial port dan keyboard, maupun layanan secara software seperti directory dan file. Untuk melakukan panggilan terhadap rutin interrupt menggunakan perintah INT N Dimana N merupakan nomor interrupt yang dapat bernilai 0 s/d 255, yang umumnya ditulis secara hexadecimal 0 s/d FF Pada kenyataannya masing-masing interrupt terbagi lagi sub-sub layanan, yang ditentukan pada nilai register AH, sebelum interrupt tersebut dipanggil, sehingga kitadapat memiliki 256 x 256 = 65536 fungsi layanan. Hendra, MT. & Hartono, M.Kom. 20 Pemrograman Bahasa Rakitan Pemakaian Interrupt Seperti yang telah dijelaskan sebelumnya, salah satu parameter layanan fungsi interruptadalah sub layanan yang ditentukan oleh nilai register AH, selain nilai register AH, kita juga perlu mengisi nilai-nilai register lainnya sesuai dengan kebutuhan layanan interrupt tersebut. Contoh: INT 21,9 - Print String AH = 09 DS:DX = menunjuk alat suatu striung yang diakhir dengan "$" 7
  • 8. returns nothing - outputs character string to STDOUT up to "$" - backspace is treated as non-destructive - if Ctrl-Break is detected, INT 23 is executed Berdasarkan data tersebut diatas, maka untuk pemakaian interrupt $21, sub layanan $9dengan fungsi “Print String”, maka perlu ditentukan nilai register AH=$9, dan kemudian nilai register DS:DX menunjuk ke alamat suatu string yang diakhiri dengan '$'. Coba kita review kembali program hello world sebelumnya. Dimana kita menggunakan INT $21 sub layanan AH=$9 untuk mencetak tulisan yang berada dioffset DX=$102. Jadi dalam hal ini AH dan DX merupakan parameter bagi INT $21. 0B11:0100 jmp 112 0B11:0102 db 'hello world !',0d,0a,'$' 0B11:0112 mov ah,9 0B11:0114 mov dx,102 0B11:0117 int 21 0B11:0119 mov ah,4c 0B11:011B int 21 Dalam hal ini kita tidak menentukan nilai DS, karena secara default pada program jenis COM, nilai DS, ES, dan SS adalah sama dengan CS. Pada contoh sebelumnya kita bekerja dengan rutin interrupt yang tidak mengembalikan hasil, tetapi hanya proses mencetak string ke layar, berikut ini kita akan membahas rutin interrupt yang mengembalikan hasil. INT 21,8 - Console Input Without Echo AH = 08 Hendra, MT. & Hartono, M.Kom. 21 Pemrograman Bahasa Rakitan 8
  • 9. on return: AL = character from STDIN - returns 0 for extended keystroke, then function must be called again to return scan code - waits for character from STDIN and returns data in AL - if Ctrl-Break is detected, INT 23 is executed Berdasarkan data tersebut diatas, maka untuk menjalankan fungsi Int $21 “Console Input Without Echo”, kita perlu ditentukan nilai register AH=$8, dan interrupt rutin akan menunggu karakter dari STDIN, jika ada karakter yang diketik, maka akan disimpan di register AL. Untuk kongkritnya mari kita lihat contoh berikut ini, dimana setelah mencetak pesan“Ketik huruf A untuk selesai”, program akan menanti input dari keyboard dengan menggunakan INT $21 sub layanan AH=$8, dan nilai ASCII dari input keyboard akan dikembalikan di register AL. Selanjutnya program dapat membandingkan nilai register AL dengan $41 (65 desimal). 0B11:0100 mov ah,9 0B11:0102 mov dx,113 0B11:0105 int 21 0B11:0107 mov ah,8 ;baca dari STDIN tanpa echo 0B11:0109 int 21 ;karakter dikembalikan ke AL 0B11:010B cmp al,41 0B11:010D jnz 100 0B11:010F mov ah,4c 0B11:0111 int 21 0B11:0113 db „Ketik huruf A untuk selesai‟,0d,0a,‟$‟ 0B11:0131 9
  • 10. Latihan 1. Misalkan diberikan suatu data interrupt sebagai berikut: INT 21,39 - Create Subdirectory (mkdir) AH = $39 DS:DX = pointer to ASCIIZ path name on return: CF = 0 if successful = 1 if error AX = error code (see DOS ERROR CODES) Hendra, MT. & Hartono, M.Kom. 22 Pemrograman Bahasa Rakitan - creates specified subdirectory - returns error if directory already exists, element of the path is not found, directory full or write protected disk Catatan: ASCIIZ adalah suatu string yang diakhiri dengan null (0) Buatlah sebuah program assembly yang dapat membuat directory di E:Hendra. 2. Misalkan diberikan suatu data interrupt sebagai berikut: INT 21,3B - Change Current Directory (chdir) AH = $3B DS:DX = pointer to ASCIIZ path name on return: CF = 0 if successful = 1 if error AX = error code if CF set (see DOS ERROR CODES) - changes the current directory to the directory specified by pointer DS:DX Buat program yang dapat mengaktifkan ke directory E:Hendra. 10
  • 11. 3. Misalkan diberikan suatu data interrupt sebagai berikut: INT 21,56 - Rename File AH = $56 DS:DX = pointer to old ASCIIZ path/filename ES:DI = pointer to new ASCIIZ path/filename on return: AX = error code if CF set (see DOS ERROR CODES) - supports full pathnames and allows renaming files across directories and in DOS 3.x allows renaming subdirectories - does not support use of wildcards unless invoked from via INT $21, $5D in which case error code $12 is returned - unpredictable result may occur if an opened file is renamed - see Bibliography reference to "Undocumented DOS" Buatlah program yang dapat mengubah directori E:Hendra menjadi E:Susan Hendra, MT. & Hartono, M.Kom. 23 Pemrograman Bahasa Rakitan Quiz : 1. Jika anda diberi data sebagai berikut INT 10h / AH = 2 – setting posisi cursor. input: DH = baris. DL = kolom. BH = nomor halaman (0..7). Contoh: mov dh, 10 mov dl, 20 mov bh, 0 mov ah, 2 int 10h 11
  • 12. Buatlah program yang dapat mencetak tulisan “Hello World” pada lokasi 10,10. 2. Jika anda diberi data sebagai berikut INT 10h / AH = 03h – mendapatkan posisi cursor dan ukuran. input: BH = page number. return: DH = row. DL = column. CH = cursor start line. CL = cursor bottom line. Untuk menyimpan nilai register 16-bit ke Stack anda dapat mengunakan perintah PUSH, dan untuk mengambil kembali nilai dari Stack anda dapat menggunakan POP. Contoh: Push DX Pop DX Buatlah program yang dapat mencetak tulisan “Hello World” pada lokasi 10,10 dan mengembalikan posisi cursor ke lokasi semula sebelum proses pencetakan. Hendra, MT. & Hartono, M.Kom. 24 Pemrograman Bahasa Rakitan 12
  • 13. 3. Jika anda diberi data sebagai berikut INT 10h / AH = 06h – menggulung layar ke atas. INT 10h / AH = 07h – menggulung layer ke bawah. input: AL = jumlah baris yang digulung (00h = membersihkan layar). BH = attribute untuk baris kosong pada bagian bawah window. CH, CL = row, column sisi kiri atas jendela. DH, DL = row, column sisi kanan bawah jendela. Atribut HEX BIN COLOR 0 0000 black 1 0001 blue 2 0010 green 3 0011 cyan 4 0100 red 5 0101 magenta 6 0110 brown 7 0111 light gray 8 1000 dark gray 9 1001 light blue A 1010 light green B 1011 light cyan C 1100 light red D 1101 light magenta E 1110 yellow F 1111 white Jika nilai BH = $07, berarti warna background adalah black (0), dan warna foreground adalah light gray (7). Jumlah Baris = 0 s/d 24 Jumlah Kolom = 0 s/d 79 13
  • 14. Buatlah program yang mensimulasi perintah CLS pada DOS, dan mengeserkursor ke posisi sudut kiri atas. 4. Jika anda diberi data berikut : INT 16h / AH = 00h - ambil keystroke dari keyboard (no echo). return: AH = BIOS scan code. Hendra, MT. & Hartono, M.Kom. 25 Pemrograman Bahasa Rakitan AL = ASCII character. (if a keystroke is present, it is removed from the keyboard buffer). INT 10h / AH = 0Eh - teletype output. input: AL = karakter yang dicetak. Fungsi ini menampilkan suatu karakter pada layer, memajukan cursor dan mengulung layer bila perlu, pencetakan dilakukan pada halaman yang aktif. Contoh: mov al, 'a' mov ah, 0eh int 10h Buatlah program yang mengambil satu ketukan dari keyboard dan mencetak kelayar pada posisi cursor aktif. 14