stack,subroutine,interrupt

17
BAB IV INTERUPSI DAN COMPILER BAHASA RAKITAN Tujuan Instruksiona l Pada Bab ini dijelaskan mengenai interupsi pada mikroprosesor dan register register yan g terk ait dal am pemrog raman bah asa rak itan gun a mendukun g ope ras i ker ja sin taks sin tak s bah asa rakitan. Diharapkan dengan men get ahu i int erupsi pad a mikroprosesor mahasiswa mampu untuk mulai mempelajari mengenai sintaks sintaks  bahasa rakitan Pengertian Interupsi Interr upt atau interu psi adalah prose s dalam komput er untu k memin ta dilayani oleh mikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa oleh sistem hardware computer.CPU banyak melaksanakan routin untuk melakukan  pelayanan pemrosesan ataupun koordinasi kepada IC penunjang atau chipset dan  peripherals pada saat diperlukan. Sehingga CPU dapat melakukan operasi dengan 2 cara yaitu : 1. Operasi dengan polling 2. Operasi dengan interrupt Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke tiap-tiap komponen penunjang satu persatu meskipun komponen itu sedang tidak memerlukan pelayanan. Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada CPU bil amana memerlu kan pel ayanan pemrosesan, sehing ga CPU tidak ter us- menerus menan yakan /memantau kompon en itu. Setiap interu psi yang datang di kontrol oleh interrupt controller di luar CPU. Dalam keadaan CPU terkena interupsi, mak a CPU untuk ses aat men ghe nti kan keg iatan pel ayanan utama dan ber alih melayani komp onen yang menginter upsin ya. Setela h selesa i dilayani CPU kemb ali mel aku kan pel ayanan utaman ya. Car a int eru psi sangat men ing kat kan effi siensi ope ras i CPU dan mel aku kan tug asnya den gan cepat. Interupsi dap at dil aku kan

Upload: fitra-ramdhani

Post on 06-Jul-2015

288 views

Category:

Documents


0 download

TRANSCRIPT

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 1/17

 

BAB IV

INTERUPSI DAN COMPILER BAHASA RAKITAN

Tujuan Instruksional

Pada Bab ini dijelaskan mengenai interupsi pada mikroprosesor dan register register 

yang terkait dalam pemrograman bahasa rakitan guna mendukung operasi kerja

sintaks sintaks bahasa rakitan. Diharapkan dengan mengetahui interupsi pada

mikroprosesor mahasiswa mampu untuk mulai mempelajari mengenai sintaks sintaks

 bahasa rakitan

Pengertian Interupsi

Interrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani oleh

mikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa

oleh sistem hardware computer.CPU banyak melaksanakan routin untuk melakukan

 pelayanan pemrosesan ataupun koordinasi kepada IC penunjang atau chipset dan

 peripherals pada saat diperlukan. Sehingga CPU dapat melakukan operasi dengan 2

cara yaitu :

1. Operasi dengan polling

2. Operasi dengan interrupt

Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke

tiap-tiap komponen penunjang satu persatu meskipun komponen itu sedang tidak 

memerlukan pelayanan.

Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada

CPU bilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-

menerus menanyakan /memantau komponen itu. Setiap interupsi yang datang di

kontrol oleh interrupt controller di luar CPU. Dalam keadaan CPU terkena interupsi,

maka CPU untuk sesaat menghentikan kegiatan pelayanan utama dan beralih

melayani komponen yang menginterupsinya. Setelah selesai dilayani CPU kembali

melakukan pelayanan utamanya. Cara interupsi sangat meningkatkan effisiensi

operasi CPU dan melakukan tugasnya dengan cepat. Interupsi dapat dilakukan

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 2/17

 

dengan cara hardware dan software, sehingga CPU dapat menerima 3 macam

interupsi antara lain :

1. Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH)

2. Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak 

dapat dicegah karena berasal dari sistem board atau IC.

3. Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup

atau

dicegah dengan instruksi CLI berasal dari interupsi perangkat lunak.

Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal

masingmasing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment dan

2 byte untuk Instruction Pointer.

Dalam pemrograman assembler kita dapat melakukan interupsi secara software

dengan perintah INT yang dapat dilihat dalam tabel interupsi. Interrupt Software

