Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. #include <iostream>
  2. #include <inttypes.h>
  3. #include <ctime>
  4. #include <bitset>
  5. #include <string>
  6. #include <stdio.h>
  7. #define _CRT_SECURE_NO_WARNINGS
  8.  
  9. using namespace std;
  10.  
  11. int main()
  12. {
  13. srand(time(NULL));
  14. setlocale(LC_ALL, "ru");
  15. uint8_t num1 = rand() % (32 - 6) + 6;
  16. uint8_t num2;
  17. uint8_t expectedResult = 0;
  18.  
  19. int operation = rand() % (7) + 1;
  20. cout << operation;
  21. switch (operation)
  22. {
  23. case 1:
  24. {num2 = rand() % (32 - 6) + 6;
  25. cout << "Выполните операцию AND";
  26. break;}
  27.  
  28. case 2:
  29. {num2 =- rand() % (32 - 6) + 6;
  30. cout << "Выполните операцию OR";
  31. break; }
  32.  
  33. case 3:
  34. {num2 = rand() % (32 - 6) + 6;
  35. cout << "Выполните операцию XOR";
  36. break; }
  37.  
  38. case 4:
  39. {num2 = rand() % (5 - 2) + 2;
  40. cout << "Выполните операцию LEFT";
  41. break; }
  42.  
  43. case 5:
  44. {num2 = rand() % (5 - 2) + 2;
  45. cout << "Выполните операцию RIGHT";
  46. break; }
  47.  
  48. case 6:
  49. {num2 = rand() % (5 - 2) + 2;
  50. cout << "Выполните операцию LEFT_CYCLE";
  51. break; }
  52.  
  53. case 7:
  54. {num2 = rand() % (5 - 2) + 2;
  55. cout << "Выполните операцию RIGHT_CYCLE";
  56. break; }
  57. default:
  58. {num2 = 0;
  59. break; }
  60. }
  61. cout << endl;
  62. cout << "\nПервый аргумент: " << static_cast<int>(num1) << endl;
  63. cout << "(" << std::bitset<8>(num1) << ")" << endl;
  64.  
  65.  
  66. cout << "\nВторой аргумент: " << static_cast<int>(num2) << endl;
  67. cout << "(" << std::bitset<8>(num2) << ")" << endl;
  68.  
  69. _asm
  70. {
  71. xor edx,edx
  72. xor ebx, ebx
  73. xor cl,cl
  74. mov dl, num1
  75. mov bl, num2
  76. }
  77.  
  78. switch (operation)
  79. {
  80. case 1:
  81. {_asm
  82. {and dl, bl
  83. mov expectedResult, dl}
  84. break; }
  85. case 2:
  86. {_asm
  87. {or dl, bl
  88. mov expectedResult, dl}
  89. break; }
  90. case 3:
  91. {_asm
  92. {xor dl, bl
  93. mov expectedResult, dl}
  94. break; }
  95. case 4:
  96. {_asm
  97. {
  98. mov cl, bl
  99. shl dl, cl
  100. mov expectedResult, dl
  101. }
  102. break; }
  103. case 5:
  104. {_asm
  105. {
  106. mov cl, bl
  107. shr dl, cl
  108. mov expectedResult, dl
  109. }
  110. break; }
  111. case 6:
  112. {_asm
  113. {
  114. mov cl, bl
  115. rol dl, cl
  116. mov expectedResult, dl
  117. }
  118. break; }
  119. case 7:
  120. {_asm
  121. {
  122. mov cl, bl
  123. ror dl, cl
  124. mov expectedResult, dl
  125. }
  126. break; }
  127.  
  128. default:
  129. break;
  130. }
  131.  
  132.  
  133. string res = bitset<8>(expectedResult).to_string();
  134.  
  135. string answer;
  136. cout << "\nВведите ответ в двоичной системе счисления: ";
  137. cin >> answer;
  138.  
  139. if (answer == res)
  140. {
  141. cout << "\nОтвет верный!\n";
  142. }
  143. else
  144. {
  145. cout << "\nОтвет не верный!\nВерный ответ: ";
  146. cout << (int)expectedResult << " (" << bitset<8>(expectedResult).to_string() << ")";
  147. cout << endl;
  148. }
  149. system("pause");
  150. return 0;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement