ну давайте разберем начало хотя бы:
mov al, c;
mov cl, 2;
imul cl;
mov cl, 1;
idiv cl;
// делим 2*c на 1? зачем?
mov bl, al;
mov al, d;
sub al, 53;
add al, e;
// d-53+e? почему сложение и вычитание везде перепутано?
add bl, al;
// bl = 2*c+d-53+e
mov al, a;
cbw;
mov cl, 4;
idiv cl;
mov dl, al;
add al, 1;
sub al, f;
// al = a/4+1-f ??
xchg al, bl;
cbw;
idiv bl;
// al = (2*c+d-53+e) / (a/4+1-f)
mov res_asm, al;
со знаками точно напутано.
Далее,
scanf_s("%d", &a);
- так нельзя. Запишется 4 байта в однобайтовую переменную. MS VS как я понял не умеет считывать число в переменную типа char нормально, так что придется как-то так повозиться:
int ai, ci, di, fi, ei;
...
printf("a = "); scanf_s("%d", &ai);
printf("c = "); scanf_s("%d", &ci);
printf("d = "); scanf_s("%d", &di);
printf("f = "); scanf_s("%d", &fi);
printf("e = "); scanf_s("%d", &ei);
a = ai;
c = ci;
d = di;
f = fi;
e = ei;