Assembly Language Division

From TRCCompSci - AQA Computer Science
Revision as of 10:08, 14 January 2019 by Admin (talk | contribs)
Jump to: navigation, search
1      INP R0,2
2      INP R1,2
3      MOV R2,#0
4 LOOP:SUB R0,R0,R1
5      ADD R2,R2,#1
6      CMP R0,#0
7      BGT LOOP
8      BEQ END
9      SUB R2,R2,#1
10 END:OUT R2,4
11     HALT

Line 1 & 2 will get the two numbers to divide.

Line 3 will clear register 2 and make sure its set to zero.

Line 4 is the loop label and it will subtract the second number from the first.

Line 5 will increment register 2 to count the number of subtractions we make.

Line 6 compares register 0 with zero.

Line 7 if the compare is greater than we still have subtractions to make.

Line 8 if the compare was equal, then we have completed and the number divides exactly.

Line 9 is reached if the compare was less than zero, so the last subtraction was one too far, so minus 1 from register 2.

Line 10 is the end label and will output the answer.

Line 11 is the halt.