program speed_index; type regrec = record case integer of 1: (ax,bx,cx,dx,bp,di,se,ds,es,flags: integer); 2: (al,ah,bl,bh,cl,ch,dl,dh: byte) end; ascii = set of 0..127; var regs : regrec; bit : array[0..15] of boolean; procedure speed_measurement; var temp : string[8]; i, oldlength: integer; index, x, y, z : real; secs, hundred, difsecs : byte; difhundred : real; begin regs.ah := $2C; msdos(regs); secs := regs.dh; hundred := regs.dl; writeln; write('Speed Index= '); x := 5; y := 7; z := 5; for i := 1 to 250 do begin x :=y*z; x :=y/z; x := y+z; x := y-z; str(x,temp); oldlength := length(temp); temp := temp + temp; temp := copy(temp,1,oldlength); end; regs.ah := $2C; msdos(regs); if regs.dl < hundred then begin regs.dl := regs.dl + 100; regs.dh := regs.dh -1 end; difhundred := regs.dl - hundred; if secs > regs.dh then regs.dh := regs.dh + 60; difsecs := regs.dh-secs; index := 164 / ((difsecs * 100) + difhundred); write(index :3:2); writeln end; begin speed_measurement end.