Исследование прерываний в компьютерах типа Pentium, AMD и др.

  • Лабораторные работы
  • doc
  • 13.04.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 36. Исследование прерываний в компьютерах типа Pentium, AMD и др..doc

Практическая работа №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, &regs, &regs);

}

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.