У вас вопросы?
У нас ответы:) SamZan.net

11н Супрунов М.Ю.html

Работа добавлена на сайт samzan.net: 2016-01-17

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.4.2025

Министерство образования и науки, молодежи и спорта Украины

Донецкий национальный технический университет

Кафедра Компьютерной инженерии

Отчет

по курсу СПО

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

Выполнил:

                                                                                                   ст. гр. КС-11н

Супрунов М.Ю.

Проверила:

Чередникова О. Ю.

Донецк 2013

24.  Разработать на компьютере программу, с  поддержкой  мыши

для графического режима дисплея. Программа должна обеспечить:

 - Нормальное и аварийное завершение;

 - Выдачу некоторых справочных данных

 - По запросу пользователя определять характеристику типов  Шин  Передачи  Данных  и  адреса имеющихся последовательных и параллельных портов.

2.Листинг программы

#include<dos.h>

#include<stdio.h>

#include<conio.h>

#include<process.h>

#include<graphics.h>

#define CONFADD 0x0CF8

#define CONFDATA 0x0CFC

const int w = 250;

 int h = 40;

 int x0 = 400;

 int y0 = 400;

  int x1 = 100;

  int y1 = 100;

  int x2 = 300;

  int y2 = 150;

  int x3 = 100;

 int y3 = 200;

 int xr = 300;

  int yr = 250;

  int ar = 200;

//-------------------------

typedef struct _MOUSE_STATE_ {

unsigned int bottoms;

unsigned int x;

unsigned int y;

} MOUSE_STATE;

//-------------------------

union REGS r;

//-------------------------

int buses() {

int i,j,k, vendor, device;

unsigned char class1, subclass1;

for (i=0; i<256; i++) { //bus

 for (j=0; j<32; j++) { //device

  k = j*8;

  asm {

    mov eax, 0

    mov al, 0x80

    shl eax, 8

    mov al, i

    shl eax, 8

    mov al, k

    shl eax, 8

    mov al, 0

    mov dx, CONFADD

    out dx, eax

    mov dx, CONFDATA

    in eax, dx

    mov vendor, ax

    shr eax, 16

    mov device, ax

    }

  if (vendor!=0xFFFF && device!=0xFFFF) {

   asm {

     mov eax, 0

     mov ah, 0x80

//      shl eax, 8

     mov al, i

     shl eax, 16

     mov ah, k

//      shl eax, 8

     mov al, 8

     mov dx, CONFADD

     out dx, eax

     mov dx, CONFDATA

     in  ax, dx

     mov class1, al

//      shr eax, 16

     mov subclass1, ah

     }

   // decription

 printf("\nBus: %d;",i);

   printf("\tDevice: %d;", j);

   printf("\tType: ");

   printf("0x%X (", class1);

   switch(class1) {

    case 1:printf("SCSI Mass Storage Controller"); break;

    case 2:printf("Network Card"); break;

    case 3:printf("Vga Display Adapter"); break;

    case 6: switch (subclass1) {

         case 0: printf("Host Processor Bridge"); break;

         case 1: printf("PCI to ISA Bridge"); break;

         case 4: printf("PCI to PCI Bridge"); break;

         } break;

    default: printf("unknown type");

    }

   printf(");\n");

   printf("Vendor: ");

   printf("0x%X (", vendor);

   switch(vendor) {

    case 0x1023: printf("Trident"); break;

    case 0x104C: printf("Texas Instruments"); break;

    case 0x11F6: printf("Compex"); break;

    case 0x5553: printf("S3"); break;

    case 0x8086: printf("Intel"); break;

    default: printf("unknown vendor");

    }

   printf(");");

   printf("\tName: ");

   printf("0x%X (", device);

   switch(device) {

    case 0x0194: printf("82C194 PCI to PCMCIA Controller"); break;

    case 0x0598: printf("TMS380C2X Compressor Inreface"); break;

    case 0x0112: printf("ReadyLink ENET100-VG4 Ethernet Adapter"); break;

    case 0x5631: printf("325 ViRGE GUI Accelerator"); break;

    case 0x0122: printf("82437FX Triton FX Chipset, Pentium to PCI Bridge"); break;

    default: printf("unknown name");

    }

   printf(")\n\n");

   }

  }

 }

return 0;

};

//--------------

int ports() {

printf("\n  Адреса COM портов:\n");

printf("    COM1: 0x%X \n", peek(0x0040, 0x0000));

printf("    COM2: 0x%X \n", peek(0x0040, 0x0002));

printf("    COM3: 0x%X \n", peek(0x0040, 0x0004));

printf("    COM4: 0x%X \n\n", peek(0x0040, 0x0006));

 printf("  Адреса LPT портов:\n");

 printf("    LPT1: 0x%X \n", peek(0x0040, 0x0008));

printf("    LPT2: 0x%X \n", peek(0x0040, 0x000A));

printf("    LPT3: 0x%X \n", peek(0x0040, 0x000C));

printf("    LPT4: 0x%X \n", peek(0x0040, 0x000E));

}

//---------------

int init_gr() {

int gd, gm, err;

gd = VGA;

gm = VGAHI;

initgraph(&gd, &gm, "");

err = graphresult();

if (err!=grOk) {

 printf("Graphic mode initialization error: %s", grapherrormsg(err));

 getch(); exit(1);

 }

}

//-------------------------

int button(int x, int y, int width, int height,

  char* line1, char* line2) {

setcolor(15);

setfillstyle(1,15);

bar(x, y, x+width, y+height);

setcolor(1);

outtextxy(x+15, y+5, line1);

outtextxy(x+15, y+15, line2);

return 0;

}

//---------------------------