dalam PC terbagi dua yaitu :

1. Interrupt BIOS (Basic Input Output Sistem)

2. Interrupt DOS (Disk Operating Sistem)

Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan akses

 pelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya

diwajibkan telah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang

disusun berurutan dan diberi servis number (nomor pelayanan) tersendiri. Interrupt

DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT 20H untuk 

kembali ke DOS dan INT 21H untuk operasi Input/Output.

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

29

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 3/17

 

  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 di-load

ke memori oleh DOS pada saat DOS digunakan. Lokasi Interupt Vector Table-nya

ada di alamat absolut 07Fh-3FFh. 13

+---------------------------------------------------------------+

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

30

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 4/17

 

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

+-------------------------------------------+

| 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

COMPILER DAN LINKER

Untuk membuat bahasa rakitan diperlukan perlengkapan yang merupakan software

antara lain dari DOS berupa Debug.COM atau dari Borland International berupa

Turbo Assembler atau program lainnya. Khusus untuk membuat program dengan

31

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 5/17

 

Turbo Assembler maka perlengkapannya terdiri dari : Compiler dan Linker yang

compatible dengan computer PC XT/AT/Pentium dan processor Intel, AMD, Cyrix.

Pada pemrograman assembler dikenal istilah Compiler merupakan suatu program

yang dapat mengubah suatu file berextensi .ASM (assembler) menjadi file Object

 berekstensi .OBJ. Compiler ini juga dapat memberitahukan isi suatu program yang

akan dikompilasi apakah mengandung kesalahan (error) per baris atau perintah yang

tidak sesuai. Compiler pada bahasa rakitan khususnya Turbo Assembler 

menggunakan TASM.EXE. Source program yang dikompile dengan compiler TASM

dibuat dengan teks editor DOS atau Windows dan disimpan dengan nama file .ASM

di directori yang berisi TASM.EXE agar lebih mudah dalam mengkompilasinya.

Cara mengkompilasi program sumber (source program) menjadi program objek 

adalah :TASM (nama file .ASM) (nama file .OBJ)

Contoh:

LATIH1.ASM dikompile dengan TASM.EXE di directory A menjadi :

A>TASM LATIH1.ASM LATIH1.OBJ (enter)

atau

A>TASM LATIH1 (enter)

Maka di layar tampak:

Turbo Assembler Version 2.0 Copyright (c) 1988 by Borland International

Assembling file: LATIH1.ASM

Error messages: None

Warning messages: None

Remaining memory: 16k 

Jika kita ingin membuat file objek dari source program assembler disertai dengan

nomor kesalahan yang mungkin terjadi pada baris program (file .LST), maka kita

dapat memberiperintah sebagi berikut:

A>TASM /L nama_file.ASM (enter)

Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file

.LST

A>Edit nama_file.LST (enter)

Sedangkan Linker merupakan program yang dapat mengubah file Objek menjadi file

COM atau

EXE. Program Linker dapat mengkonversi file objek yang berupa relocatable object

code yang

32

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 6/17

 

 berupa bahasa mesin yang secara relative masih harus ditepatkan kedudukannya dan

disesuaikan dengan aturan DOS. Program pelayanan Linker pada Turbo Assembler 

adalah TLINK.EXE Penggunaan linker TLINK.EXE mernghasilkan file dengan

nama file berekstensi COM atau EXE yang terdiri dari kode bahasa mesin yang telah

  pasti penempatannya sehingga dapat disimpan di memori (RAM) untuk 

melaksanakan program. Semua proses assembly dan semua proses link harus tidak 

ada kesalahan artinya error harus 0. Jika masih ada error program harus diedit

dengan membuka source program (file .ASM). Untuk menjalankan file yang telah

dilinker dengan TLINK.EXE, maka langsung dapat dieksekusi dengan mengetik 

nama file di depan prompt DOS atau di run melalui Windows Cara melakukan linker 

 pada sebuah objek program (.OBJ) menjadi program COM atau EXE

adalah : TLINK /T (nama file .OBJ) -> untuk menjadi file berekstensi OBJ

atau

TLINK (nama file .OBJ) -> untuk menjadi file berekstensi .EXE

Perbedaan Com dan Exe

