Скачиваний:
19
Добавлен:
04.11.2020
Размер:
26.76 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ» им. В.И. Ульянова (Ленина)»

Кафедра вычислительной техники

отчет

по лабораторной работе №5

по дисциплине «Организация ЭВМ и систем»

Студент гр. 5392

Нургазы Б.К

Студент гр. 5392

Юсупов Н.Г.

Преподаватель

Иванов Д.М.

Санкт-Петербург

2017

Цель работы

Изучение возможностей работы со средствами системы прерываний DOS и BIOS, обслуживающими клавиатуру.

Задание

Доработать программу, разработанную в лабораторной работе №4 таким образом, чтобы при обработке прерывания выводилось сообщение о том, чем данное прерывание было вызвано.

Код программы

#include <stdio.h>

#include <conio.h>

#include <bios.h>

#include <dos.h>

//esc - 27

//up - 0 72

//left - 0 75

//right - 0 77

//down - 0 80

int main()

{

textbackground(0);

clrscr();

char c = 0;

int xMin = 15;

int xMax = 65;

int yMin = 12;

int yMax = 23;

window(xMin, yMin, xMax, yMax);

textbackground(2);

clrscr();

int winWidth = xMax - xMin + 1;

int winHeight = yMax - yMin + 1;

int curX = 1, curY = 1;

gotoxy(curX, curY);

printf("*");

gotoxy(curX, curY);

while(c != 27) //Esc wasnt pressed

{

c = 0;

unsigned int tmp = 0;

while(bioskey(1) == 0);

tmp = bioskey(0);

c = tmp%256;

if(c == 0)

c = tmp/256;

clrscr();

switch(c)

{

case 75:

gotoxy(curX, curY);

printf(" ");

--curX;

if(curX == 0)

{

curX = winWidth;

--curY;

}

if(curY == 0)

curY = winHeight;

gotoxy(curX, curY);

printf("*");

gotoxy(1, (curY == winHeight? 1 : winHeight));

printf("Interception caused by Left_Arrow ");

gotoxy(curX, curY);

break;

case 77:

gotoxy(curX, curY);

printf(" ");

++curX;

if(curX == winWidth+1)

{

curX = 1;

++curY;

}

if(curY == winHeight+1)

curY = 1;

gotoxy(curX, curY);

printf("*");

gotoxy(1, (curY == winHeight? 1 : winHeight));

printf("Interception caused by Right_Arrow");

printf("\a");

gotoxy(curX, curY);

break;

default:

break;

}

}

return 0;

}

Соседние файлы в папке Всякие лабы