Y1=7, если x<3. Как докончить? (Часть 3) - Assembler
Формулировка задачи:
Здравствуйте!
Помогите пожалуйста докончить вот этот код. не пойму, что за дела творятся с ним...
На этот раз у меня та же задачка
вот задача http://www.cyberforum.ru/attachments/251122d1364842822
Предыдушая решенная тема http://www.cyberforum.ru/assembler/thread828415.html
Не понимаю, БОРЛАНДСИ будто сошел сума...
ТАСМ идет отлично, без ошибок.
а вот С вот, что говорит http://www.cyberforum.ru/attachments/256646d1366051020
# include<stdio.h> int x,a,y1,y2,yy; int extern cdecl yy1 (int,int); int yy2(int ,int); void main() { printf("\n Vvedite znachenie X: "); scanf("%d",&x); printf("\n Vvedite znachenie A : "); scanf("%d",&a); printf("\n Rezultat Y= "); //printf("%d",yy(p1,p2)); y1=yy1(x,a); y2=yy2(x,a); yy=y1 fmod y2; printf("%d",yy); } int yy2 (int x,int a) { int y2; asm { mov ax,x cmp ax,3 jge @m1 add ax,7 jmp @m2 M1: mov ax,a test ax,ax jns @m3 neg ax @m3: add ax,x @m2: mov bx,ax mov y2,bx } return y2; }
.model small .code public _yy1 _yy1 proc far x1:word, a1:word mov ax,x1 cmp ax,5 jg @M1 mov ax,1 jmp @M2 @M1: mov ax,a1 add ax,x1 @M2: ret _yy1 endp end
Решение задачи: «Y1=7, если x<3. Как докончить? (Часть 3)»
textual
Листинг программы
# include<stdio.h> # include<math.h> int extern cdecl yy1 (int,int); int yy2(int x,int a); void main() { int x,a,y1,y2,yy; printf("\n Vvedite znachenie X: "); scanf("%d",&x); printf("\n Vvedite znachenie A : "); scanf("%d",&a); printf("\n Rezultat Y= "); //printf("%d",yy(p1,p2)); y1=yy1(x,a); y2=yy2(x,a); yy=fmod(y1,y2); printf("%d",yy); } int yy2(int x,int a) { int y2; asm { mov ax,x cmp ax,3 jge m1 add ax,7 jmp m2 m1:asm { mov ax,a test ax,ax } jns m3 neg ax m3: add ax,x m2: mov bx,ax mov y2,bx } return y2; }
Объяснение кода листинга программы
- Включение необходимых заголовочных файлов.
- Объявление внешних функций yy1 и yy2.
- Начало функции main.
- Объявление переменных x, a, y1, y2, yy.
- Вывод сообщения и запрос ввода значения переменной x.
- Вывод сообщения и запрос ввода значения переменной a.
- Вывод сообщения и формирование результата y=yy1(x,a).
- Вызов функции yy1 с аргументами x и a.
- Вызов функции yy2 с аргументами x и a.
- Вычисление остатка от деления y1 на y2.
- Вывод значения переменной yy.
- Код функции yy2.
- Передача в ассемблерный блок кода значение переменной x.
- Проверка условия x>=3.
- Если условие выполняется, то к переменной ax прибавляется 7.
- Передача в ассемблерный блок кода значение переменной a.
- Проверка условия a!=0.
- Если условие выполняется, то значение переменной ax меняется на отрицательное.
- Возврат значения переменной bx, которая содержит результат вычисления y2.
- Конец функции yy2.
- Конец функции main.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д