Program COM adalah salah satu jenis executable program. Ada beberapa sifat antara

COM dengan EXE. Perbedaan sifat (kelebihan dan kekurangan) masing-masing

adalah sebagai berikut:

- Program COM :

1. Relatif lebih kecil dibanding EXE

2. Lebih cepat dibanding EXE

3. Hanya menggunakan 1 segment

4. Ukuran file maksimal 64 KB

5. Sulit mengakses data/prosedur di segment lain

6. Dapat dibuat dengan Debug

7. Source file tidak boleh menggunakan referensi segment tertentu

8. Source file tidak boleh memakai data segment

9. Source file tidak boleh memakai stack segment

10. Harus diawali dengan ORG 100H, artinya pada Code segment yang dipilih,

executable code ahrus mulai di CS:0100

33

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 7/17

 

EXE

1. Relatif lebih besar dibanding COM

2. Lebih lambat dibanding dengan COM

3. Bisa menggunakan lebih dari 1 segment

4. Ukuran berkas tidak terbatas (sesuai kemampuan memori)

5. Mudah mengakses data/prosedur di segment lain

6. Tidak dapat dibuat dengan Debug dari DOS.

7. Source file boleh memilih memakai segment tertentu.

8. Source file boleh memakai data segment

9. Source file boleh memakai stack segment

10. Tidak perlu menggunakan ORG 100H untuk setiap Code segment.

Dari perbandingan tersebut terlihat bahwa program COM lebih sederhana dibanding

 program

EXE.

Baris-baris instruksi program dikenal dengan nama Mnemonic, ditulis dan disimpan

dalam file

 berekstensi .ASM misalnya: Coba1.ASM

34

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 8/17

 

Interrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani oleh

mikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa

oleh sistem hardware computer. CPU banyak melaksanakan routin untuk melakukan

 pelayanan pemrosesan ataupun koordinasi kepada IC penunjang atau chipset dan

 peripherals pada saat diperlukan. Sehingga CPU dapat melakukan operasi dengan 2

cara yaitu :1. Operasi dengan polling 2. Opreasi dengan interrupt

Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke

tiap-tiap komponen penunjang satu persatu meskipun komponen itu sedang tidak 

memerlukan pelayanan.

Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada

CPU bilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-

menerus menanyakan /memantau komponen itu. Setiap interupsi yang datang di

kontrol oleh interrupt controller di luar CPU. Dalam keadaan CPU terkena interupsi,

maka CPU untuk sesaat menghentikan kegiatan pelayanan utama dan beralih

melayani komponen yang menginterupsinya. Setelah selesai dilayani CPU kembali

melakukan pelayanan utamanya.Cara interupsi sangat meningkatkan effisiensi operasi CPU dan melakukan tugasnya

dengan cepat.

Interupsi dapat dilakukan dengan cara hardware dan software, sehingga CPU dapat

menerima 3 macam interupsi antara lain :

Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH)

 Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak dapat

dicegah karena berasal dari sistem board atau IC.

Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup atau

dicegah dengan instruksi CLI berasal dari interupsi perangkat lunak.

Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal

masing-masing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment

dan 2 byte untuk Instruction Pointer.

Dalam pemrograman assembler kita dapat melakukan interupsi secara software

dengan perintah INT yang dapat dilihat dalam tabel interupsi.

Interrupt Software dalam PC terbagi dua yaitu :

1.Interrupt BIOS (Basic Input Output Sistem) 2. Interrupt DOS (Disk Operating

Sistem)

Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan akses

 pelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya

diwajibkan telah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang

disusun berurutan dan diberi servis number (nomor pelayanan) tersendiri.Interrupt DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT

20H untuk kembali ke DOS dan INT 21H untuk operasi Input/Output.

Kejadian-kejadian sinkron yang merupakan tanggapan pemroses terhadap kondisi-

kondisi tertentu yang memerlukan perhatian. Sebuah setting hardware yang

menjalankan perintah-perintah dalam sistem komputer.

Interrupt secara harfiah dalam bahasa Indonesianya diartikan sebagai selaan,

menyela, atau menjegal, atau istilah kerennya disebut dengan interupsi.

Interrupt bisa diibaratkan dalam kehidupan sehari-hari sebagai suatu proses berjalan,

