Files
templates/LABV6.CPP
2024-09-10 22:24:24 +03:00

47 lines
1.7 KiB
C++
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* LAB6
Лабораторная работа по теме
"Программные прерывания"
При вызове функции - прерывания из СИ, используется INT.
В связи с этим стек заполняется несколько иначе.
В стеке сохраняются значения IP, СS (сегмент кода),от куда вызывается
прерывание, и флаги.
Выход из INT осуществляется с помощью IRet,которая вынимает из стека
все старые регистров CS, IP и флагов.
Так же при вызове прерывания,флажок прерывания i и t
устанавливается в 0, что запрещает вызов любых других прерываний,
а также запрещает трассировку.
*/
#include<stdio.h>
#include<dos.h>
#include<iostream.h>
#include <conio.h>
void interrupt (*old)(...); // здесь будем сохранять старый вектор
void interrupt cmp_int(...) // а это наш обработчик
{
cout<<"Прерывание ";
getch();
}
void main(void)
{ int aa;
aa=1;
old=getvect(0xf0);
disable();
setvect(0xf0,cmp_int);
enable();
// aa=aa/0;
geninterrupt(0xf0);
puts("v1=v2");
setvect(0xf0,old);
return;
// Задания
// 1 Напишите программу обработки прерывания
// 2 Вызовите прерывание путем организации особого случая
// 3 Покажите использование команды int3, определите ее код с испол. TD
}