[JavaScript] JavaScript实现MIPS乘法模拟 →→→→→进入此内容的聊天室

来自 , 2020-08-22, 写在 JavaScript, 查看 119 次.
URL http://www.code666.cn/view/56f0b515
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head runat="server">
  4.     <title>MIPS MULTIPLICATION SIMULATOR </title>
  5.  
  6.     <script type="text/javascript">
  7.         /* CREATED BY SERKAN SENDUR */
  8.         function StringToNumberArray(Bin) {
  9.             var numberArray = [];
  10.             for (var i = 0; i < Bin.length; i++) {
  11.                 numberArray.push(Bin.substring(i, i + 1));
  12.             }
  13.             return numberArray;
  14.         }
  15.  
  16.         function ConvertToDecimal(Bin) {
  17.             var decimalNumber = 0;
  18.             var numberArray = StringToNumberArray(Bin);
  19.             numberArray.reverse();
  20.             for (var i = 0; i < numberArray.length; i++) {
  21.                 decimalNumber += numberArray[i] * Math.pow(2, i);
  22.             }
  23.             return decimalNumber;
  24.         }
  25.  
  26.         function ConvertToBinary(dec) {
  27.             var bits = [];
  28.             var dividend = dec;
  29.             var remainder = 0;
  30.             while (dividend >= 2) {
  31.                 remainder = dividend % 2;
  32.                 bits.push(remainder);
  33.                 dividend = (dividend - remainder) / 2;
  34.             }
  35.             bits.push(dividend);
  36.             bits.reverse();
  37.             return bits.join("");
  38.         }
  39.  
  40.         function Multiply() {
  41.             var firstNumber = document.getElementById("txtFirst").value;
  42.             var secondNumber = document.getElementById("txtSecond").value;
  43.             var multiplier = ConvertToBinary(firstNumber);
  44.             var multiplicant = ConvertToBinary(secondNumber);
  45.             var product = 0;
  46.             var step = "Initial values";
  47.             var iteration = 0;
  48.             AppendToTable(iteration, step, multiplier, multiplicant, product);
  49.             multiplicationAlgoritm(multiplier, multiplicant, product, 4);
  50.  
  51.         }
  52.         function multiplicationAlgoritm(multiplier, multiplicant, product, counter) {
  53.             if (counter > 0) {
  54.                 var iteration = 5 - counter;
  55.                 var decProduct = ConvertToDecimal(product);
  56.                 var decMultiplier = ConvertToDecimal(multiplier);
  57.                 var decMultiplicant = ConvertToDecimal(multiplicant);
  58.                 if (Right(multiplier, 1) == "1") {
  59.                     decProduct = decProduct + decMultiplicant;
  60.                     product = ConvertToBinary(decProduct);
  61.                     AppendToTable(iteration, "1a", multiplier, multiplicant, product);
  62.                 }
  63.                 else {
  64.                     AppendToTable(iteration, 1, multiplier, multiplicant, product);
  65.                 }
  66.                 decMultiplicant = ConvertToDecimal(multiplicant);
  67.                 decMultiplicant = decMultiplicant << 1;
  68.                 multiplicant = ConvertToBinary(decMultiplicant);
  69.                 AppendToTable(iteration, 2, multiplier, multiplicant, product);
  70.  
  71.                 decMultiplier = ConvertToDecimal(multiplier);
  72.                 decMultiplier = decMultiplier >> 1;
  73.                 multiplier = ConvertToBinary(decMultiplier);
  74.                 AppendToTable(iteration, 3, multiplier, multiplicant, product);
  75.                 counter--;
  76.                 multiplicationAlgoritm(multiplier, multiplicant, product, counter);
  77.             }
  78.  
  79.         }
  80.         function AppendToTable(iteration, step, multiplier, multiplicant, product) {
  81.  
  82.             var row = document.getElementById("tblResults").insertRow();
  83.  
  84.             var cell = row.insertCell();
  85.             cell.innerText = iteration;
  86.  
  87.             var cell = row.insertCell();
  88.             cell.innerText = step;
  89.  
  90.             var cell = row.insertCell();
  91.             cell.innerText = multiplier;
  92.  
  93.             var cell = row.insertCell();
  94.             cell.innerText = multiplicant;
  95.  
  96.             var cell = row.insertCell();
  97.             cell.innerText = product;
  98.  
  99.         }
  100.         function ResetTable() {
  101.  
  102.             for (var i = document.getElementById("tblResults").rows.length; i > 1; i--) {
  103.                 document.getElementById("tblResults").deleteRow(i - 1);
  104.             }
  105.         }
  106.         function Right(str, n) {
  107.             if (n <= 0)
  108.                 return "";
  109.             else if (n > String(str).length)
  110.                 return str;
  111.             else {
  112.                 var iLen = String(str).length;
  113.                 return String(str).substring(iLen, iLen - n);
  114.             }
  115.         }
  116.  
  117.        
  118.     </script>
  119.  
  120.     <style type="text/css">
  121.         .style1
  122.         {
  123.             border-collapse: collapse;
  124.             border-style: solid;
  125.             border-width: 1px;
  126.         }
  127.         .style2
  128.         {
  129.             width: 6px;
  130.         }
  131.         .style4
  132.         {
  133.             color: #3366FF;
  134.         }
  135.         .style5
  136.         {
  137.             color: #0066FF;
  138.         }
  139.     </style>
  140. </head>
  141. <body>
  142.     <br />
  143.     <h3 class="style4">
  144.         &nbsp;WELCOME TO MIPS MULTIPLICATION SIMULATOR</h3>
  145.     <hr style="color: #0033CC" />
  146.     <table>
  147.         <tr>
  148.             <td class="style5">
  149.                 Multiplier :
  150.             </td>
  151.             <td>
  152.                 <input id="txtFirst" type="text" />
  153.             </td>
  154.         </tr>
  155.         <tr>
  156.             <td class="style5">
  157.                 Multiplicant :
  158.             </td>
  159.             <td>
  160.                 <input id="txtSecond" type="text" />
  161.             </td>
  162.         </tr>
  163.         <tr>
  164.             <td align="center" colspan="2">
  165.                 <input id="btnMultiply" type="button" value="Multiply" onclick="ResetTable();Multiply();"
  166.                     style="color: #3399FF" />
  167.             </td>
  168.         </tr>
  169.     </table>
  170.     <table class="style1" cellpadding="2" cellspacing="2" id="tblResults">
  171.         <tr style="color: White">
  172.             <td bgcolor="#3366FF">
  173.                 Iteration
  174.             </td>
  175.             <td bgcolor="#3366FF">
  176.                 Step
  177.             </td>
  178.             <td bgcolor="#3366FF">
  179.                 Multiplier
  180.             </td>
  181.             <td bgcolor="#3366FF" class="style2">
  182.                 Multiplicant
  183.             </td>
  184.             <td bgcolor="#3366FF">
  185.                 Product
  186.             </td>
  187.         </tr>
  188.     </table>
  189. </body>
  190. </html>
  191. //javascript/6189

回复 "JavaScript实现MIPS乘法模拟"

这儿你可以回复上面这条便签

captcha