|
|||
1 Ход работы. 1.1 Задание 2. 1.2 Задание 31 Ход работы 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; } Скриншоты:
|
|||
|