Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LR_4

.txt
Скачиваний:
6
Добавлен:
01.11.2022
Размер:
4.8 Кб
Скачать
/ ConsoleApplication11.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include "pch.h"
#include <iostream>

using namespace std;

int main()
{
	setlocale(0, "");
	short a, b, c, d;

	std::cout << "Введите первое число (число а): ";
	cin >> a;
	std::cout << "Введите второе число (число b): ";
	cin >> b;
	std::cout << "Введите третье число (число c): ";
	cin >> c;
	std::cout << "Введите четвёртое число (число d): ";
	cin >> d;

	_asm {
		mov ax, b
		cmp ax, c
		jl label1
		add ax, c
		jmp label2
		label1:
			sub ax, c
		label2:
			mov a, ax
	}

	cout << "1. a = " << a << endl;

	_asm {
		mov ax, b
		cmp ax, c
		jl label1
		add ax, c
		jmp label2
		label1:
			
	}

	/*
	
	//a+b
	short sum = a + b;
	std::cout << "Сумма чисел a и b (C++) = " << sum << endl;

	short sumAsm;

	__asm {
		mov ax, a
		add ax, b
		mov sumAsm, ax
	}
	std::cout << "Сумма чисел a и b (Asm) = " << sumAsm << endl;
	
	
	//a-b
	short sub = a - b;
	std::cout << "Разность чисел a и b (C++) = " << sub << endl;

	short subAsm;

	__asm {
		mov ax, a
		sub ax, b
		mov subAsm, ax
	}
	std::cout << "Разность чисел a и b (Asm) = " << subAsm << endl;

	//a+b-c
	short sum1 = a + b;
	short sub1 = sum1 - c;

	short sum1Asm;
	short sub1Asm;

	__asm {
		mov ax, a
		add ax, b
		mov sum1Asm, ax
		sub ax, c
		mov sub1Asm, ax;
	}
	
	std::cout << "Результат a+b-c  (C++) = " << sub1 << endl;
	std::cout << "Результат a+b-c (Asm) = " << sub1Asm << endl;

	//(a+b)*(c+a)
	short mul = (a + b)*(c + a);
	short mulAsm;

	__asm {
		mov ax, a
		mov bx, c
		add ax, b
		add bx, a
		mul bx
		mov mulAsm, ax;
	}

	std::cout << "Результат (a+b)*(c+a) (C++) = " << mul << std::endl;
	std::cout << "Результат (a+b)*(c+a) (Asm) = " << mulAsm << std::endl;

	//(a+b+c)*(c-a+b)
	short mul1 = (a + b + c) * (c - a + b);
	short mul1Asm;

	__asm {
		mov ax, a
		add ax, b
		add ax, c
		mov bx, c
		sub bx, a
		add bx, b
		mul bx
		mov mul1Asm, ax;
	}
	std::cout << "Результат (a+b+c)*(c-a+b) (C++) = " << mul1 << std::endl;
	std::cout << "Результат (a+b+c)*(c-a+b) (Asm) = " << mul1Asm << std::endl;

	//(a+b)*c4
	short mul2 = (a + b) * pow(c, 4);
	short mul2Asm;

	__asm {
		mov ax, c
		mov bx, ax
		mul bx
		mul bx
		mul bx
		mov cx, a
		add cx, b
		mul cx
		mov mul2Asm, ax;
	}
	std::cout << "Результат (a+b)*c4 (C++) = " << mul2 << endl;
	std::cout << "Результат (a+b)*c4 (Asm) = " << mul2Asm << endl;

	//((a+b)*c-(d+c)*b)*a
	short mul3 = ((a + b)*c - (d + c)*b)*a;
	short mul3Asm;

	__asm {
		mov ax, a
		add ax, b
		mul c
		mov bx, ax
		mov ax, d
		add ax, c
		mul b
		mov cx, ax
		sub bx, cx
		mov ax, bx
		mul a
		mov mul3Asm, ax;
	}
	std::cout << "Результат ((a+b)*c-(d+c)*b)*a (C++) = " << mul3 << std::endl;
	std::cout << "Результат ((a+b)*c-(d+c)*b)*a  (Asm) = " << mul3Asm << std::endl;

	//(((a-c)*b+d)*a-c)*b

	short mul4 = (((a - c)*b + d)*a - c)*b;
	short mul4Asm;

	__asm {
		mov ax, a
		sub ax, c
		mul b
		add ax, d
		mul a
		sub ax, c
		mul b
		mov mul4Asm, ax;
	}
	std::cout << "Результат (((a-c)*b+d)*a-c)*b (C++) = " << mul4 << std::endl;
	std::cout << "Результат (((a-c)*b+d)*a-c)*b (Asm) = " << mul4Asm << std::endl;

	//a and b
	short OperAND = a & b;
	std::cout << "Результат a and b (C++) = " << OperAND << endl;

	short OperANDAsm;

	__asm {
		mov ax, a
		mov bx, b
		and ax, bx
		mov OperANDAsm, ax
	}
	std::cout << "Результат a and b (Asm) = " << OperANDAsm << endl;


	//a or b
	short OperOR = a | b;
	std::cout << "Результат a or b (C++) = " << OperOR << endl;

	short OperORAsm;

	__asm {
		mov ax, a
		mov bx, b
		or ax, bx
		mov OperORAsm, ax
	}
	std::cout << "Результат a or b (Asm) = " << OperORAsm << endl;

	//a not b
	short OperNOT = ~a;
	std::cout << "Результат not a (C++) = " << OperNOT << endl;

	short OperNOTAsm;

	__asm {
		mov ax, a
		not ax
		mov OperNOTAsm, ax
	}
	std::cout << "Результат not a (Asm) = " << OperNOTAsm << endl;

	//a xor b
	short OperXOR = a ^ b;
	std::cout << "Результат a xor b (C++) = " << OperXOR << endl;

	short OperXORAsm;

	__asm {
		mov ax, a
		mov bx, b
		xor ax, bx
		mov OperXORAsm, ax
	}
	std::cout << "Результат a xor b (Asm) = " << OperXORAsm << endl;

	*/

	
		return 0;
}

Соседние файлы в предмете Аппаратные средства вычислительной техники