Advertisement
YauhenMardan

Asm_Lab1

Apr 22nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     bool inf=0; //true, если бесконечно много решений
  8.     bool no=0; //true, если решений нет
  9.     int a,b; //коэффициенты
  10.     int k=-1; //для умножения на -1
  11.     int result,reminder; //частное и остаток
  12.     cout<<"Введите a"<<endl;
  13.     cin>>a;
  14.     cout<<"Введите b"<<endl;
  15.     cin>>b;
  16.     cout<<"Ваше выражение: "<<a<<"x+"<<b<<"=0"<<endl<<"Решение..."<<endl;
  17.     __asm
  18.     {
  19.         mov ebx,a
  20.         mov eax,b
  21.         //if "a=0 || a!=0"
  22.         cmp ebx,0
  23.         je aEQL0
  24.         //"a!=0"
  25.             //if "b=0 || b!=0"
  26.             cmp eax,0
  27.             je bEQL0
  28.             //"b!=0"
  29.             cwd //расширяем слово до двойного слова
  30.             imul k //меняем знак b
  31.             idiv a //делим на a
  32.                 //if "reminder==0 || reminder!=0"
  33.                 cmp edx,0
  34.                 je remEQL0
  35.                 //"reminder!=0"
  36.                 mov eax,1 //нет решений
  37.                 mov no,eax //
  38.                 jmp end_
  39.             remEQL0:
  40.                 //"reminder==0"
  41.                 mov result,eax //заносим результат деления
  42.                 jmp end_
  43.         bEQL0:
  44.             //"b==0"
  45.             mov result,0
  46.             jmp end_
  47.         //"a==0"
  48.     aEQL0:
  49.             //if "b=0 || b!=0"
  50.             cmp eax,0
  51.             je bEQL0_
  52.             //"b!=0"
  53.             mov eax,1 //нет решений
  54.             mov no,eax //
  55.             jmp end_
  56.         bEQL0_:
  57.             //"b==0"
  58.             mov eax,1 //бесконечно много решений
  59.             mov inf,eax //
  60.             jmp end_
  61.     end_:
  62.        
  63.     }
  64.     if(inf)
  65.         cout<<"Ответ: Z"<<endl;
  66.     else if(no)
  67.         cout<<"Ответ: нет решений"<<endl;
  68.     else
  69.         cout<<"Ответ: "<<result<<endl;
  70.     return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement