Advertisement
Guest User

lab2.mcl

a guest
Mar 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. writeln "**************************************************";
  2. writeln "* Моделирование алгоритма умножения *";
  3. writeln "**************************************************";
  4.  
  5. REG INPA[8], INPB[8], RA[8], RB[8], R1[8], R2[8], R3[8], RC[8], SM[8], SCH[8], TZ[1],
  6. REZ[16], P[16];
  7.  
  8. start:
  9. write "A=";
  10. read INPA;
  11. write "B=";
  12. read INPB;
  13. R1:=INPA;
  14. R2:=INPB;
  15. writeln "R1=",$B8 R1;
  16. writeln "R2=",$B8 R2;
  17.  
  18. TZ := (R1[7..7] AND (NOT R2[7..7])) OR (R2[7..7] AND (NOT R1[7..7]));
  19. IF R1[7..7]=1 THEN R1 := COM(R1);
  20. IF R2[7..7]=1 THEN R2 := COM(R2);
  21.  
  22.  
  23. RB := 0; SCH := 8;
  24.  
  25. WHILE:
  26. IF R2[0..0] = 0 THEN RA := 0;
  27. IF R2[0..0] = 1 THEN RA := R1;
  28. SM := RA + RB;
  29. RC := SM SHR 1;
  30. R3 := R2 SHR 1;
  31. R3[7..7] := SM[0..0];
  32. RB := RC;
  33. R2 := R3;
  34. SCH := SCH - 1;
  35. writeln "* РЕГИСТРЫ*";
  36. writeln "* старшая часть произведения*";
  37. writeln "RC=",$B9 RC;
  38. writeln "* сдвиг множителя*";
  39. writeln "R3=",$B9 R1;
  40. writeln "* множитель и младшая часть произведения*";
  41. writeln "R2=",$B9 RC;
  42. writeln "* сумма частичных произведений*";
  43. writeln "RB=",$B9 R1;
  44. writeln "* сумма множимого и частичных произведений*";
  45. writeln "SM=",$B9 RC;
  46.  
  47. IF SCH <> 0 THEN GOTO WHILE;
  48. REZ[0..7] := R2;
  49. REZ[8..15] := RC;
  50. REZ[15..15] := TZ;
  51. P := REZ;
  52. IF REZ[15..15] = 0 THEN
  53. write "Результат REZ= ",$B16 P," = ",$D4 P;
  54. IF REZ[15..15] = 1 THEN GOSUB WREZ;
  55. writeln "***************** Конец программы ****************";
  56. END;
  57.  
  58. WREZ:
  59. write "Результат REZ= ",$B16 REZ," = -";
  60. REZ[15..15]:=0;
  61. writeln $D4 REZ;
  62. RETURN;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement