Простейшие арифметические действия - Assembler
Формулировка задачи:
надо вычислить вот это: y=a+b-c*d/e
вот моя попытка, компилирует, но считает не правильно подскажите как исправить пожалуйста
#define _CRT_NONSTDC_NO_WARNINGS #include <stdio.h> #include <conio.h> int add(int a, int b) { int c; __asm { push eax; push ebx; mov eax, a; mov ebx, b; add eax, ebx; mov c, eax; pop ebx; pop eax; } return c; } int sub(int a, int b) { int c; __asm { push eax; push ebx; mov eax, a; mov ebx, b; sub eax, ebx; mov c, eax; pop ebx; pop eax; } return c; } int mul(int a, int b) { int c; __asm { push eax; push ebx; mov eax, a; mov ebx, b; mul eax; mov c, eax; pop ebx; pop eax; } return c; } int div(int a, int b) { int c; __asm { push eax; push ebx; mov eax, a; mov ebx, b; div eax; mov c, eax; pop ebx; pop eax; } return c; } int Function(int a, int b, int c, int d, int e) { int tmp; tmp = div(d,e); tmp = mul(c,tmp); tmp = sub(b,tmp); tmp = add(a,tmp); return tmp; } void main() { int a, b, c, d, e; printf("a = "); scanf("%d",&a); printf("b = "); scanf("%d",&b); printf("c = "); scanf("%d",&c); printf("d = "); scanf("%d",&d); printf("e = "); scanf("%d",&e); printf("f(a,b,c,d,e) = %d", Function(a,b,c,d,e)); getch(); }
Решение задачи: «Простейшие арифметические действия»
textual
Листинг программы
tmp = div(d,e); tmp = mul(c,tmp); tmp = sub(b,tmp); tmp = add(a,tmp);
Объяснение кода листинга программы
В данном коде выполняются простейшие арифметические действия над переменными a, b, c, d и e. Список действий следующий:
- Переменная tmp получает значение div(d, e).
- Переменная tmp получает значение mul(c, tmp).
- Переменная tmp получает значение sub(b, tmp).
- Переменная tmp получает значение add(a, tmp).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д