namun belum selesai proses tersebut melakukan tugasnya, sudah dilaksanakan lagi

 proses lainnya.

Ibaratnya begini, ketika anda sedang melakukan suatu pekerjaan, katakanlahmembaca sebuah buku, belum selesai buku tersebut anda tamatkan, lalu telepon anda

35

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 9/17

 

 berbunyi, sehingga anda melakukan percakapan terlebih dahulu melalui telepon

tersebut. Setelah pembicaraan selesai, anda melanjutkan membaca buku tadi.

menerima telepon di dalam kejadian tersebut disebut dengan menyela.

Begitu juga dengan proses yang terjadi pada komputer. Apabila sebuah komputer 

melakukan prosesnya tanda ada gangguan, tentu komputer tersebut dapat

menyelesaikan pekerjaannya dengan serius khusus untuk satu pekerjaan yang sedangdikerjakannya. Dalam kondisi demikian, komputer anda melakukan tugasnya yang

disebut dengan primitive batch processing. Pekerjaan seperti ini digunakan oleh

komputer pada komputer zaman awal-awal ditemukannya. Dimana komputer tidak 

 bisa mengerjakan beberapa program sekaligus dalam waktu bersamaan, sampai satu

 pekerjaan selesai dikerjakan, maka baru dia bisa berpindah ke pekerjaan lainnya.

Komputer terkini, memiliki kemampuan interrupt ini. Penulis melakukan

 pengetikkan naskah ini sambil mendengarkan musik yang terpasang pada notebook 

yang digunakan, tidak jarang komputer ini juga sambil terhubung dengan internet

untuk membuka halaman web atau mengambil beberapa data yang ada di internet.

Anda tentu juga tidak jarang mengalami hal dengan interrupt ini, katakanlah, ketika

mengetikkan SMS ternyata ada telpon yang masuk, anda terima dulu telpon tersebut,lalu setelahnya anda lanjutkan pengetikan SMS tadi.

Untuk memungkinkan terjadinya interrupt ini pada sistem komputer, CPU memiliki

suatu jalur khusus terhadap suatu chip pengatur interrupt eksternal (bagian dari

chipset), yang berisi database sederhana yang dikenal dengan interrupt vectors.

Ketika sebuah interrupt terjadi pada chip, maka CPU menyimpan informasi terakhir 

yang dia kerjakan, berulah dia mengerjakan sesuai dengan informasi yang ada pada

interrupt vector tesebut. Interrupt vector ini sebenarnya hanya sebuah nama pemanis

yang berisi informasi tentang selaan yang terjadi, kalau dibelah lebih dalam lagi,

isinya adalah berupa tabel yang berisi angka-angka). Pada interrupt vector inilah

ditemukan kemana dan apa proses berikutnya yang harus dilaksanakan oleh

komputer. Ketika pekerjaan interrupt tadi selesai dilaksanakan, maka komputer 

melakukan pelacakan kembali apa pekerjaan sebelumnya yang sedang

dilaksanakannya.

Prioritas dalam interrupt

Dalam penerimaan suatu interrupt ini, komputer membagi interrupt tersebut dalam

 berbagai level, tergantung dari CPU yang digunakan. Misalnya pada komputer yang

digunakan untuk pekerjaan yang cukup membutuhkan konsentrasi dari CPU, maka

CPU tersebut memungkinkan untuk mengabaikan interrupt yang prioritasnya rendah,

katakanlah pengetikkan yang dilakukan oleh seorang user melalui keyboard, namun

komputer tersebut akan memberikan respon yang sangat cepat apabila terjadi

gangguan pada memori yang digunakannya.Interupsi terjadi bila suatu perangkat M/K ingin memberitahu prosesor bahwa ia siap

menerima perintah, output sudah dihasilkan, atau terjadi error.

Penanganan Interupsi

Ada beberapa tahapan dalam penanganan interupsi:

1. Controller mengirimkan sinyal interupsi melalui interrupt-request-line

2. Sinyal dideteksi oleh prosesor 

3. Prosesor akan terlebih dahulu menyimpan informasi tentang keadaan state-nya

(informasi tentang proses yang sedang dikerjakan)