int button1(int x, int y, int width, int height,

  char* line1, char* line2) {

setcolor(15);

setfillstyle(1,LIGHTGRAY);

bar(x, y, x+width, y+height);

setcolor(1);

outtextxy(x+16, y+6, line1);

outtextxy(x+16, y+16, line2);

return 0;

}

//---------------------------

int stat(int x, int y, int t) {

 gotoxy(70,1);  printf("X: %u \n", x);

 gotoxy(70,2);  printf("Y: %u \n", y);

 gotoxy(70,3);

 printf("B: ");

 if (t&1) printf("L"); else printf(" ");

if (t&2) printf("R"); else printf(" ");

 return 0;

}

//-------------------------

int mouse_init(int *nbottoms) {

r.x.ax = 0;

int86(0x33, &r, &r);

*nbottoms = r.x.bx;

return r.x.ax;

}

//-------------------------

int mouse_escape() {

r.x.ax = 0x0021;

int86(0x33, &r, &r);

}

//-------------------------

int mouse_show() {

r.x.ax = 1;

int86(0x33, &r, &r);

}

//-------------------------

int mouse_hide() {

r.x.ax = 2;

int86(0x33, &r, &r);

}

//-------------------------

int mouse_query(MOUSE_STATE *state, int bottom) {

r.x.ax = 0x0003;

r.x.bx = bottom;

int86(0x33, &r, &r);

state->bottoms = r.x.bx&0x0003;

state->x = r.x.cx;

state->y = r.x.dx;

return (state->bottoms);

}

//-------------------------

int mouse_setcurpos(int x, int y) {

r.x.ax = 4;

r.x.cx = x*8;

r.x.dx = y*8;

int86(0x33, &r, &r);

}

//-------------------------

int main(void) {

int botm, x, y, t, mode=2,i;

char Flag=1;

MOUSE_STATE *st;

clrscr();

 

if (!mouse_init(&botm)) {

printf("MOUSE driver not found!");

return 0;

}

mouse_escape();

mouse_setcurpos(1,1);

init_gr();

mouse_show();

for (;;) {

 t = mouse_query(st, botm);

 stat(st->x, st->y, t);

 x = st->x;

 y = st->y;

if (mode==0) { //buses

  if (Flag) {

   clrscr();

   cleardevice();

   mouse_show();

   buses();

   button(x0,y0,w,h,"Возврат в ", "   меню");

   Flag = 0;

   }

 if ((x>x0)&&(x<(x0+w))&&(y>y0)&&(y<(y0+h))&&(t&1)) {

   mouse_hide();

   mode = 2;

   Flag = 1;

  }

  }

//************************

if (mode==1) { //ports

  if (Flag) {

   clrscr();

   cleardevice();

   mouse_show();

   ports();

   button(x0,y0,w,h,"Возврат в ", "   меню");

   Flag = 0;

   }

 if ((x>x0)&&(x<(x0+w))&&(y>y0)&&(y<(y0+h))&&(t&1)) {

  mouse_hide();

  mode = 2;

  Flag = 1;

  }

  }

//********************

if (mode==2) { // menu

 if (Flag) {

 setbkcolor(8);

  cleardevice();

  mouse_show();

   setcolor(RED);

line(0,80,80,0); line(0,90,90,0); line(0,100,100,0); line(0,110,110,0); line(0,120,120,0); line(0,130,130,0); line(0,140,140,0);

line(0,150,150,0); line(0,160,160,0); line(0,160,160,0); line(0,170,170,0); line(0,180,180,0); line(0,190,190,0); line(0,200,200,0);

 setcolor(DARKGRAY);

  button(x1,y1,w,h,"    Характеристика шин", "передачи данных");

  button(x2,y2,w,h,"    Адреса COM", "и LPT портов");

  button(x3,y3,w,h,"    Выход", "");

 setcolor(0);

 setfillstyle(1,4);//                                   \                

 bar(xr, yr, xr+w, yr+h); //        | Кнопка аварийного завершения

 setcolor(0);//           |

 outtextxy(xr+15, yr+10, "Аварийное завершение");//    /

  Flag = 0;

  }

 if ((x>x1)&&(x<(x1+w))&&(y>y1)&&(y<(y1+h))&&(t&1)) {

   mouse_hide();

   mode = 0;

   Flag = 1;

 button1(x1,y1,w,h,"    Характеристика шин", "передачи данных");

 delay(250);

   }

 if ((x>x2)&&(x<(x2+w))&&(y>y2)&&(y<(y2+h))&&(t&1)) {

   mouse_hide();

   mode = 1;

   Flag = 1;

 button1(x2,y2,w,h,"    Адреса COM", "и LPT портов");

 delay(250);

   }

 if ((x>x3)&&(x<(x3+w))&&(y>y3)&&(y<(y3+h))&&(t&1))

 {button1(x3,y3,w,h,"    Выход", "");

  delay(300);

 break;}

 if ((x>xr)&&(x<(xr+w))&&(y>yr)&&(y<(yr+h))) exit(1);

 }

}

mouse_hide();

closegraph();

return 0;}




1. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата біологічних наук Київ ~
2. Единицы измерения в радиационной физик
3. Инвариантность стационарного распределения трехузловой сети массового обслуживания
4. Граждане (физические лица) Общие положения о юридических лицах
5. Внешняя политика России на рубеже ХIХ и ХХ веков
6. по теме Размножение и развитие организмов для 10 класса в формате ЕГЭ Учитель биологии- Миронова Е
7. а совокупность работ по документированию управленческой деятельности учреждений и по организации в них док
8. Вексель как одна из новейших форм банковского дела Беларус
9. Мир Эльф Акитен
10. тематигі Жан Батист Фурье синус пен косинустарды~ ~осындысынан ~~ралатын Т периодты ~рбір периодты~ gt функ