Vi gemmer LV og CPP på stakken, så vi kan bruge disse registre igennem algoritmen. I LV gemmer vi vores y som er det samme som TOS når vi begynder. CPP bruger vi til at holde styr på om der skal skiftes fortegn til sidst, altså om x og y har forskelligt fortegn. TOS svarer til vores w, OPC til vores r og MDR til vores q. Først tester vi om TOS er lig 0 for hvis den er det så er vi færdige og vi har så valgt at hvis man prøver at dividerer med 0 så smider vi 0 på stakken. Her kunne vi have valgt at kalde mic1_exit, der stopper programkørslen. Vi prioriterede at programmet skulle fortsætte med at køre, selvom der opstår fejl\\ Dernæst tester vi om TOS og OPC er ens, hvis de er det sætter vi MDR lig 1 og skriver det til stakken, efter at have hentet CPP og LV's oprindelige værdier og lagt dem i CPP og LV.\\ Er de ikke ens tester vi på om TOS er negativ, er den det negerer vi både TOS og LV, der endnu er ens. Så tester vi igen om TOS er negativ for hvis den er det, er den lig det $-2^{31}$ og det tilfælde behandler vi som at dividerer med 0 da resultatet kun er forskelligt fra nul hvis tælleren også er $-2^{31}$, og det har vi allerede testet for tidligere i algoritmen. \\ Hvis negationen har gjort TOS positiv så sætter vi CPP til 1. Vi går nu ind i en whileløkke, hvor vi så længe 2*TOS er positivt ganger TOS med 2, dvs. når TOS ikke længere kan fordobles uden der sker overløb forlades løkken.\\ Vi tjekker så om OPC er negativ(idiv_test2), hvis det er tilfældet negeres den (idiv_neg2) og CPP ændres(idiv_neg4). Hvis OPC efter negeringen stadig er negativ er den $-2^{31}$ og man betragter $-2^{31}$ som unsigned. Så kan man trække nævneren fra og så er man sikker på at man har et positivt 2-kompliment tal. Herefter kan vi med god samvittighed ændre CPP, der senere bruges til at tjekke om der skal skiftes fortegn(idiv_invert).\\ Nu har vi taget hensyn til alle special-tilfælde og fortsætter til vores divisions-algoritme(idiv_while3), der er beskrevet ovenfor(s.8). Her starter algoritmen med at teste om TOS - OPC > 0( w <= r ) og er det tilfældet trækkes TOS fra OPC ( r = r - w ) og MDR tælles 1 op( q = q + 1 )(idiv_st). Ligemeget om TOS - OPC > 0( w <= r ) er sand eller ej fortsætter vi med at teste om TOS = LV( w = y ). Hvis de ikke er lig hinanden halveres TOS( w = w/2 ) og MDR fordobles( q = 2q ). Når de bliver lig hinanden er vi færdige og vi mangler kun at negere resultatet i de tilfælde hvor kun den ene var negativ(CPP = 0)( idiv_invert) og ordne registrene, så både LV og CPP får deres værdier indlæst fra stakken. Resultat gemmes i TOS og skrives til stakken.\\ Vi er sikre på at vores algoritme virker for alle 2-komplement-tal, der kan repræsenteres med 32 bit. Det har vi gjort ved at tage hensyn til alle specialtilfælde, fra division med 0 til de mere specifikke f.eks. $-2^{31}$'s negation, der som bekendt stadig er negativ(sig selv) og derfor er et specialtilfælde.