4. Prosesor mengidentifikasi penyebab interupsi dan mengakses tabel vektor 

interupsi untuk menentukan interrupt handler 

5. Transfer kontrol ke interrupt handler 

36

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 10/17

 

6. Setelah interupsi berhasil diatasi, prosesor akan kembali ke keadaan seperti

sebelum terjadinya interupsi dan melanjutkan pekerjaan yang tadi sempat tertunda.

37

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 11/17

 

1. Interupsi

Interupsi terjadi bila suatu perangkat Input/output ingin memberitahu prosesor bahwa

ia siap menerima perintah, output sudah dihasilkan,atau terjadi error.

Ada beberapa tahapan dalam penanganan interupsi:

Pertama-tama Controller mengirimkan sinyal interupsi melalui interrupt-request-line,

lalu Sinyal interupsi tersebut dideteksi oleh prosesor. Selanjutnya Prosesor akan

terlebih dahulu menyimpan informasi tentang keadaan state-nya(informasi Tentang

  proses yang sedang dikerjakan). Kemudian Prosesor mengidentifikasi penyebab

interupsi dan mengakses tabel vektor interupsi untuk menentukan interrupt handler.

Selanjutnya Transfer kontrol ke interrupt handler. Setelah interupsi berhasil diatasi,

  prosesor akan kembali kekeadaan seperti sebelum terjadinya interupsi dan

melanjutkan pekerjaan yang tadi sempat tertunda.

Siklus penanganan interupsi2.

Polling atau juga disebut Busy-waiting adalah ketika host mengalami looping yaitu

membaca status register secara terus-menerus sampai status busy di-clear. Pada

dasarnya polling dapat dikatakan efisien. Akan tetapi polling menjadi tidak efisien

ketika setelah berulang-ulang melakukan looping, hanya menemukan sedikit device

38

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 12/17

 

yang siap untuk men-service, karena CPU processing yang tersisa belum selesai.

Interrupt Vector  

Interrupt Vector adalah harga yang disimpan ke Program Counter pada saat terjadi

interrupt sehingga program akan menuju ke alamat yang ditunjukkan oleh Program

Counter. Pada saat program menuju ke alamat yang ditunjuk oleh Interrupt Vector 

maka flag-flag yang set karena terjadinya interrupt akan di-clear kecuali RI dan TI.

Masing-masing alamat vektor mempunyai jarak yang berdekatan sehingga akan

timbul masalah bila diperlukan sebuah Interrupt Service Routine yang cukup

 panjang.

39

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 13/17

 

Stack 

PENGERTIAN STACK 

Posted on  November 9, 2010 by KazumaStratos 

Secara sederhana diartikan dengan :

• sebagai tumpukan dari benda

• sekumpulan data yang seolah-olah diletakkan di atas data yang lain

• koleksi dari objek-objek homogen

Stack berarti tumpukan. Jika dikaitkan dengan struktur data, Stack berarti

sekumpulan data yang organisasi atau strukturnya bersifat tumpukan atau

menyerupai tumpukan.

“Top “ merupakan pintu untuk keluar masuknya elemen – elemen stack. A, B, dan C

merupakan suatu koleksi. Dari ilustrasi dapat digambarkan bahwa C merupakan

elemen yang terakhir memasuki stack namun pertama keluar dari stack. Begitu

sebaliknya dengan A. A merupakan elemen pertama yang memasuki tumpukan

namun terakhir saat keluar dari tumpukan.

Di dalam gambar juga terlihat urutan masuk dan keluar yang berkebalikan. Elemen

yang masuk pertama akan keluar erakhir dan sebaliknya. Prinsip ini telah dikenal

dalam struktur data dengan nama prinsip LIFO (Last In First Out)

Ilustrasi Stack 

• Terdapat dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas

kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga,

keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang

terdiri dari N kotak.

Ilustrasi Stack – Cont.

Ciri Stack :

1. - Elemen TOP (puncak) diketahui

40

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 14/17

 

2. - penisipan dan penghapusan elemen selalu dilakukan di TOP

3. - LIFO

4. - Pemanfaatan Stack :

5. - Perhitungan ekspresi aritmatika (posfix)

6. - algoritma backtraking (runut balik)

7. - algoritma rekursif 

