Міністерство освіти і науки України
НТУ «ХПИ»
Звіт з лабораторної роботи № 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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.