Хелпикс

Главная

Контакты

Случайная статья





1 Ход работы. 1.1 Задание 2. 1.2 Задание 3



1 Ход работы

1. 1 Задание 2

Даны три целых числа X, Y, Z. Найти 6XZ-Y/(4X).

6XZ-Y/(4X). Создайте новый консольный проект на языке C++

Код программы:

#include < cstdio>

#include < clocale>

#include < iostream>

using namespace std;

 

int main()

{

int x, y, z, res;

setlocale(LC_ALL, " rus" );

printf(" ? x y z = " ); scanf_s(" %d %d %d", & x, & y, & z);

_asm

{

   MOV EAX, x // занести в регистр AX содержимое ячейки памяти x

   MOV EBX, y // занести в регистр BX содержимое ячейки памяти y

   MOV EDX, z // занести в регистр BX содержимое ячейки памяти z

 

   SAL EAX, 1 // арифметический сдвиг влкво на 1 разряд - AX=2X

   MOV EDI, EAX // занести в регистр DI содержимое регистра AX

   SAL EAX, 1 // AX=4X

   MOV ESI, EAX // СОХРАНИТЬ в регистре SI содержимое регистра AX, SI=4X

   ADD EAX, EDI // AX=AX*DI=6XZ

   IMUL EDX // AX=AX*Z=6XZ

   XCHG EAX, EBX // ОБМЕНЯТЬ СОДЕРЖИМОЕ РЕГИСТРОВ ax и bx

   IDIV ESI //

   SUB EBX, EAX //

 

   MOV res, EBX

}

printf(" \n 6*%d*%d - %d/(4*%d)=%d", x, z, y, x, res); // 6XZ-Y/(4X)

printf(" \n In hex... " );

printf(" \n 6*%x*%x - %x/(4*%x)=%x", x, z, y, x, res); // 6XZ-Y/(4X)

 

getchar(); getchar();

return 0;

}

 

Скриншоты:

1. 2 Задание 3

Разработать программу для вычисления выражения. Исходные данные и результат разместить в регистрах общего назначения.

Задание для варианта 4:

4. 4(X+Y)Z

Код программы:

#include < cstdio>

#include < clocale>

#include < iostream>

using namespace std;

 

int main()

{

int x, y, z, res;

setlocale(LC_ALL, " rus" );

printf(" ? x y z = " ); scanf_s(" %d %d %d", & x, & y, & z);

_asm

{

   MOV EAX, x // занести в регистр AX содержимое ячейки памяти x

   MOV EBX, y // занести в регистр BX содержимое ячейки памяти y

   MOV EDX, z // занести в регистр BX содержимое ячейки памяти z

 

 

   ADD EAX, EBX // AX=AX*DI=6XZ

 

   SAL EAX, 1 // арифметический сдвиг влкво на 1 разряд - AX=2X

   MOV EDI, EAX // занести в регистр DI содержимое регистра AX

   SAL EAX, 1 // AX=4X

   MOV ESI, EAX // СОХРАНИТЬ в регистре SI содержимое регистра AX, SI=4X

 

   IMUL EDX //

   XCHG EAX, EBX // ОБМЕНЯТЬ СОДЕРЖИМОЕ РЕГИСТРОВ ax и bx

 

   MOV res, EBX

}

printf(" \nВ 10-ричной СС: " );

printf(" \n 4*(%d+%d)*%d=%d", x, y, z, res); // 

printf(" \nВ 16-ричной СС: " );

printf(" \n 4*(%x+%x)*%x=%x", x, y, z, res); //

 

getchar(); getchar();

return 0;

}

Скриншоты:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.