Будь умным!


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

Задание- Поиск в системе LPT портов

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

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

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

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

от 25%

Подписываем

договор

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

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

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

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

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

Отчет

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

" Исследование LPT порта "

Выполнил:

                                                                                                   ст. гр. КС-11н

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

Проверила:

Максименко Н.С.

Донецк 2013

Задание:

  1.  Поиск в системе LPT портов.
  2.  Вывод на экран сведения об активном LPT порте.

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

#include <stdio.h>

#include <dir.h>

#include <dos.h>         

#include <string.h>

#include <stdlib.h>

#include <conio.h>

#include <io.h>

#include <ctype.h>

unsigned int adrlpt1;

int lst[8]={0,1,1,1,1,1,1,1},lct[8]={1,1,1,1,0,1,0,0};

void seachadr()

{unsigned int far *adrptr;

 unsigned int adrlpt;

 int a;

 clrscr();

 adrptr=(unsigned int far *)0x00000408;

 for (a=1;a<4;a++)

 {adrlpt=*adrptr;

 if (adrlpt==0)

   printf("Не найдено порта для Ldpt%d \n",a);

 else

   printf("Адрес, приписанный к Ldpt%d - %Xh \n",a,adrlpt);

 if (a==1)

 adrlpt1=adrlpt;

 adrptr++;

 }

 printf("Нажмите любую клавишу");

 getch();

}

void setcursor(int cursor)

// Устанавливает размер курсора ($2000 - невидимый)

{asm {

   push ax

  push bx

  push cx

  mov ah,1

  mov bh,0

  mov cx,cursor

     int 10h

  pop cx

  pop bx

  pop ax

}

}

//_______________________________________________________________}

void FNTS(long number,int reg[8])

// Преобразование числа в множество ( 10 --> 2 ) }

{int i;             // { Счётчик разрядов 16-разр. операнда.   }

int k, divisor,a=1; // { частное и делитель для преобразования.}

if (number<0)

 {

   a=0;                 // { получение положительного  }

   number=-number;                // { числа и вычитание из него }

   number--;             //    { единицы.                  }

 }                          

divisor=128;

for (i=0;i<8;i++)

 {                      //    { последовательное формиро- }

  k=number / divisor;     //    { вание двоичных цифр числа.}

 if (k>0)

     reg[i]=1;

     number%=divisor;

     divisor>>=1;

 }

if (!a)

  for (i=0;i<8;i++)      //       { инверсирование цифр отри- }

   if (reg[i]==1)       //   { цательного числа (получе- }

      reg[i]=0;          //   { ние дополнительного кода).}

   else reg[i]=1;

}

//{------------------------------------------------------------}

void outt()

{int ss[8]; int i;

gotoxy(1,2); printf("Порт данных:     %p",(unsigned char *) adrlpt1);

gotoxy(1,4); printf("Значения");

gotoxy(1,3); printf("Биты");

gotoxy(1,5); printf("Логика");

gotoxy(1,6); printf("Уровень");

gotoxy(1,7); printf("Контакт");

gotoxy(1,10); printf("Порт статуса:    %p",(unsigned char *)adrlpt1+1);

gotoxy(1,12); printf("Значения");

gotoxy(1,11); printf("Биты");

gotoxy(1,13); printf("Логика");

gotoxy(1,14); printf("Уровень");

gotoxy(1,15); printf("Контакт");

gotoxy(1,18); printf("Порт управления: %p",(unsigned char *)adrlpt1+2);

gotoxy(1,20); printf("Значения");

gotoxy(1,19); printf("Биты");

gotoxy(1,21); printf("Логика");

gotoxy(1,22); printf("Уровень");

gotoxy(1,23); printf("Контакт");

i=inportb(adrlpt1);

FNTS(i,ss);

for (i=1;i<9;i++)

{

if (ss[i-1]==1)

{

gotoxy(6+i*8,4);printf("1 ");

gotoxy(6+i*8,6);printf("5B ");

}

else

{

gotoxy(6+i*8,4);printf("0 ");

gotoxy(6+i*8,6);printf("0B ");

}

}

i=inportb(adrlpt1+1);

FNTS(i,ss);

for (i=1;i<9;i++)

{

if (ss[i-1]==1)

{

gotoxy(6+i*8,12);printf("1 ");

gotoxy(6+i*8,14);

if (lst[i-1]==1) printf("5B ");

else printf("0B ");

}

else

{

gotoxy(6+i*8,12);printf("0 ");

gotoxy(6+i*8,14);

if (lst[i-1]==1) printf("0B ");

else printf("5B ");

}

}

i=inportb(adrlpt1+2);

FNTS(i,ss);

for (i=1;i<9;i++)

{

if (ss[i-1]==1)

{

gotoxy(6+i*8,20);printf("1 ");

gotoxy(6+i*8,22);

if (lct[i-1]==1) printf("5B ");

else printf("0B ");

}

else

{

gotoxy(6+i*8,20);printf("0 ");

gotoxy(6+i*8,22);

if (lct[i]==1) printf("0B ");

else printf("5B ");

}

}

gotoxy(9,3);printf("     7       6       5       4       3       2       1       0");

gotoxy(9,5);printf("     +       +       +       +       +       +       +       +");

gotoxy(9,7);printf("     9       8       7       6       5       4       3       2");

gotoxy(9,11);printf("    BUSY  ACKNLG  PaperEND SELECT  ERROR     *       *       *");

gotoxy(9,15);printf("     11      10      12      13      15      x       x       x");

gotoxy(9,13);printf("     +       -       +       +       -       +       +       +");

gotoxy(9,19);printf("     *       *    INTR_EN   <-o->  SLCT_IN  INIT  AutoFeed STROBE");

gotoxy(9,23);printf("     x       x       x       x       17      16      14       1");

gotoxy(9,21);printf("     +       +       +       +       -       -       -       -");

gotoxy(1,9);printf("──────────────────────────────────────────────────────────────────────────");

gotoxy(1,17);printf("──────────────────────────────────────────────────────────────────────────");

gotoxy(1,24);printf("──────────────────────────────────────────────────────────────────────────");

}

