Практическая работа №14
Тема: Исследование прерываний в компьютерах типа Pentium, AMD и др.
Цель: Изучение и исследование принципа организации и функционирования системы прерываний персональных ЭВМ типа Pentium, AMD и др.
Вид работы: индивидуальный
Время выполнения: 4 часа.
Теоретические сведения
В современных микропроцессорах, каковыми являются микропроцессоры фирмы Intel, принят подход, основанный на понятии прерывания. Прерывание — инициируемый определенным образом процесс, временно переключающий микропроцессор на выполнение другой программы с последующим возобновлением выполнения прерванной программы. Он позволяет обеспечить наиболее эффективное управление не только внешними устройствами, но и программами. Нажимая клавишу на клавиатуре, вы фактически инициируете посредством прерывания немедленный вызов программы, которая распознает нажатую клавишу, заносит ее код в буфер клавиатуры, откуда он в дальнейшем считывается некоторой другой программой или операционной системой. На время такой обработки микропроцессор прекращает выполнение некоторой программы и переключается на так называемую процедуру обработки прерывания. После того как данная процедура выполнит необходимые действия, прерванная программа продолжит выполнение с точки, где было приостановлено ее выполнение. Некоторые операционные системы используют механизм прерываний не только для обслуживания внешних устройств, но и для предоставления своих «услуг». Так, хорошо известная и до сих пор достаточно широко используемая операционная система MS-DOS взаимодействует с системными и прикладными программами преимущественно через систему прерываний.
Ход работы
Для описания регистров, используемых при обращении к прерываниям, в пользовательской ТС-программе в библиотеке DOS.H создан специальный тип REGS.
struct WORDREGS
{ unsigned int ax,bx,cx,dx,si,di,cslag,flags;
}
struct BYTEREGS
{ unsingred char al,ah,bl,bh,cl,ch,dl,dh;
}
union REGS{
struct WORDREGS x;
struct BYTEREGS h;
}
В этом случае в пользовательских программах для применения прерываний нужно описать переменную с указанным типом данных. Функция int86 вызывает программное прерывание процессора 8086, номер прерывания указан в аргументе intno. Перед выполнением программного прерывания функция копирует содержимое регистров из inregs в сами регистры. После возврата из прерывания функция копирует текущие значения регистров в outregs. Если установлен флаг переноса, то это значит, что произошла ошибка. Отметим, что inregs может указывать на ту же структуру, что и outregs. Функция int86 возвращает значение регистра AX после завершения программного прерывания. Если флаг переноса установлен (outregs -> x.cflag != 0), то есть произошла ошибка, то данная функция присваивает глобальной переменной _doserrno код ошибки.
Пример 1: Вывод слова «Привет».
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define VIDEO 0x10
void movetoxy(int x, int y)
{
union REGS regs;
regs.h.ah = 2; /* устанавливает позицию курсора */
regs.h.dh = y;
regs.h.dl = x;
regs.h.bh = 0; /* видео страница 0 */
int86(VIDEO, ®s, ®s);
}
int main(void)
{
clrscr();
movetoxy(35, 10);
printf("Привет\n");
return 0;
}
Рассмотрим еще несколько примеров вызова прерываний.
Пример 2: Установить курсор в положение (14,1) на экране дисплея.
#include <dos.h>
void main(void)
{
int x,y;
union REGS r;
r.h.ah=2;
r.h.dl=1;
r.h.dh=14;
r.h.bh=0;
int86 (0x10,&r,&r);
}
Пример 3: Прочитать символ с экрана, расположенный под курсором. Алгоритм реализован с помощью пользовательской функции.
void readchar(x,attr)
char *x,*attr;
{ union REGS r;
r.h.ah=8;
r.h.bh=0;
int86 (0x10,&r,&r);
*attr=r.h.ah;
*x=r.h.al;
}
Задания к практической работе
Задание 1. Выведите символ «a» на экран на место, указанное курсором. Алгоритм реализован с помощью пользовательской функции.
Задание 2. Составить функцию вывода строки в центре экрана, красными буквами на зеленом фоне с мерцанием, вертикально.
Задание 3. Ввести символ с клавиатуры.
Контрольные вопросы
1. Укажите основные факторы повышения производительности 32-разрядного микропроцессора 80386.
2. Определите состав, и функции основных элементов фронтальной части микроархитектуры процессора Pentium 4?
3. Перечислите функции процессора
4. Прокомментируйте основные параметры процессора
5. Какие современные типы процессоров вы знаете?
6.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.