170 likes | 353 Views
NEXT. Pendahuluan Interupsi. PENDAHULUAN INTERUPSI
E N D
NEXT Pendahuluan Interupsi PENDAHULUAN INTERUPSI Interupsi dapat berupa CALL yang dibangkitkan perangkat keras ( berasal dari sinyal perangkat keras luar ) atau yang dibangkitakan oleh perangkat lunak ( berasal dari eksekusi intruksi internal atau peristiwa internal yang lain ). Di sini, interupsi internal disebut eksepsi (eksepsion). Kedua tipe ini menginterupsi program dengan memanggil prosedur pelayanan prosedur pelayanan interupsi atau interrupt handler. Bagian ini menjelaskan interupsi perangkat lunak, terutama tipe interuksi CALL. Bagian ini menjelaskan tipe interupsi perangkat lunak (INT,INTO,dan INT 3), menyediakan peta vektor interupsi, dan menjelaskan manfaat interuksi return khusus untuk interupsi (IRET).
NEXT Vektor Interupsi Vektor interupsi adalah angka empat byte yang disimpan pada 1024 byte pertama memori (000000H-0003FFH) ketika mikroprosesor dioperasikan dalam mode rill. riil. Setiap vector berisi nilai IP dan CS yang membentuk alamat dalam prosedur pelayanan interupsi. Dua byte pertama berisi IP, dan dua byte terkhir berisi CS. Intel mencadangkan 32 vektor interupsi pertama untuk produk mikroprosesor saat ini dan yang akan datang. Vektor interupsi sisnya (32-255) disesuiakan untuk pengguna. Beberapa dari vektor cadangan adalah untuk kesalahan yang terjadi selama eksekusi perangkat lunak, seperti interupsi kesalahan pembagian. Beberapa vektor dicadangkan untuk komprosesor. Vektor lain yang masih ada digunakan untuk kondisi normal dalam sistem. Pada computer personal, vector 1-6,7,9,16,dan17 berfungsi pada mode riil dan mode terproteksi; sedangkan sisa vector yang hanya pada mode terproteksi.
NEXT TABEL 6-4 Vektor interupsi. Nomor Alamat Mikroprosesor Fungsi 0 OH - 3H Semua Kesalahan pembagian 1 4H - 7H Semua Aingle-step 2 8H - BH Semua Pin NMI 3 CH - FH Semua Breakpoint 4 10H - 13H Semua Interupsi pada overflow 5 14H - 17H 80186 – Pentium 4 Instruksi bound 6 18H - 1BH 80186 – Pentium 4 Invalid opcode 7 1CH - 1FH 80186 – Pentium 4 Emulasi koprosesor 8 20H - 23H 80186 – Pentium 4 Double fault 9 24 H - 27H 80386 Coprocessor segment overrun A 28H - 2BH 80386 – pentium 4 Invalid task state segment B 2CH - 2FH 80386 – pentium 4 Segment tidak ada C 30H - 33H 80386 – pentium 4 Stack fault D 34H - 37H 80386 – pentium 4 General protection fault (GPF) E 38H - 3BH 80386 – pentium 4 Page fault F 3CH - 3FH - Cadangan 10 40H - 43H 80286 – pentium 4 Kesalahan floating point 11 44H - 47H 80486SX Interupsi cek alignment 12 48H - 4FH Pentium/Pentium 4 Eksepsi cek mesin 13-1F 50H - 7FH - Cadangan 20-FF 80H - 3FFH - Interupsi pengguna
NEXT Instruksi Interupsi Mikroprosesor mempunyai tiga interuksi interupsi berbeda yangf disediakan untuk programer: INT,INTO,dan 3.pada mode riil, setiap interupsi ini mengambilkan vektor dari tabel vektor, pada mode terproteksi, setiap instruksi ini mengambilkan deskriptor interupsi dari tabel deskriptor interupsi. Deskriptor menentukan alamat prosedur pelayanan interupsi. Pemanggilan interupsi mirip dengan instruksi far CALL karena menempatkan alamat return (IP/EIP dan CS) ke dalam stack.
NEXT Pengaturan Interupsi Meskipun tidak menjelaskan perangkat keras, pada bagian ini akan disinggung dua instruksi yang menggatur pin INTR. Intruksi set interrupt flag (STI) menempatkan 1 ke dalam bit flag I, yang menggaktifkan pin INTR. Instruksi clear interrupt flag (CLI) menempatkan 0 ke dalam bit flag I, yang menonaktifkan flag INTR. Instruksi STI menggaktifkan INTR danCLI menonaktifkan INTR. Pada perangkat lunak prosedur pelayanan interupsi,interupsi perangkat keras diaktifkan sebagai sebuah langkah pertama. Hal ini dilakukan dengan instruksi STI. Alasan mengapa interupsi diaktifkan di awal prosedur pelayanan interupsi adalah pemrosesan semua peanti I/O dalam komputer personal menggunakan interupsi. Jika interupsi dinonaktifkan terlalu lama maka sistem akan terganggu.
NEXT INTERUPSI DALAM KOMPUTER PERSONAL Interupsi yang terdapat dalam komputer personal berbeda dengan yang telah dijelaskan pada Taabel 6-4. alasan perbedaan tersebut terletak pada asal komputer personal, yaitu sistem berbasis 8086/8088.artinya komputer ini hanya berisi interupsi 0-4 sesuai ketentuan Intel. Rancangan ini tetap dipertahankan sehingga sistem yang lebih baru menjadi kompatibel denagn komputer personal sebelumnya.
NEXT Pengaturan Bit Flag Carry Flag carry (c)melambangkan carry atau borrow dalam penjumlahan dan penggurangan multiple-word/double word. Flag ini juga menandakan kesalahan (error) dalam prosedur. Ada tiga intruksi yang mengatur isi flag carry: STC (set carry), CLC(clear carry),dan CMC (complement carry). Karena flag carry jarang digunakan, kecuali pada penjumlahan dan penggurangan multiple-word, maka flag tersebut digunakan untuk keperluan lain. Manfaat utama flag carry adalah menandai kesalahan ketika kembali dari suatu prosedur.misalkan sebuah prosedur membaca data dari file memori disk. Operasi ini dapat dilakukan dengan sukses, atau malah terjadi kesalahan seperti file-not-found. Ketika kembali dari prosedur ini, jika C=1 maka terjadi kesalahan; jika C=0 maka tidak terjadi kersalahan. Kebanyakan prosedur DOS dan BIOS menggunakan flag carry untuk menandai kondisi kesalahan.
NEXT WAIT Instruksi wait memonitor pin BUSY pada 8086 dan 80386 dan pin TEST pada 8086/8088. nama pin ini pada mikroprosesor 8086 diubah dari TEST menjadi BUSY. Jika instruksi WAIT dieksekusi ketika pin BUSY = 1 maka tidak terjadi apa-apa dan instruksi berikutnya dijalankan. Jika pin BUSY = 0 ketika instruksi WAIT dieksekusi maka mikroprosesor akan menunggu pin BUSY kembali ke logika 1. Pin ini menandakan keadaan sibuk (busy state) ketika berada pada level logika 0. Pin BUSY/TEST mikroprosesor biasanya dihubungkan dengan pin BUSY koprosesor numerik 8087 sampai 80387. koneksi ini membuat mikroprosesor menunggu sampai koprosesor menyelesaikan tugasnya. Karena koprosesor berada di dalam 80486 sampai Pentium 4, pin BUSY tidak ditemukan pada mikroprosesor jenis ini.
NEXT HLT Instruksi halt (HLT) menghentikan eksekusi perangkat lunak. Ada 3 cara untuk keluar dari halt : melalui sebuah instruksi dengan resep perangkat keras, atau dengan operasi DMA. Instruksi ini biasanya muncul pada program untuk menunggu interupsi. Seringkali dibuat sinkronisasi antara interupsi perangkat keras dengan sistem perangkat lunak.
NEXT NOP Ketika mikroprosesor menjumpai instruksi no operation (NOP) maka hanya dibutuhkan sedikit waktu untuk melakukan eksekusi. Pada masa awal, sebelum perangkat pengembangan perangkat lunak ada, sebuah NOP yang menjalankan no operation sering dipakai untuk memberikan ruang dalam perangkat lunak bagi instruksi bahasa mesin mendatang. Jika anda mengembangkan bahasa mesin, yang sangat jarang sekali, direkomendasikan untuk menempatkan 10 atau juga NOP pada program anda dalam interval 50-byte. Hal ini akan berguna ketika anda membutuhkan penambahan instruksi pada tempat tersebut di masa yang akan datang. NOP juga digunakan untuk aplikasi waktu tunda (time delay), yaitu untuk menghabiskan waktu. Perlu disadari bahwa NOP yang digunakan untuk pewaktuan tidak terlalu akurat karena cache dan pipeline pada mikroprosesor modern.
NEXT Prefiks LOCK Prefiks LOCK melampiri sebuah instruksi dan menyebabkan pin LOCK berlogika 0. Pin LOCK sering digunakan untuk menonaktifkan bus master eksternal atau komponen sistem. Prefiks LOCK menyebabkan pin LOCK diaktifkan selama selang waktu instruksi kuncian (locked). Jika terdapat lebih dari sebuah instruksi yang dikunci, pin LOCK akan tetap berada. Pada logika 0 selama selang waktu urutan intruksi LOCK:MOV AL,[SI] merupakan contoh instruksi kucian. ESC Instruksi escape (ESC) menyalurkan informasi ke koprosesor numerik 8087-pentium 4. ketika instruksi ESC dieksekusi, mikroprosesor akan menyediakan alamat memori jika dibutuhkan, tetapi juga tetap melaksanakan NOP. Enam bitdalam instruksi ESC menyediakan opcode ke koprosesor dan mulai mengeksekusi instruksi. Opcode ESC tidak pernah terlihat dalam program sebagai ESC dan dianggap sebagai opcode yang usang. Sebagai penggantinya terdapat sekumpulan instruksi kopresesor (FLD,FST,FMUL dan lai-lain) yang di-assembly sebagai instruksi ESC untuk kopresesor. Penjelasan lebih lanjut ada pada Bab 13, yang menjelaskan koprosesor numerik 8087-pentium 4.
NEXT BOUND Instruksi BOUND dibuat pertama kali untuk mikroprosesor 80186, merupakan instruksi perbandingan yang mungkin menyebabkan interupsi (tipe vector nomor 5). Instruksi ini membandingkan isi memori register 16-bit atau 32-bit dengan isi memori dua word atau double word: batas atas dan bawah. Jika nilai dalam register yang dibandingkan dengan memori tidak berada dalam batas atas dan bawah, interupsi tipe 5 terjadi. Akan tetapi, jika nilainya masih berada dalam batas maka instruksi berikutnay dalam program akan dieksekusi. Sebagai contoh, jika instruksi BOUND SI, DATA dieksekusi maka lokasi DATA berukuran word berisi batas bawah, dan lokasi DATA+2byte yang berukuran word berisi batas atas. Jika angka yang terdapat dalam SI lebih kecil dari lokasi memori DATA atau lebih besar dari lokasi memori DATA+2byte maka interupsi tipe 5 terjadi. Perlu diketahui bahwa insterupsi ini terjadi, alamat return menunjuk pada instruksi BOUND, bukan pada instruksi yang mengikuti BOUND. Ini berbeda dengan instruksi biasa, dimana alamat return menunjuk pada instruksi berikutnya dalam program.
NEXT ENTER dan LEAVE Instruksi enter dan leave, pertama dibuat untuk mikroprosesor 80186, digunakan dengan frame stack, dimana mekanismenya digunakan untuk mneneruskan parameter pada sebuah priosedur. Frame stack menyediakan area memori dinamis untuk prosedur dalam lingkungan multipengguna. Instruksi ENTER menciptakan sebuah frame stack dengan mem-push BP kedalam stack dan kemudian mengisi BP dengan alamat frame paling atas. Hal ini membuat frame menjadi variabel untuk di akses melalui register BP. Instruksi ENTER berisi dua operand; operand pertama menentukan jumlah byte yang dicadangkan untuk variabel pada frame stack dan operand kedua level prosedur. Misalkan instruksi ENTER 8,0 dieksekusi. Instruksi ini mengalokasikan 8 byte untuk frame stack dan angka 0 menentukan level 0. gambar 6-9 memperlihatkan frame stack yang dibuat oleh instruksi ini. Perlu diketahui bahwa instruksi ini menympan BP ke stack paling atas. Kemudian, instruksi itu mengurangi stack pointer dengan 8, meninggalkan 8 byte ruang memori untuk penyimpanan data temporer. Lokasi paling atas dari 8 byte area penyimpanan temporer ini dialamati oleh BP. Instruksi LEAVE mengembalikan proses ini dengan mengsi SP dan BP dengan nilai awal mereka.
NEXT GAMBAR 6-9 Frame stack buatan instruksi ENTER 8.0. Perhatikan bahwa BP disimpan di awal bagian teratas frame stack. Frame stack dfikuti area 8 byte yang disebut frame stack
NEXT CONTOH 6-21 ;A sequence used to call system software that ;uses parameters stored in a stack frame. 0000 CS 0004 00 ENTER 4,0 ;create 4 byte frame 0004 Al OOC8 R MOV AX,DATA1 0007 69 46 FC KOV [BP-41,AX ;save para I OCCA Al OOCA R MOV AX,DATA2 OOGD 89 46 FE MOV [BP-21,AX ;save para 2 CUIOEB 0100 R CALL SYS ;call subroutine 00138B 46 FC MOV AX,[BP-41 ;get result I 0016A3 OOCS R MOV DATA1,AX ;save result 1 00198B 46 FE MOV AX.[BP-21 ;get result 2 001CA3 OOCA R MOV DATA2,AX ;save result 2 OOIF C9 LEAVE (other software continues here) ;system subroutine that uses the stack frame parameters ; 0100 SYS PROC NEAR 0100 60 PUSHA 0101 88 46 rc MOV AX, (BP-4) /get parm 1 0104 81 It VX Nov NX (BP-2) /get parm 2 (software that uses the parameters) 0130 89 46 FC MOV (BP-4),AX ;save result 1 0133 89 SE FE MOV (BP-2),BX ;save result 2 0136 61 POPA 0137 C3 RET 0138 SYS ENDP
NEXT • Soal • Apa yang dimaksud dengan pengertian pendahuluan interupsi! • Buatlah tabel dari vektor interupsi! • Gambarkan Frame stack buatan instruksi ENTER 8.0. perhatikan bahwa BP disimpan di awal bagian teratas frame stack. Frame stack dfikuti area 8 byte yang disebut frame stack! • Buatlah contoh program bahasa assembly dari enter dan leave!
TUTUP Terima Kasih