#include int n = 0, m = 0, result = 0; int num, den, dif; // replace implementation by asm block(s) void computeSum() { result = 0; int k = n; while(k <= m) { result = result + k; k = k + 1; } } // don't translate to asm int fact(int n) { if (n == 0) { return 1; } else { return n * fact(n - 1); } } void computeChoose() { if (m < n) { result = 0; } else if (n == m || n == 0) { result = 1; } else if (n == 1) { result = m; } else { // exit asm block: num = fact(m); den = fact(n); dif = fact(m - n); // reenter asm block: den = den * dif; result = num/den; } } int main(void) { char response = 'y'; while(1) { printf("enter two ints -> "); scanf("%d %d", &n, &m); computeSum(); printf("sum = %d\n", result); computeChoose(); printf("#choices = %d\n", result); printf("\nagain?(y/n) "); getchar(); // flush \n response = getchar(); if (response == 'n') break; } printf("bye\n"); }