Вы находитесь на странице: 1из 4

Отчет по практической работе №17

Создание простейших программ на ассемблере в среде Visual Studio


Цель: Научиться работать в среде Visual Studio с программами на
ассемблере.

1. Написать на Ассемблере программу вычисления выражения


A=X2+5*X*Y+10.
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <locale.h>
using namespace std;

// X^2+5*X*Y+10
int main()
{
setlocale(0, "rus");
int x, y, rez;
cout << "Введите X: "; cin >> x;
cout << "Введите Y: "; cin >> y;
_asm
{
mov eax, x;
mov ecx, y
imul ecx, eax
imul ecx, 5
mov eax, x;
imul eax, eax
add eax, ecx
add eax, 10
mov rez, eax
}
cout << "X^2+5*X*Y+10 = " << rez << endl;
system("pause");
return false;
}
2. Написать на Ассемблере программу вычисления выражения
A=X3+5*X2*Y+10*X*Y2+Y3.
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <locale.h>
using namespace std;

int main()
{
setlocale(0, "rus");
int x, y, rez=0;
cout << "Введите X: "; cin >> x;
cout << "Введите Y: "; cin >> y;
_asm
{
mov ecx, rez; // обнуляем

mov eax, x;
imul eax, eax;
mov ebx, x;
imul eax, ebx;
add ecx, eax; // x^3

mov eax, x;
imul eax, eax;
imul eax, 5;
mov ebx, y;
imul eax, ebx;
add ecx, eax; // x^3 + y*5*x^2

mov eax, x;
mov ebx, y;
imul ebx, ebx;
imul eax, ebx;
imul eax, 10;
add ecx, eax; // x^3 + y*5*x^2 + 10*x*y^2

mov eax, y;
imul eax, eax;
mov ebx, y;
imul eax, ebx;
add ecx, eax; // x^3 + y*5*x^2 + 10*x*y^2 + y^3

mov rez, ecx;


}
cout << "rez " << rez << endl;
system("pause");
return false;
}
3. Написать на Ассемблере программу, запрашивающую 3 целых числа и
выводящую их кубы
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <locale.h>
using namespace std;

int main()
{
setlocale(0, "rus");
int x, y,z;
cout << "Введите X: "; cin >> x;
cout << "Введите Y: "; cin >> y;
cout << "Введите Z: "; cin >> z;

_asm
{
mov eax, x;
imul eax, eax;
mov ebx, x;
imul eax, ebx;
mov x, eax; // x^3

mov eax, y;
imul eax, eax;
mov ebx, y;
imul eax, ebx;
mov y, eax; // y^3

mov eax, z;
imul eax, eax;
mov ebx, z;
imul eax, ebx;
mov z, eax; // y^3

cout << x << "\t" << y << "\t" << z << endl;
system("pause");
return false;
}
Вывод: Мы научились писать простейшие программы на ассемблере.