void main()

{

int i=0; int a;unsigned char cp,dp;

setcursor(0x2000);

seachadr();

clrscr();

cp=inportb(adrlpt1+2);

dp=inportb(adrlpt1);

outt();

while (i!=27)

{ dp=inportb(adrlpt1);

gotoxy(10,24);

asm {

push ax

mov ah,0bh

int 21h

mov ah,0

mov a,ax

pop ax}

if (a!=0)

{i=getch();  

switch((char)i)

{case 'i':cp^=0x1;break;

case 'u': cp^=0x2;break;

case 'y': cp^=0x4;break;

case 't': cp^=0x8;break;

case 'r': cp^=0x10;break;

case 'e': cp^=0x20;break;

case 'w': cp^=0x40;break;

case 'q': cp^=0x80;break;

case '1': dp^=0x80;break;

case '2': dp^=0x40;break;

case '3': dp^=0x20;break;

case '4': dp^=0x10;break;

case '5': dp^=0x8;break;

case '6': dp^=0x4;break;

case '7': dp^=0x2;break;

case '8': dp^=0x1;break;

}

outportb(adrlpt1+2,cp);

outportb(adrlpt1,dp);

dp=inportb(adrlpt1);

}

outt();

}}

Скриншоты работы программы:

Поиск Портов

Информация об активном порте Ldpt1:

Скриншот программы из методических указаний:




1. Природнорекреационные ресурсы Карелии и их использование в туризме 2
2. ый билет Казанский Кремль это единственный в своем роде образец синтеза татарского и русского архитек
3. Занятость и безработица, особенности в Республике Беларусь.html
4. на тему- Визуализация численных методов
5. Клиническая картина и лечение параличей
6. Специализация Демократизация и кооперация организационных процессов
7. Курсова робота з дисципліни Маркетинг за темою Інтернет маркетинг
8. Совершенствование организационной структуры управления предприятием ООО Лесопромышленная компания
9. Нижегородский центр туризма Кочкурова Е
10. Тема 3. СТРАХОВІ РИЗИКИ ТА ЇХ ОЦІНЮВАННЯ 1
11. тематику переменной величины
12. і Соціальноекономічний і політичний розвиток Німеччини в ЗО 40х роках XIX ст
13. How hppy we re here they cried to ech other
14. РЕФЕРАТ дисертації на здобуття наукового ступеня доктора біологічних наук.1
15. внешние черты. Не то Лесков- литературные школы не наложили на нем резкого отпечатка.html
16. Лицензирование страховой деятельности.html
17. во Цена 3160100003HD Опора шаровая Meyle BMW 3
18. Оптимальная последовательность обработки деталей на двух и четырех станках
19. кассовые операции банки способствуют развитию реального сектора экономики
20.  количество объектов которые могут быть отчетливо восприняты за короткое время; избирательность скорость