Advertisement
Guest User

424252562

a guest
Feb 21st, 2020
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  1. // MenuKras.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "iostream"
  6. #include "cstdlib"
  7. #include "conio.h"
  8. #include "bitset"
  9. #include <Windows.h>
  10.  
  11. using namespace std;
  12.  
  13. int menu_item()
  14. {
  15. int variant;
  16. cout << "** ** **** **** **** * * **** * * * * * * * * ***** ***** * * **** * * ****" << endl;
  17. cout << "** ** * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * *" << endl;
  18. cout << "**** **** **** * ***** **** ***** **** **** ** ***** * * ** * *** * * * * ****" << endl;
  19. cout << "** ** * * * * * * * * * * * * * * * * * * * * * * * * * *" << endl;
  20. cout << "** ** * * * **** * * * * * * * *** * * ***** * * * * **** * * ****" << endl;
  21.  
  22.  
  23. cout << " Меню \n";
  24.  
  25. cout << "1. Калькулятор с ассемблерной вставкой\n";
  26. cout << "2. Пусть а и b – однобайтные беззнаковые числа.\nЗагрузить их в регистры АX и BX соответственно.\nПроизвести логическое сложение содержимого регистра АХ и BX.\nВывести полученное число на экран.\n";
  27. cout << "3. Метка. Цикл\n";
  28. cout << "4. Выход" << endl;
  29. cout << ">>>";
  30. cin >> variant;
  31. return variant;
  32. }
  33.  
  34. int _tmain(int argc, _TCHAR* argv[])
  35. {
  36. int a, b, rez, actions;
  37.  
  38. int d, c;
  39.  
  40. setlocale(LC_ALL, "RUS");
  41.  
  42. int variant = menu_item();
  43.  
  44. switch (variant)
  45. {
  46. case 1:///
  47. cout << "Введите первое число" << endl;
  48. cin >> a;
  49. cout << "Введите второе число" << endl;
  50. cin >> b;
  51. cout << "Выберете операцию" << endl;
  52. cout << "1. Операция сложения\n";
  53. cout << "2. Операция вычитания\n";
  54. cout << "3. Операция умножения\n";
  55. cout << "4. Операция деления\n";
  56. cout << "5. Операция умножение больших чисел\n";
  57.  
  58. cin >> actions;
  59. //system("cls");
  60.  
  61. switch (actions)
  62. {
  63. case 1:
  64. // +
  65. _asm
  66. {
  67. mov eax, a
  68. mov ebx, b
  69. add ebx, eax
  70. mov rez, ebx
  71. }
  72. cout << "Результат: ";
  73. cout << rez << endl;
  74. break;
  75. case 2:
  76. // -
  77. _asm
  78. {
  79. mov eax, a
  80. mov ebx, b
  81. sub ebx, eax
  82. neg ebx
  83. mov rez, ebx
  84. }
  85. cout << "Результат: ";
  86. cout << rez << endl;
  87. break;
  88. case 3:
  89. // *
  90. _asm
  91. {
  92. mov eax, a
  93. mov ebx, b
  94. mul ebx
  95. mov rez, eax
  96. }
  97. cout << "Результат: ";
  98. cout << rez << endl;
  99. break;
  100. case 4:
  101. // :
  102. _asm
  103. {
  104. mov edx, 0
  105. mov eax, a
  106. div b
  107. mov rez, eax
  108. }
  109. cout << "Результат: ";
  110. cout << (float)rez << endl;
  111. break;
  112. case 5:
  113. // * больших чисел
  114.  
  115. _asm
  116. {
  117. mov eax, a
  118. mov ebx, b
  119. mul ebx
  120. mov rez, eax
  121. }
  122. cout << "Результат: ";
  123. cout << rez << endl;
  124. default:
  125. cout << "Выбран неверный вариант!" << endl;
  126. exit(EXIT_FAILURE);
  127. break;
  128. }
  129. break;
  130. case 2:
  131. cout << "Задание 2\n";
  132.  
  133. /* cin >> d >> c;*/
  134.  
  135. //_asm
  136. //{
  137. // mov ax, byte d[34h]
  138. // mov bx, byte c[34h]
  139. // or bx, ax
  140. // mov rez, ax
  141. //}
  142. //cout << rez;
  143.  
  144. //Пусть а и b – однобайтные беззнаковые числа
  145. //Загрузить их в регистры АX и BX соответственно.
  146. //Произвести логическое сложение содержимого регистра АХ и BX.
  147. //Вывести полученное число на экран
  148. break;
  149. // al в ah и в short
  150. case 3:
  151. cout << "Задание 3\n";
  152. cin >> a >> b >> c;
  153. _asm
  154. {
  155. xor eax, eax
  156. xor ecx, ecx
  157. xor ebx, ebx
  158. mov eax, a
  159. mov ebx, b
  160. mov ecx, c
  161. metka:
  162. mul ebx
  163. loop metka
  164. mov rez, eax
  165. }
  166. cout << "Результат: ";
  167. cout << rez << endl;
  168. break;
  169. case 4:
  170. cout << "Выход\n";
  171. exit(EXIT_SUCCESS);
  172. break;
  173. default:
  174. break;
  175. }
  176.  
  177. _gettch();
  178.  
  179. return 0;
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement