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;
}

Объяснение кода листинга программы

  1. Включение необходимых заголовочных файлов.
  2. Объявление внешних функций yy1 и yy2.
  3. Начало функции main.
  4. Объявление переменных x, a, y1, y2, yy.
  5. Вывод сообщения и запрос ввода значения переменной x.
  6. Вывод сообщения и запрос ввода значения переменной a.
  7. Вывод сообщения и формирование результата y=yy1(x,a).
  8. Вызов функции yy1 с аргументами x и a.
  9. Вызов функции yy2 с аргументами x и a.
  10. Вычисление остатка от деления y1 на y2.
  11. Вывод значения переменной yy.
  12. Код функции yy2.
  13. Передача в ассемблерный блок кода значение переменной x.
  14. Проверка условия x>=3.
  15. Если условие выполняется, то к переменной ax прибавляется 7.
  16. Передача в ассемблерный блок кода значение переменной a.
  17. Проверка условия a!=0.
  18. Если условие выполняется, то значение переменной ax меняется на отрицательное.
  19. Возврат значения переменной bx, которая содержит результат вычисления y2.
  20. Конец функции yy2.
  21. Конец функции main.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы