Mikroprosesor - 8086 Interupsi

Interruptadalah metode untuk membuat penghentian sementara selama eksekusi program dan memungkinkan perangkat periferal mengakses mikroprosesor. Mikroprosesor menanggapi interupsi itu denganISR (Interrupt Service Routine), yaitu program singkat untuk menginstruksikan mikroprosesor tentang cara menangani interupsi.

Gambar berikut menunjukkan jenis interupsi yang kami miliki di mikroprosesor 8086 -

Interupsi Perangkat Keras

Interupsi perangkat keras disebabkan oleh perangkat periferal apa pun dengan mengirimkan sinyal melalui pin tertentu ke mikroprosesor.

8086 memiliki dua pin interupsi perangkat keras, yaitu NMI dan INTR. NMI adalah interupsi non-maskable dan INTR adalah interupsi maskable yang memiliki prioritas lebih rendah. Satu lagi pin interupsi yang terkait adalah INTA yang disebut interupsi konfirm.

NMI

Ini adalah pin interupsi non-maskable tunggal (NMI) yang memiliki prioritas lebih tinggi daripada pin permintaan interupsi maskable (INTR) dan merupakan interupsi tipe 2.

Saat interupsi ini diaktifkan, tindakan ini terjadi -

  • Menyelesaikan instruksi saat ini yang sedang berlangsung.

  • Mendorong nilai register Flag ke stack.

  • Mendorong nilai CS (segmen kode) dan nilai IP (penunjuk instruksi) dari alamat pengirim ke stack.

  • IP diambil dari isi lokasi kata 00008H.

  • CS diambil dari isi lokasi kata berikutnya 0000AH.

  • Bendera interupsi dan bendera perangkap disetel ulang ke 0.

INTR

INTR adalah interupsi yang dapat ditutup karena mikroprosesor akan diinterupsi hanya jika interupsi diaktifkan menggunakan instruksi set interrupt flag. Ini tidak boleh diaktifkan menggunakan instruksi Clear interrupt Flag.

Interupsi INTR diaktifkan oleh port I / O. Jika interupsi diaktifkan dan NMI dinonaktifkan, maka mikroprosesor pertama-tama menyelesaikan eksekusi saat ini dan mengirim '0' pada pin INTA dua kali. '0' pertama berarti INTA memberi tahu perangkat eksternal untuk bersiap-siap dan selama '0' kedua mikroprosesor menerima 8 bit, katakanlah X, dari pengontrol interupsi yang dapat diprogram.

Tindakan ini dilakukan oleh mikroprosesor -

  • Pertama, selesaikan instruksi saat ini.

  • Mengaktifkan keluaran INTA dan menerima jenis interupsi, misalnya X.

  • Nilai register bendera, nilai CS dari alamat pengirim dan nilai IP dari alamat pengirim didorong ke tumpukan.

  • Nilai IP diambil dari isi lokasi kata X × 4

  • CS diambil dari isi lokasi kata berikutnya.

  • Bendera interupsi dan bendera perangkap disetel ulang ke 0

Interupsi Perangkat Lunak

Beberapa instruksi disisipkan pada posisi yang diinginkan ke dalam program untuk membuat interupsi. Instruksi interupsi ini dapat digunakan untuk menguji kerja berbagai penangan interupsi. Ini termasuk -

INT- Instruksi interupsi dengan nomor tipe

Ini adalah instruksi 2-byte. Byte pertama menyediakan kode op dan byte kedua memberikan nomor tipe interupsi. Ada 256 jenis interupsi di bawah grup ini.

Eksekusinya meliputi langkah-langkah berikut -

  • Nilai register bendera didorong ke tumpukan.

  • Nilai CS dari alamat pengirim dan nilai IP dari alamat pengirim didorong ke tumpukan.

  • IP diambil dari isi lokasi kata 'jenis nomor' × 4

  • CS diambil dari isi lokasi kata berikutnya.

  • Interrupt Flag dan Trap Flag di-reset ke 0

Alamat awal untuk interupsi tipe0 adalah 000000H, untuk interupsi tipe1 adalah 00004H demikian pula untuk tipe2 adalah 00008H dan …… seterusnya. Lima petunjuk pertama adalah petunjuk interupsi khusus. yaitu -

  • TYPE 0 interupsi merupakan pembagian dengan situasi nol.

  • TYPE 1 interrupt merupakan eksekusi satu langkah selama debugging program.

  • TYPE 2 interrupt merupakan interupsi NMI yang tidak dapat ditutup-tutupi.

  • TYPE 3 interrupt merupakan interupsi break-point.

  • TYPE 4 interrupt merupakan interupsi overflow.

Interupsi dari Tipe 5 hingga Tipe 31 disediakan untuk mikroprosesor lanjutan lainnya, dan interupsi dari 32 hingga Tipe 255 tersedia untuk interupsi perangkat keras dan perangkat lunak.

Instruksi Interupsi Titik Istirahat INT 3

Ini adalah instruksi 1-byte yang memiliki op-code CCH. Instruksi ini dimasukkan ke dalam program sehingga ketika prosesor sampai di sana, kemudian menghentikan eksekusi normal program dan mengikuti prosedur break-point.

Eksekusinya meliputi langkah-langkah berikut -

  • Nilai register bendera didorong ke tumpukan.

  • Nilai CS dari alamat pengirim dan nilai IP dari alamat pengirim didorong ke tumpukan.

  • IP diambil dari isi lokasi kata 3 × 4 = 0000CH

  • CS diambil dari isi lokasi kata berikutnya.

  • Interrupt Flag dan Trap Flag di-reset ke 0

INTO - Interupsi pada instruksi overflow

Ini adalah instruksi 1-byte dan mnemonik mereka INTO. Kode op untuk instruksi ini adalah CEH. Seperti namanya, ini adalah instruksi interupsi bersyarat, yaitu aktif hanya ketika flag overflow disetel ke 1 dan bercabang ke penangan interupsi yang nomor tipe interupsi 4. Jika flag overflow di-reset kemudian, eksekusi dilanjutkan ke instruksi selanjutnya.

Eksekusinya meliputi langkah-langkah berikut -

  • Nilai register bendera didorong ke tumpukan.

  • Nilai CS dari alamat pengirim dan nilai IP dari alamat pengirim didorong ke tumpukan.

  • IP diambil dari isi lokasi kata 4 × 4 = 00010H

  • CS diambil dari isi lokasi kata berikutnya.

  • Bendera interupsi dan bendera Perangkap disetel ulang ke 0