Найти количество положительных и нулевых элементов в масиве - Assembler

Узнай цену своей работы

Формулировка задачи:

Важно чтобы и в ассемблере был тип

BYTE

Задание на скриншоте
#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define N 10
 
int main()
{
    char a[N], c, d, res = 0, res2 = 0;
    do {
        printf("Enter the values of the range [-128]\n");
        printf("c = "); scanf_s("%hhd", &c);
        printf("d = "); scanf_s("%hhd", &d);
        if (c >= d)
        {
            printf("c can not be greater or equal d! Enter values again.\n\n");
        }
    } while (c >= d);
    for (int i = 0; i < N; i++)
    {
        a[i] = rand() % 10 - 10 + rand() % 10;
        printf("A[%d] = %d\n", i, a[i]);
        if (a[i] >= c && a[i] <= d && a[i] <= 0)
            res++;
    }
    __asm {
        ...
    }
    printf("C - Result = %d\n", res);
    printf("Assembler - Result = %d\n", res2);
    _getch();
    return 0;
}

Решение задачи: «Найти количество положительных и нулевых элементов в масиве»

textual
Листинг программы
#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define N 10
 
int main()
{
    char a[N], c, d, res = 0, res2 = 0;
    do {
        printf("Enter the values of the range [-128]\n");
        printf("c = "); scanf_s("%hhd", &c);
        printf("d = "); scanf_s("%hhd", &d);
        if (c >= d)
        {
            printf("c can not be greater or equal d! Enter values again.\n\n");
        }
    } while (c >= d);
    for (int i = 0; i < N; i++)
    {
        a[i] = rand() % 10 - 10 + rand() % 10;
        printf("A[%d] = %d\n", i, a[i]);
        if (a[i] >= c && a[i] <= d && a[i] <= 0)
            res++;
    }
    __asm {
        MOV AL, c
        MOV BL, d
        MOV CL, N
        MOV DL, res2
        MOV SI, 0
        cycle:
        ...
    }
    printf("C - Result = %d\n", res);
    printf("Assembler - Result = %d\n", res2);
    _getch();
    return 0;
}

Объяснение кода листинга программы

  1. Объединение функций, использующих стандартные библиотеки языка C, и ассемблерного кода, выполняющего некоторые вычисления, в одной программе.
  2. Ввод с клавиатуры значений для переменных c и d с помощью функции scanf_s.
  3. Проверка корректности введенных значений: значение c должно быть меньше значения d.
  4. Если значения введены некорректно, пользователю предлагается ввести их снова.
  5. Создание массива a методом rand() с помощью функции srand(time(NULL)).
  6. Инициализация переменных res и res2 нулевыми значениями.
  7. Чтение элементов массива a с помощью цикла for и проверка их значений: если элемент больше или равен c и меньше или равен d и равен нулю, то к переменной res прибавляется единица.
  8. Использование ассемблерного блока для выполнения каких-то вычислений.
  9. Вывод результата вычислений, выполненных на языке ассемблера, в консоль.
  10. Получение значения от пользователя с помощью функции _getch() для завершения работы программы.
  11. Возврат значения 0 для завершения работы программы.

ИИ для рефератов и докладов


  • Экспорт Word по ГОСТу
  • Минимум 80% уникальности текста
  • Поиск релевантных источников в интернете
  • Готовый документ за 2 минуты

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы