Новости

Дослідження процесу виведення даних на пристрій відображення інформації

Работа добавлена:






Дослідження процесу виведення даних на пристрій відображення інформації на http://mirrorref.ru

Лабораторна робота № 2

Тема: Дослідження процесу виведення даних на пристрій відображення інформації

1. Мета роботи:Порівняти різні варіанти організації виведення даних на пристрій відображення інформації (на екран монітору персонального компютера). Вивчити особливості програмування на мовіBorlandPascal 7.0операцій виведення даних на пристрій відображення інформації.

2. Підготовка до роботи:

Вивчити різні варіанти виведення даних на пристрій відображення інформації.

Виконати попередній аналіз початкових даних індивідуального варіанту 11 (Колір заповнення – білий, Координати кутів прямокутника: лівий верхній – 50:50, правий нижній – 500:400).

Скласти програму на мові програмування Borland Pascal 7.0, що реалізує різні варіанти виведення даних на пристрій відображення інформації (п.2 розділу "Виконання роботи").

3. Виконання роботи:

3.1. Вивести на екран монітора персонального комп’ютера наступну графічну інформацію: прямокутник з координатами вершин і кольором заповнення у відповідності варіанту 11 (Колір заповнення – білий, Координати кутів прямокутника: лівий верхній – 50:50, правий нижній – 500:400).

3.2. Виведення графічної інформації виконати різними способами:

- використати стандартні процедуриFillPoly абоBar мовиBorlandPascal 7.0, що виконують заповнення замкнутого контуру;

{FillPoly}

1:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 Gd:=Detect;

 InitGraph(Gd, Gm, 'C:\BP\BGI'); { Путь к BGI-драйверам }

 If GraphResult <> grOk Then Halt(1);

 FillPoly(SizeOf(Triangle) Div SizeOf(PointType), Triangle);

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f1,'var_1.txt');

 rewrite(f1);

 write(f1,s);

 close(f1);

end;

- використати стандартну процедуруLine мовиBorlandPascal 7.0 длязаповнення набором ліній;

{Line}

2:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 Gd:=Detect;

 InitGraph(Gd, Gm, '');

 If GraphResult <> grOk Then Halt(1);

 for i:=50 to 400 do

   Line(50, i, 500, i);

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f2,'var_2.txt');

 rewrite(f2);

 write(f2,s);

 close(f2);

end;

- використати стандартну процедуруPutPixelBorlandPascal 7.0 для заповнення прямокутника набором точок;

{PutPixel}

3:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 for i:=50 to 400 do

   for j:=50 to 500 do

     putpixel(j,i,white);

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f3,'var_3.txt');

 rewrite(f3);

 write(f3,s);

 close(f3);

end;

- використати перериванняInt 10hбазової системи введення – виведення;

{Int 10h}

4:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 setactivepage(0);

 setvisualpage(0);

 for i:=50 to 400 do

   for j:=50 to 500 do begin

     asm

       mov ah,0ch

       mov al,0fh

       mov bh,0

       mov cx,j

       mov dx,i

       int 10h

     end;

   end;

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f4,'var_4.txt');

 rewrite(f4);

 write(f4,s);

 close(f4);

end;

  • використати безпосередній запис даних у відеопамять.

{zapis y videopamyat}

5:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 setactivepage(0);

 setvisualpage(0);

 segadr:=$a000;

 ofsadr:=$0000;

 for i:=50 to 400 do

   for planes:=0 to 3 do begin

     port[$3c4]:=$02;

     case planes of

       0:port[$3c5]:=$01;

       1:port[$3c5]:=$02;

       2:port[$3c5]:=$04;

       3:port[$3c5]:=$08;

     end;

     for j:=6 to 62 do begin

       ofsadr:=i*80+j;

       case planes of

         0:mem[segadr:ofsadr]:=$ff;

         1:mem[segadr:ofsadr]:=$ff;

         2:mem[segadr:ofsadr]:=$ff;

         3:mem[segadr:ofsadr]:=$ff;

end;

     end;

   end;

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f5,'var_5.txt');

 rewrite(f5);

 write(f5,s);

 close(f5);

end;

Загальний вигляд программи:

{

Програма виконує заповнення всього екрану точками білого кольору

}

program pixel;

uses crt,graph,dos;

var

i,j,k,planes: integer;

ch: char;

gd,gm: integer;

segadr,ofsadr: word;

Hour1, Minute1, Second1, Sec100_1: word;

Hour2, Minute2, Second2, Sec100_2: word;

 f1,f2,f3,f4,f5: file of string;

 s, sH_1, sM_1, sS_1, sS100_1, sH_2, sM_2, sS_2, sS100_2: string;

Const Triangle : Array [1..4] Of PointType = ((X:  50; Y: 50),

                                            (X: 500; Y: 50),

                                            (X: 500; Y: 400),

                                            (X: 50; Y: 400));

begin

write('variant -> ');

readln(k);

gd:=VGA;

gm:=VGAHi;

initgraph(gd,gm,'d:\bp\bgi');

setbkcolor(black);

case k of

{FillPoly}

1:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 Gd:=Detect;

 InitGraph(Gd, Gm, 'C:\BP\BGI'); { Путь к BGI-драйверам }

 If GraphResult <> grOk Then Halt(1);

 FillPoly(SizeOf(Triangle) Div SizeOf(PointType), Triangle);

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f1,'var_1.txt');

 rewrite(f1);

 write(f1,s);

 close(f1);

