[masm32] Сколько элементов одномерного массива удовлетворяют условию c <= a[i]<=d - Assembler

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

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

Для ассемблера masm32 нужно написать программку, которая находит, сколько элементов одномерного массива удовлетворяют условие c <= a[i]<=d Буду рада любой помощи! )

Решение задачи: «[masm32] Сколько элементов одномерного массива удовлетворяют условию c <= a[i]<=d»

textual
Листинг программы
.486
.model flat, stdcall
option casemap :none
 
        include \masm32\include\windows.inc
 
        include \masm32\include\user32.inc
        include \masm32\include\kernel32.inc
        include \masm32\include\masm32.inc
 
        includelib \masm32\lib\user32.lib
        includelib \masm32\lib\kernel32.lib
        includelib \masm32\lib\masm32.lib
.data
        N               dd      16
        Array           dd      6, -51, 87, 3, -90, -23, 60, 8, -36, -51, -71, -95, 2, 98, -15, -25
        RangeLo         dd      -20
        RangeHi         dd      20
        Result          dd      ?
 
        aszMsgResult    db      'Result: ', 0
        hConsoleOutput  HANDLE  ?
        hConsoleInput   HANDLE  ?
        aszPressEnter   db      0Dh, 0Ah, 0Dh, 0Ah, "Press ENTER to exit", 0
        Buffer          db      1024 dup(?)
        BufLen          dd      ?
.code
 
start:
 
        ; получение описателей ввода и вывода консоли
        invoke  GetStdHandle,   STD_INPUT_HANDLE
        mov     hConsoleInput,  eax
 
        invoke  GetStdHandle,   STD_OUTPUT_HANDLE
        mov     hConsoleOutput, eax
        invoke  ClearScreen
 
        ;подсчёт количества элементов в поддиапазоне
        mov     [Result],       0
        cld
        lea     esi,    [Array]
        mov     ecx,    [N]
        @@ForI:
                lodsd
                cmp     eax,    RangeLo
                jl      @@Next
                cmp     eax,    RangeHi
                jg      @@Next
                inc     Result
        @@Next:
        loop    @@ForI
 
        ;вывод результата
        invoke  WriteConsole, hConsoleOutput, ADDR aszMsgResult,\
                LENGTHOF aszMsgResult - 1, ADDR BufLen, NULL
        invoke  ltoa, [Result], ADDR Buffer
        invoke  StrLen, ADDR Buffer
        mov     [BufLen],       eax
        invoke  WriteConsole, hConsoleOutput, ADDR Buffer,\
                BufLen, ADDR BufLen, NULL
        ;ожидание нажатия ENTER
        invoke  WriteConsole, hConsoleOutput, ADDR aszPressEnter,\
                LENGTHOF aszPressEnter - 1, ADDR BufLen, NULL
        invoke  ReadConsole, hConsoleInput, ADDR Buffer,\
                LENGTHOF Buffer, ADDR BufLen, NULL
 
        invoke  ExitProcess, 0
 
        ;завершение программы
        invoke  ExitProcess, 0
 
end start

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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