Найти сумму всех элементов массива 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 <метка> ^
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д