end;

{Line}

2:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 Gd:=Detect;

 InitGraph(Gd, Gm, '');

 If GraphResult <> grOk Then Halt(1);

 for i:=50 to 400 do

   Line(50, i, 500, i);

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f2,'var_2.txt');

 rewrite(f2);

 write(f2,s);

 close(f2);

end;

{PutPixel}

3:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 for i:=50 to 400 do

   for j:=50 to 500 do

     putpixel(j,i,white);

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f3,'var_3.txt');

 rewrite(f3);

 write(f3,s);

 close(f3);

end;

{Int 10h}

4:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 setactivepage(0);

 setvisualpage(0);

 for i:=50 to 400 do

   for j:=50 to 500 do begin

     asm

       mov ah,0ch

       mov al,0fh

       mov bh,0

       mov cx,j

       mov dx,i

       int 10h

     end;

   end;

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f4,'var_4.txt');

 rewrite(f4);

 write(f4,s);

 close(f4);

end;

{zapis y videopamyat}

5:begin

 gettime(Hour1, Minute1, Second1, Sec100_1);

 setactivepage(0);

 setvisualpage(0);

 segadr:=$a000;

 ofsadr:=$0000;

 for i:=50 to 400 do

   for planes:=0 to 3 do begin

     port[$3c4]:=$02;

     case planes of

       0:port[$3c5]:=$01;

       1:port[$3c5]:=$02;

       2:port[$3c5]:=$04;

       3:port[$3c5]:=$08;

     end;

     for j:=6 to 62 do begin

       ofsadr:=i*80+j;

       case planes of

         0:mem[segadr:ofsadr]:=$ff;

         1:mem[segadr:ofsadr]:=$ff;

         2:mem[segadr:ofsadr]:=$ff;

         3:mem[segadr:ofsadr]:=$ff;

end;

     end;

   end;

 gettime(Hour2, Minute2, Second2, Sec100_2);

 str(Hour1:2,sH_1);

 str(Minute1:2,sM_1);

 str(Second1,sS_1);

 str(Sec100_1,sS100_1);

 str(Hour2:2,sH_2);

 str(Minute2:2,sM_2);

 str(Second2,sS_2);

 str(Sec100_2,sS100_2);

 s:='nachalo ->' + sM_1 + ':' + sM_1 + ':' + sS_1 + ':' + sS100_1 +

    '||||' + 'konec ->' + sM_2 + ':' + sM_2 + ':' + sS_2 + ':' + sS100_2;

 assign(f5,'var_5.txt');

 rewrite(f5);

 write(f5,s);

 close(f5);

end;

end; {case}

ch:=readkey;

closegraph;

end.

3.3 Порівняти час виведення графічної інформації на екран і складність програмування для всіх перерахованих вище способів виведення.

3.3.1. Використання стандартної процедуриFillPoly мовиBorlandPascal 7.0, що виконують заповнення замкнутого контуру. Час затрачений 39 мс.

nachalo ->39:39:41:43||||konec ->39:39:41:82

3.3.2. Використання стандартної процедуриLine мовиBorlandPascal 7.0 длязаповнення набором ліній.Час затрачений 22 мс.

nachalo ->40:40:28:7||||konec ->40:40:28:29

3.3.3. Використання стандартної процедуриPutPixelBorlandPascal 7.0 для заповнення прямокутника набором точок. Час затрачений 15 мс.

nachalo ->40:40:3:68||||konec ->40:40:4:83

3.3.4. Використання перериванняInt 10hбазової системи введення – виведення. Час затрачений 43 мс.

nachalo ->40:40:11:48||||konec ->40:40:12:91

3.3.5. Використання безпосереднього запису даних у відеопамять. Час затрачений 0 мс.

nachalo ->41:41:3:55||||konec ->41:41:3:55

Висновок:В цій лабораторній роботі я навчився порівнювати різні варіанти організації виведення даних на пристрій відображення інформації (на екран монітору персонального компютера). Вивчив особливості програмування на мовіBorlandPascal 7.0операцій виведення даних на пристрій відображення інформації.

Дослідження процесу виведення даних на пристрій відображення інформації на http://mirrorref.ru


Похожие рефераты, которые будут Вам интерестны.

1. Реферат ДОСЛІДЖЕННЯ ПРОЦЕСУ ЗАПИСУ ДАНИХ З ОЗП НА ЖОРСТКИЙ ДИСК

2. Реферат Дослідження процесу запису даних з ОЗП на жорский диск

3. Реферат Створення простої програми для відображення даних з бази даних

4. Реферат VBA. Введення-виведення даних через діалогові вікна, перетворення даних, константи

5. Реферат Дослідження процесу і режимів роботи пристрою для подрібнення зерна

6. Реферат Дослідження можливостейпроведення аналізу і прогнозування даних у Microsoft Excel

7. Реферат Опис файлового домена. Стандартні предикати Турбо-Пролога для роботи з файлами. Запис інформації у файл. Читання інформації з файлу. Переписування інформації з файлу у файл

8. Реферат Дослідження кінетики процесу сушіння дисперсного матеріалу у псевдо зрідженому шарі

9. Реферат Методологічні аспекти дослідження процесу соціалізації медіакультурному просторі інформаційного суспільства

10. Реферат ДОСЛІДЖЕННЯ ПРОЦЕСІВ ШИФРУВАННЯ ДАНИХ З ВИКОРИСТАННЯМ СТАНДАРТУ ГОСТ 28147-89