Другие языки программирования и технологии

Assembler. HEEEEEEEEEEEEELP! дан одномерный массив найти количество и сумму нечетных элементов assembler

AO
Ahadjon Osimov
467
.x64
option casemap:none
includelib kernel32.lib
includelib msvcrt.lib

VirtualAlloc proto :dword,:dword,:dword,:dword
VirtualFree proto :dword,:dword,:dword
Rand proto :dword
printf proto :vararg
_kbhit proto
exit proto

NULL equ 0
PAGE_READWRITE equ 00000004h
MEM_COMMIT equ 00001000h
MEM_RELEASE equ 00008000h

CStr macro Text:vararg
local szText
  .const
szText db Text,0
  .code
  exitm <offset szТext>
endm

.data?
Seed dd ?
Len dd ?
Array dd ?

.code
N96417119:
    rdtsc
    mov Seed,eax
    invoke Rand,191
    add eax,10
    mov Len,eax
    shl eax,2
    invoke VirtualAlloc,NULL,eax,MEM_COMMIT,PAGE_READWRITE
    mov Array,eax
    invoke printf,CStr("Дан одномерный массив (размер %u):",10),Len
    mov ecx,Len
    mov edi,Array
@@:
    push rcx
    invoke Rand,401
    sub eax,200
    stosd
    invoke printf,CStr("%5i"),eax
    pop rcx
    loop @B
    xor r10d,r10d
    mov r15d,r10d
    mov ecx,Len
    mov ebx,Array
DoLoop:
    mov edx,[rbx+4*rcx-4]
    and edx,1
    jz @F
    add r15d,[rbx+4*rcx-4]
@@:
    add r10d,edx
    loop DoLoop

    invoke printf,CStr(10,10,"Количество нечётных элементов: %u"),r10d
    invoke printf,CStr(10,"Сумма нечётных элементов: %i",10),r15d

    invoke printf,CStr(10,"Для завершения работы нажмите любую клавишу...")
    .repeat
      invoke _kbhit
    .until eax
    invoke VirtualFree,Array,NULL,MEM_RELEASE
    xor ecx, ecx
    invoke exit

Rand proc uses rdx,Range:dword
    mov eax,Seed
    mov edx,08088405h
    mul edx
    inc eax
    mov Seed,eax
    mul ecx
    mov eax,edx
    ret
Rand endp

    end N96417119



P.S. Нужно не истерику устраивать, а указать хотя бы процессор, ОС и ассемблер, для и на которых должна быть написана программа.
Эта написана для amd64, Windows x64, JWASM.
На самом деле требуется ещё очень много подробностей для написания ассемблерных программ.
Nikolays Krisa
Nikolays Krisa
51 590
Лучший ответ

Похожие вопросы