Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MenuKras.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include "iostream"
- #include "cstdlib"
- #include "conio.h"
- #include "bitset"
- #include <Windows.h>
- using namespace std;
- int menu_item()
- {
- int variant;
- cout << "** ** **** **** **** * * **** * * * * * * * * ***** ***** * * **** * * ****" << endl;
- cout << "** ** * * * * * * * * * * * * * * * * * * * * * * * * * ** ** * *" << endl;
- cout << "**** **** **** * ***** **** ***** **** **** ** ***** * * ** * *** * * * * ****" << endl;
- cout << "** ** * * * * * * * * * * * * * * * * * * * * * * * * * *" << endl;
- cout << "** ** * * * **** * * * * * * * *** * * ***** * * * * **** * * ****" << endl;
- cout << " Меню \n";
- cout << "1. Калькулятор с ассемблерной вставкой\n";
- cout << "2. Пусть а и b – однобайтные беззнаковые числа.\nЗагрузить их в регистры АX и BX соответственно.\nПроизвести логическое сложение содержимого регистра АХ и BX.\nВывести полученное число на экран.\n";
- cout << "3. Метка. Цикл\n";
- cout << "4. Выход" << endl;
- cout << ">>>";
- cin >> variant;
- return variant;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int a, b, rez, actions;
- int d, c;
- setlocale(LC_ALL, "RUS");
- int variant = menu_item();
- switch (variant)
- {
- case 1:///
- cout << "Введите первое число" << endl;
- cin >> a;
- cout << "Введите второе число" << endl;
- cin >> b;
- cout << "Выберете операцию" << endl;
- cout << "1. Операция сложения\n";
- cout << "2. Операция вычитания\n";
- cout << "3. Операция умножения\n";
- cout << "4. Операция деления\n";
- cout << "5. Операция умножение больших чисел\n";
- cin >> actions;
- //system("cls");
- switch (actions)
- {
- case 1:
- // +
- _asm
- {
- mov eax, a
- mov ebx, b
- add ebx, eax
- mov rez, ebx
- }
- cout << "Результат: ";
- cout << rez << endl;
- break;
- case 2:
- // -
- _asm
- {
- mov eax, a
- mov ebx, b
- sub ebx, eax
- neg ebx
- mov rez, ebx
- }
- cout << "Результат: ";
- cout << rez << endl;
- break;
- case 3:
- // *
- _asm
- {
- mov eax, a
- mov ebx, b
- mul ebx
- mov rez, eax
- }
- cout << "Результат: ";
- cout << rez << endl;
- break;
- case 4:
- // :
- _asm
- {
- mov edx, 0
- mov eax, a
- div b
- mov rez, eax
- }
- cout << "Результат: ";
- cout << (float)rez << endl;
- break;
- case 5:
- // * больших чисел
- _asm
- {
- mov eax, a
- mov ebx, b
- mul ebx
- mov rez, eax
- }
- cout << "Результат: ";
- cout << rez << endl;
- default:
- cout << "Выбран неверный вариант!" << endl;
- exit(EXIT_FAILURE);
- break;
- }
- break;
- case 2:
- cout << "Задание 2\n";
- /* cin >> d >> c;*/
- //_asm
- //{
- // mov ax, byte d[34h]
- // mov bx, byte c[34h]
- // or bx, ax
- // mov rez, ax
- //}
- //cout << rez;
- //Пусть а и b – однобайтные беззнаковые числа
- //Загрузить их в регистры АX и BX соответственно.
- //Произвести логическое сложение содержимого регистра АХ и BX.
- //Вывести полученное число на экран
- break;
- // al в ah и в short
- case 3:
- cout << "Задание 3\n";
- cin >> a >> b >> c;
- _asm
- {
- xor eax, eax
- xor ecx, ecx
- xor ebx, ebx
- mov eax, a
- mov ebx, b
- mov ecx, c
- metka:
- mul ebx
- loop metka
- mov rez, eax
- }
- cout << "Результат: ";
- cout << rez << endl;
- break;
- case 4:
- cout << "Выход\n";
- exit(EXIT_SUCCESS);
- break;
- default:
- break;
- }
- _gettch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement