// ***************************************** // Division // // ***************************************** daten[0] = 0xF000; // NOP // DIV_LOOP //********* // Ckeck bitposition daten[1] = 0x1800; // LDAM daten[2] = 202; // bitposition daten[3] = 0x4018; // BZ daten[4] = 73; // Finished daten[5] = 0x3440; //ADD daten[6] = 0xFFFF; // -1 daten[7] = 0x2800; // STAM daten[8] = 202; // Save bitposition -1 // Save MSB of dividend daten[9] = 0x1800; // LDAM daten[10] = 203; // Dividend daten[11] = 0x4010; // BN daten[12] = 19; // BN_MSB_IS_ONE // BN_MSB_IS_ZERO daten[13] = 0x1400; // LDA daten[14] = 0; // 0 into Accu daten[15] = 0x2800; // STAM daten[16] = 205; // TMP daten[17] = 0x4000; //BA daten[18] = 23; // SHIFT_DIVIDEND // BN_MSB_IS_ONE daten[19] = 0x1400; // LDA daten[20] = 1; // 1 into Accu daten[21] = 0x2800; // STAM daten[22] = 205; // TMP // Shift_Dividend daten[23] = 0x1800; // LDAM daten[24] = 203; // Dividend daten[25] = 0x35C0; // SHL daten[26] = 0x0000; daten[27] = 0x2800; // STAM daten[28] = 203; // Dividend // shift rest to left daten[29] = 0x1800; // LDAM daten[30] = 201; // Rest daten[31] = 0x35C0; // SHL daten[32] = 0x0000; daten[33] = 0x2800; // STAM daten[34] = 38; // Write Rest to ADD command daten[35] = 0x1800; // LDAM daten[36] = 205; // TMP daten[37] = 0x3440; //ADD daten[38] = 0x0000; // Rest + TMP daten[39] = 0x2800; // STAM daten[40] = 201; // Write Rest // Divisor > Rest? daten[41] = 0x2800; // STAM daten[42] = 50; // Rest into add command daten[43] = 0x1800; // LDAM daten[44] = 204; // Divisor daten[45] = 0x3540; //NOT daten[46] = 0; daten[47] = 0x3440; //ADD daten[48] = 0x0001; daten[49] = 0x3440; //ADD daten[50] = 0x0000; daten[51] = 0x4010; // BN daten[52] = 65; // Divisor > Rest // Rest >= Divisor: daten[53] = 0x2800; // STAM daten[54] = 201; // Rest - Divisor -> Rest // Shift quotient to left and add 1 daten[55] = 0x1800; // LDAM daten[56] = 200; // Quotient daten[57] = 0x35C0; // SHL daten[58] = 0x0000; daten[59] = 0x3440; //ADD daten[60] = 0x0001; daten[61] = 0x2800; // STAM daten[62] = 200; // Quotient daten[63] = 0x4000; //BA daten[64] = 1; // Back to main loop // Divisor > Rest // Shift quotient to left daten[65] = 0x1800; // LDAM daten[66] = 200; // Quotient daten[67] = 0x35C0; // SHL daten[68] = 0x0000; daten[69] = 0x2800; // STAM daten[70] = 200; // Quotient daten[71] = 0x4000; //BA daten[72] = 1; // Back to main loop // Result daten[73] = 0x1400; // LDA daten[74] = 0xFFFF; // FFFF into Accu daten[75] = 0xF000; // NOP daten[76] = 0x1800; // LDAM daten[77] = 200; // Quotient daten[78] = 0xF000; // NOP daten[79] = 0x1800; // LDAM daten[80] = 201; // Rest daten[81] = 0xF000; // NOP daten[82] = 0x4000; //BA daten[83] = 73; // Back to Result-Loop // Variables daten[200] = 0; // Quotient daten[201] = 0; // Rest daten[202] = 16; // Bitposition daten[203] = 27851; // Dividend daten[204] = 143; // Divisor daten[205] = 0; // TMP