Difference between revisions of "Assembly Language Division"
Line 10: | Line 10: | ||
10 END:OUT R2,4 | 10 END:OUT R2,4 | ||
11 HALT | 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. |
Revision as of 09:08, 14 January 2019
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.