Найти сумму всех элементов массива A={a[i]}, совпадающих с его последним элементом - Assembler

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

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

Найти сумму всех элементов массива A={a[i]}, совпадающих с его последним элементом Помогите с кодом, чисто алгоритм создания массива и поиска + вывод

Решение задачи: «Найти сумму всех элементов массива A={a[i]}, совпадающих с его последним элементом»

textual
Листинг программы
    ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
 
          .486                                      ; create 32 bit code
          .model flat, stdcall                      ; 32 bit memory model
          option casemap :none                      ; case sensitive 
 
    ;     include files
    ;     ~~~~~~~~~~~~~
          include \masm32\include\windows.inc       ; main windows include file
          include \masm32\include\masm32.inc        ; masm32 library include
 
        ; -------------------------
        ; Windows API include files
        ; -------------------------
          include \masm32\include\gdi32.inc
          include \masm32\include\user32.inc
          include \masm32\include\kernel32.inc
          include \masm32\include\Comctl32.inc
          include \masm32\include\comdlg32.inc
          include \masm32\include\shell32.inc
          include \masm32\include\oleaut32.inc
          include \masm32\include\ole32.inc
          include \masm32\include\msvcrt.inc
 
          include \masm32\include\dialogs.inc       ; macro file for dialogs
          include \masm32\macros\macros.asm         ; masm32 macro file
 
    ;     libraries
    ;     ~~~~~~~~~
          includelib \masm32\lib\masm32.lib         ; masm32 static library
 
        ; ------------------------------------------
        ; import libraries for Windows API functions
        ; ------------------------------------------
          includelib \masm32\lib\gdi32.lib
          includelib \masm32\lib\user32.lib
          includelib \masm32\lib\kernel32.lib
          includelib \masm32\lib\Comctl32.lib
          includelib \masm32\lib\comdlg32.lib
          includelib \masm32\lib\shell32.lib
          includelib \masm32\lib\oleaut32.lib
          includelib \masm32\lib\ole32.lib
          includelib \masm32\lib\msvcrt.lib
 
    ; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
 
    ; ************************************************************************
    ;    include \masm32\include\masm32rt.inc
    ; ************************************************************************
 
    .data?
    ;Result dd  ?
    ;lpBuf1 db  1024 dup(?) ; temp Buffers  
 
    .data
        buffer_for_string db 10 dup(0)
        title_string db "Результат:  ",0
        szformat db "%u",0Dh,0Ah,0      ; изменяем формат вывода на dec
        mas dw 3,2,3,6,2,3,19,3
        end_point dw 8 ; end_point < mas.length
    .code
    start:
    ; ************************************************************************
    main proc
    ;   LOCAL Result        :DWORD
    ;   LOCAL var_00        :DWORD
    ;   LOCAL var_01        :BYTE
 
    ;Обнуляем регистры
    xor eax,eax
    xor ebx,ebx
    xor ecx,ecx
    xor edx,edx
    ;=================
    mov cx,end_point        ;Кол-во шагов в цикле
    mov dx,1        ;Нач. знач. для перемножения
    go:
    mov si,ax
    shl si,1
    mov bx,mas[si]
    inc ax
    
    test bx,1 
    mov dx,3
    cmp dx,si 
    ;jp goto1       ;Сравнение элементов массива с 3
    call mypr       ;Вызов процедуры перемножения
    goto1:
    
    loop go ;------------------------------- Sift Ice
    
    ;<br>
    push edx
    push offset szformat
    push offset buffer_for_string
    call wsprintf
    
    push MB_OK
    push offset title_string
    push offset buffer_for_string
    push 0
    call MessageBox
    
    push 0
    call ExitProcess
    ;<br>
    
    main endp
    ; ************************************************************************
    ; ************************************************************************
    mypr proc
    ;test bx,bx
    ;js minus_zn
    jmp end_test
    minus_zn:
    ;imul dx,bx     ;Перемножение
    sub dx,bx       ; Сумма
    end_test:
    RET
    mypr endp
    ; ************************************************************************
    ; ************************************************************************
    end start
 
 
    Comment ^
    Каркас программы
 
    .386
    .MODEL Flat, STDCALL
    .DATA
    <Ваша инициализиpуемые данные>
    ......
    .DATA?
    <Ваши не инициализиpуемые данные>
    ......
    .CONST
    <Ваши константы>
    ......
    .CODE
    <метка>
    <Ваш код>
 
    .....
 
    end <метка>
    ^

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


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

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

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