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

Программирование assembler. Написать программку

Д)
Дим@рик )
397
p686
model flat,stdcall

include "win32lz.inc"
includelib "imp32i.lib"

procdesc VirtualAlloc :dword, :dword, :dword, :dword
procdesc VirtualFree :dword, :dword, :dword
procdesc printf :vararg
procdesc _getch

dataseg
Text1 dc "Дан массив [%u]:",13,10,0
Text2 dc 13,10,10,"Номер максимального элемента: %u"
    dc 13,10,10,"Для завершения работы нажмите любую клавишу... ",0
OutFrmt dc "%8.3f",0
RndConst dd 3 shl 28
Const1 dd 199.98
Const2 dd 99.99

udataseg
Seed dd ?
Size dd ?
Array dd ?
Buff dq ?

codeseg
    startupcode
    rdtsc
    mov [Seed],eax
    finit
    fstcw [word Buff]
    or [word Buff],3072
    fldcw [word Buff]
    call Random
    mov [dword Buff],101
    fimul [dword Buff]
    fistp [Size]
    add [Size],50
    mov eax,[Size]
    shl eax,3
    call VirtualAlloc,NULL,eax,MEM_COMMIT,PAGE_READWRITE
    mov [Array],eax
    call printf,offset Text1,[Size]
    mov ebx,[Array]
    xor edi,edi
    mov ecx,[Size]
@@:
    call Random
    fmul [Const1]
    fsub [Const2]
    fstp [Buff]
    mov eax,[dword Buff]
    mov [dword ebx+edi*8],eax
    mov edx,[dword Buff+4]
    mov [dword ebx+edi*8+4],edx
    push ecx
    call printf,OutFrmt,eax,edx
    pop ecx
    inc edi
    loop @B

;Поиск номера максимального элемента
    mov esi,[Array]
    xor ebx,ebx
    mov edx,ebx
    mov ecx,[Size]
    fld [qword esi+ebx*8]
    fstp [qword Buff]
DoLoop:
    inc ebx
    fld [qword esi+ebx*8]
    fld [qword Buff]
    fcomip st,st1
    cmovb edx,ebx
    jae @F
    fst [qword Buff]
@@:
    ffree st
    loop DoLoop
    inc edx
    push edx
    call printf,offset Text2,edx
    pop edx
;В регистре dx порядковый номер максимального элемента в массве
;Здесь вы что-то делаете с этим номером
;...

    call VirtualFree,[Array],NULL,MEM_RELEASE
    call _getch
    xor eax,eax
    exitcode

proc Random uses eax edx
    mov eax,[Seed]
    mov edx,134775813
    mul edx
    inc eax
    and eax,2147483647
    mov [Seed],eax
    fild [Seed]
    fmul [RndConst]
    ret
endp

AK
Alexandr Kim
51 590
Лучший ответ
за ваши деньги - любые извращения
На мыло напиши. Могу помочь