assembly program

profileklassjin
div.txt

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { unsigned int dividend = atoi(argv[1]); unsigned int divisor = atoi(argv[2]); //printf("%d / %d = %d %d\n", dividend, divisor, dividend / divisor, dividend % divisor); unsigned int qoutient = 0, remainder = 0; printf("%u / %u = ", dividend, divisor); unsigned int n = 0, tempDividend = dividend, tempDivisor; while (tempDividend > divisor) { tempDividend = tempDividend >> 1; n++; } if (n > 0) { //Handle Overflow Case qoutient = 1 << (n-1); dividend -= (divisor << (n-1)); if (dividend >= (divisor << (n - 1))) { qoutient = qoutient + (1 << (n - 1)); dividend -= (divisor << (n - 1)); } n--; } tempDivisor = divisor << n; while (dividend >= divisor) { if (dividend >= tempDivisor) { dividend -= tempDivisor; qoutient = qoutient + (1 << n); } tempDivisor = tempDivisor >> 1; n--; } remainder = dividend; printf("%u R %u\n", qoutient, remainder); }