stack,subroutine,interrupt
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