Хелпикс

Главная

Контакты

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





1.3 Задание 4. 1.4 Задание 5. Новое условие



1. 3 Задание 4

Дано x. Найти:

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

#include < cstdio>

#include < clocale>

#include < iostream>

using namespace std;

 

void main()

{

int x, y, y1;

setlocale(LC_ALL, " rus" );

cout < < " Введите x "; cin > > x;

_asm

{

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

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

   ADD EAX, 3

   CMP x, 7

   JLE M1

   MOV EAX, x

   SAL EAX, 2

   SUB EAX, 3

   M1: MOV y, EAX

}

if (x < = 7) y1 = 2 * x + 3; else y1 = 4 * x - 3;

cout < < " y= " < < y < < " y1= " < < y1;

getchar();

}

 

Скриншоты:

 

 

 

1. 4 Задание 5

Разработать программу для вычисления выражения. Исходные данные и результат разместить в памяти (сегменте данных, использовать косвенную адресацию).

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

#include < cstdio>

#include < clocale>

#include < iostream>

using namespace std;

 

void main()

{

int a, b, res, y, y1;

setlocale(LC_ALL, " rus" );

cout < < " Введите a: "; cin > > a;

cout < < " Введите b: "; cin > > b;

_asm

{

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

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

 

   ADD EBX, EAX

   TEST EAX, 1

   JNZ M1

   SAR EAX, 2

   MOV EBX, EAX

 

   M1: MOV res, EBX

}

if (a % 2 == 0) y1 = a / 4; else y1 = a + b;

cout < < " y= " < < res < < " y1= " < < y1;

getchar(); getchar();

}

Скриншоты:

 

 

 

Новое условие

Изменить условие на следующее: если разряд av установлен (равен 1); v - № варианта.

Вариант 4.

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

#include < cstdio>

#include < clocale>

#include < iostream>

using namespace std;

 

void main()

{

int a, b, res, y, y1;

setlocale(LC_ALL, " rus" );

cout < < " Введите a: "; cin > > a;

cout < < " Введите b: "; cin > > b;

_asm

{

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

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

       

   ADD EBX, EAX

   MOV EDX, EAX

   SAR EDX, 4

   TEST EDX, 1

   JZ M1

   SAR EAX, 2

   MOV EBX, EAX

 

   M1: MOV res, EBX

}

if ((a / 16) % 2 == 1) y1 = a / 4; else y1 = a + b;

cout < < " y= " < < res < < " y1= " < < y1;

getchar(); getchar();

}

Скриншоты:

Заключение

В ходе лабораторной работы разработали программы, реализующие линейный и разветвляющийся вычислительный процесс, на языках Си и Ассемблер.

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

 

Список литературы

1. Лабораторная работа №1: Разработка и отладка управляющих программ, реализующих линейный и разветвляющийся вычислительный процесс, на языке Си и Ассемблер (Дата обращения: 8. 10. 2022)



  

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