Листинг программы.
Тест на быстродействие микропроцессора
Writeln ('Время выполнения умножения на Pascal: ',(time2-time1):6:12); Writeln ('Время выполнения сложения на Pascal: ',(time2-time1):6:12); Write ('Введите сумму ряда, не более 2-х байт (65 535:)'); Procedure Mul_Pascal (N:word); {Умножение на Assembler}. Procedure Add_Pascal (N:word); {Сложение на Pascal}. In al, 40h {Конечное количество тиков}. Mov bl, al {Конечное количество тиков}. Mov bl… Читать ещё >
Листинг программы. Тест на быстродействие микропроцессора (реферат, курсовая, диплом, контрольная)
Program Test_of_CPU_for_Zuev;
uses crt;
var.
vid:byte;
t1,t2,NN:word;
time1,time2:real;
Procedure Add_Pascal (N:word); {Сложение на Pascal}.
var i: word;
Summa:integer;
Begin.
summa:=0;
t1:=0;
t2:=0;
asm.
in al, 40h.
mov bl, al.
in al, 40h {Считываем начальное значение тиков от таймера}.
mov bh, al.
mov t1, bx.
end;
for i:=1 to N do.
summa:=summa+i;
asm.
in al, 40h.
mov bl, al {Конечное количество тиков}.
in al, 40h.
mov bh, al.
mov t2, bx.
end;
Time1:=t1/(65 536*18.2);
time2:=t2/(65 536*18.2);
writeln ('Время выполнения сложения на Pascal: ',(time2-time1):6:12);
end;
Procedure Add_Asm (N:word);
var i: word;
Proisv:integer;
Begin.
t1:=0;
t2:=0;
asm.
in al, 40h.
mov ah, al.
in al, 40h.
xchg ah, al.
mov t1, ax.
xor ax, ax.
xor dx, dx.
@@q: {Выполняем сложение}.
inc dx.
add ax, dx.
loop @@q.
in al, 40h.
mov cl, al.
in al, 40h.
mov ch, al.
mov t2, cx.
end;
Time1:=t1/(65 536*18.2);
time2:=t2/(65 536*18.2);
writeln ('Время выполнения сложения на Assembler: ',(time2-time1):6:12);
end;
{=====================================================}.
Procedure Mul_Pascal (N:word); {Умножение на Assembler}.
var i: word;
Proisv:integer;
Begin.
t1:=0;t2:=0;
asm.
in al, 40h.
mov bl, al.
in al, 40h {Считываем начальное значение тиков от таймера}.
mov bh, al.
mov t1, bx.
end;
for i:=1 to N do.
proisv:=proisv*i;
asm.
in al, 40h.
mov bl, al {Конечное количество тиков}.
in al, 40h.
mov bh, al.
mov t2, bx.
end;
Time1:=t1/(65 536*18.2);
time2:=t2/(65 536*18.2);
writeln ('Время выполнения умножения на Pascal: ',(time2-time1):6:12);
end;
Procedure Mul_Asm (N:word);
var Proisv: integer;
Begin.
t1:=0;
t2:=0;
asm.
in al, 40h.
mov bl, al.
in al, 40h {Считываем начальное значение тиков от таймера}.
mov bh, al.
mov t1, bx.
xor ax, ax.
xor bx, bx.
@@q: {Выполняем сложение}.
inc dx.
mul dx.
loop @@q.
in al, 40h.
mov bl, al.
in al, 40h {Конечное количество тиков}.
mov bh, al.
mov t2, bx.
end;
Time1:=t1/(65 536*18.2);
time2:=t2/(65 536*18.2);
writeln ('Время выполнения умножения на Assembler: ',(time2-time1):6:12);
end;
Begin.
clrscr;
{Определяем вид операции}.
textcolor (11);
Writeln ('Сделайте выбор операции и нажмите клавишу ENTER:');
Writeln ('1) Сложение');
Writeln ('2) Умножение');
Readln (vid);
textcolor (10);
Case vid of.
1: begin.
write ('Введите сумму ряда, не более 2-х байт (65 535:)');
Readln (NN);
Writeln;
textcolor (3);
Add_Pascal (NN);
Add_Asm (NN);
end;
2: begin.
write ('Введите произведение ряда, не более 2-х байт (65 535:)');
Readln (NN);
Writeln;
textcolor (3);
Mul_Pascal (NN);
Mul_Asm (NN);
end;
end;
readln;
End.