Operasi Stack yang biasanya :

· buat stack (stack) – create: membuat sebuah stack baru yang masih kosong, dan

 beberapa selektor yang lain.

• Push (input E : typeelmt, input/output data : stack): menambahkan sebuah

elemen ke stack 

• Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah

elemen stack 

·IsEmpty (): fungsi untuk menentukan apakah stack dalam keadaan kosong atau

tidak 

·IsFull () : fungsi untuk memeriksa apakah stack yang ada sudah penuh

1. buat stack (stack) – create

• membuat sebuah stack baru yang masih kosong

• spesifikasi:

1. — tujuan : mendefinisikan stack yang kosong

2. — input : stack 

3. — syarat awal : tidak ada

4. — output stack : – (kosong)?

5. — syarat akhir : stack dalam keadaan kosong

2. stack kosong (stack) – empty

• fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak 

• spesifikasi:

1. — tujuan : mengecek apakah stack dalam keadaan kosong

2. — input : stack 

3. — syarat awal : tidak ada

4. — output : boolean

5. — syarat akhir : stack kosong bernilai true jika stack dalam keadaan kosong

3. stack penuh (stack) – full

• fungsi untuk memeriksa apakah stack yang ada sudah penuh

spesifikasi:

1. — tujuan : mengecek apakah stack dalam keadaan penuh

41

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 15/17

 

2. — input : stack 

3. — syarat awal : tidak ada

4. — output : boolean

5. — syarat akhir : stack penuh bernilai true jika stack dalam keadaan penuh

4. push (stack, info baru)?

• menambahkan sebuah elemen kedalam stack.

• spesifikasi:

1. — tujuan : menambahkan elemen, info baru pada stack pada posisi paling

atas

2. — input : stack dan Info baru

3. — syarat awal : stack tidak penuh

4. — output : stack 

5. — syarat akhir : stack bertambah satu elemen

5. pop (stack, info pop)?

• mengambil elemen teratas dari stack 

• spesifikasi:

1. — tujuan : mengeluarkan elemen dari stack yang berada pada posisi paling

atas

2. — input : stack 

3. — syarat awal : stack tidak kosong

4. — output : stack dalam info pop5. — syarat akhir : stack berkurang satu elemen

OPERASI PADA STACK – 

Contoh :

• Operasi Push

void Push (NOD **T, char item)

{

 NOD *n;

n=NodBaru (item);

n->next=*T;

*T=n;

}

42

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 16/17

 

• Operasi Pop

char Pop (NOD **T)

{

 NOD *n; char item;

if (!StackKosong(*T)) {

P=*T;

*T=(*T)->next;

item=P->data;

free(P);

}

return item;

}

CONTOH PEMANFAATAN STACK 

• Notasi Infix Prefix

• Notasi Infix Postfix

Pemanfaatan stack antara lain untuk menulis ungkapan dengan menggunakan notasi

tertentu.

Contoh :

( A + B ) * ( C – D )

Tanda kurung selalu digunakan dalam penulisan ungkapan numeris untuk 

mengelompokkan bagian mana yang akan dikerjakan terlebih dahulu.

43

5/7/2018 stack,subroutine,interrupt - slidepdf.com

http://slidepdf.com/reader/full/stacksubroutineinterrupt 17/17

 

Dari contoh ( A + B ) akan dikerjakan terlebih dahulu, kemudian baru ( C – D ) dan

terakhir hasilnya akan dikalikan.

A + B * C – D

B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda dengan hasilnotasi dengan tanda kurung.

Notasi Infix Prefix

Cara penulisan ungkapan yaitu dengan menggunakan notasi infix, yang artinya

operator ditulis diantara 2 operator.

Seorang ahli matematika bernama Jan Lukasiewiccz mengembangkan suatu cara

 penulisan ungkapan numeris yang disebut prefix, yang artinya operator ditulis

sebelum kedua operand yang akan disajikan.

Contoh :

Proses konversi

dari infix ke prefix :

= ( A + B ) * ( C – D )

= [ + A B ] * [ - C D ]

= * [ + A B ] [ - C D ]

= *+AB – C D

Penggunaan notasi postfix dalam stack, misal :

2 14 + 5 * = 80

44