Тестування НГМД тестом "бабочка" (Звіт з лабораторної роботи № 12)

Страницы работы

Содержание работы

Міністерство освіти і   науки України

НТУ «ХПИ»

Кафедра обчислювальноі техніки і  програмування

Звіт з лабораторної роботи № 12

На тему “ Тестування НГМД  тестом «бабочка»  ”

Перевірив:

       Межерицький С. Г

Виконав:

студент групи КІТ-14в

Богачов О. С..

Харків 2008

Текст програми

program test;

uses dos,crt_;

type

   tbuf=array [1..512] of byte;

var

               r:registers;

               v:real;

        s_n,c_n,g_n,s_k,c_k,g_k,rg,rc,rs,g,c,s,cnt:integer;

               h1,h2,m1,m2,t1,t2,t3,s1,s2,ms1,ms2:word;

        key:integer;

        vl:real;

        i,kol_dor,l,n,adr:integer;

        x,y,a:tbuf;

        keyy:byte;

procedure rsect(var a1:tbuf);

begin

     r.ah:=$02;

     r.al:=$01;

     r.dl:=$00;

     r.dh:=g;

     r.ch:=adr;

     r.cl:=s;

     r.bx:=OFS(a1);

     r.es:=SEG(a1);

     INTR($13,r);

     if r.flags=1 then

     begin

          writeln('Error read sector 02h:',g,' ',c,' ',s);

                 cnt:=cnt+1;

     end;

end;

procedure wsect(var a2:tbuf);

begin

     r.ah:=$03;

     r.al:=$01;

     r.dl:=$00;

     r.dh:=g;

     r.ch:=adr;

     r.cl:=s;

     r.bx:=OFS(a2);

     r.es:=SEG(a2);

     INTR($13,r);

     if r.flags=1 then

     begin

          writeln('Error write sector 03h:',g,' ',c,' ',s);

                 cnt:=cnt+1;

     end;

end;

begin

        clrscr;

        i:=1;

        repeat

        x[i]:=$ff;

        x[i+1]:=$00;

        x[i+2]:=$aa;

        i:=i+3;

        until (i>512);

               r.ah:=$08;

               r.al:=$00;

               INTR($13,r);

        if r.al<>0 then

                                                           begin

                                                              writeln(' error 08h');

                                                           end;

writeln('max nomer golovki= ',r.dh);

writeln('max nomer dorozhki=',r.ch);

writeln('max nomer sektora=',r.cl);

vl:=1.0*(r.dh+1)*(r.ch+1)*r.cl*512;

writeln('obem disketu ',vl,'mb');

key:=0;

rg:=r.dh;

rc:=r.ch;

rs:=r.cl;

while (key<>1) do begin

writeln('vvedite nomer na4alnogo sectora (1-18)');

readln(s_n);

if ((s_n<1) or (s_n>19)) then begin writeln('nepravilno vveli diapazon'); end else key:=1;

               end;

 key:=0;

while (key<>1) do begin

writeln('vvedite nomer kone4nugo sectora (1-18)');

readln(s_k);

if ((s_k<1) or (s_k>19)) then begin writeln('nepravilno vveli diapazon'); end else key:=1;

               end;

 key:=0;

while (key<>1) do begin

writeln('vvedite nomer na4alnoj doro*ki (0-79)');

readln(c_n);

if ((c_n<0) or (c_n>79)) then begin writeln('nepravilno vveli diapazon'); end else key:=1;

               end;

 key:=0;

while (key<>1) do begin

writeln('vvedite nomer kone4noj doro*ki (0-79)');

readln(c_k);

if ((c_k<0) or (c_k>79)) then begin writeln('nepravilno vveli diapazon'); end else key:=1;

               end;

 key:=0;

while (key<>1) do begin

writeln('vvedite nomer na4alnoj golovki (0-1)');

readln(g_n);

if ((g_n<0) or (g_n>1)) then begin writeln('nepravilno vveli diapazon'); end else key:=1;

               end;

 key:=0;

while (key<>1) do begin

writeln('vvedite nomer kone4noj golovki (0-1)');

readln(g_k);

if ((g_k<0) or (g_k>1)) then begin writeln('nepravilno vveli diapazon'); end else key:=1;

               end;

for g:=g_n to g_k do

                              for s:=s_n to s_k do

                begin

                     kol_dor:=c_k-c_n+1;  l:=0; n:=0;

                for c:=1 to kol_dor do

                              begin

                        if(c mod 2=0) then begin adr:=c_k-l; l:=l+1;end;

                        if(c mod 2<>0) then begin adr:=c_n+n; n:=n+1;end;

                        for i:=1 to 512 do y[i]:=0;

                              keyy:=0;

                        rsect(a);

                        wsect(x);

                        gettime(h1,m1,s1,ms1);

                        t1:=ms1;

                        rsect(y);

                        gettime(h2,m2,s2,ms2);

                        t2:=ms2;

                        if ms2>ms1 then  t3:=t2-t1 else t3:=99-t1+t2;

                        wsect(a);

                        for i:=1 to 512 do

                         if x[i]<>y[i] then begin keyy:=1;break; end;

                     if keyy=1

                        then begin writeln('Error (bad) sector ',s,' dorozhka ',adr,' golovka ',g); cnt:=cnt+1; end

                        else writeln('sektor ',s,' dorozhka ',adr,' golovka ',g,' vremya proverki ',t3, ' ok');

                              end;

                end;

                 writeln('Kolichestvo owibok: ',cnt);

                writeln('konec proverki, to exit press Enter');

                readln;

        end.

Результати роботи

max nomer golovki= 1

max nomer dorozhki=79

max nomer sektora=18

obem disketu  1.4745600000E+06mb

vvedite nomer na4alnogo sectora (1-18)

25

nepravilno vveli diapazon

vvedite nomer na4alnogo sectora (1-18)

26

nepravilno vveli diapazon

vvedite nomer na4alnogo sectora (1-18)

15

vvedite nomer kone4nugo sectora (1-18)

16

vvedite nomer na4alnoj doro*ki (0-79)

51

vvedite nomer kone4noj doro*ki (0-79)

59

vvedite nomer na4alnoj golovki (0-1)

1

vvedite nomer kone4noj golovki (0-1)

1

sektor 15 dorozhka 51 golovka 1 vremya proverki 6 ok

sektor 15 dorozhka 59 golovka 1 vremya proverki 5 ok

sektor 15 dorozhka 52 golovka 1 vremya proverki 4 ok

sektor 15 dorozhka 58 golovka 1 vremya proverki 5 ok

sektor 15 dorozhka 53 golovka 1 vremya proverki 5 ok

sektor 15 dorozhka 57 golovka 1 vremya proverki 6 ok

sektor 15 dorozhka 54 golovka 1 vremya proverki 6 ok

sektor 15 dorozhka 56 golovka 1 vremya proverki 6 ok

sektor 15 dorozhka 55 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 51 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 59 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 52 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 58 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 53 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 57 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 54 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 56 golovka 1 vremya proverki 6 ok

sektor 16 dorozhka 55 golovka 1 vremya proverki 6 ok

Kolichestvo owibok: 0

konec proverki, to exit press Enter

Похожие материалы

Информация о работе