News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

flipping an array around

Started by bcddd214, May 24, 2011, 08:13:16 PM

Previous topic - Next topic

RuiLoureiro

bcddd,
           try this. It uses ShowArray and ShowArrayR
           Works ?
Quote
      TITLE   Random

        INCLUDE Irvine32.inc

RandLoop PROTO  :DWORD,:DWORD
RandLoop2 PROTO  :DWORD,:DWORD,:DWORD

;#########################################################

COUNT2   = 1
PDWORD TYPEDEF PTR DWORD
;#########################################################

        .DATA?
MyArray dd 100 dup(?) ;creates an empty array of 100 bytes
cntr dd ?
        .DATA
AryPtr dd MyArray         ;a dword value that tells you the current position in the array
commaStr BYTE ", ",0
str1 BYTE "Total=  ",0
Index       dd 0        ; define this Index
VALUE_FINAL dd 0
;#########################################################

        .CODE

RandLoop2 PROC   dwMinVal2:DWORD,dwMaxVal2:DWORD,COLUMN:DWORD
        LOCAL   dwRange2:DWORD
      mov VALUE_FINAL,0 ;we initialize this variable with zero
        mov     esi,AryPtr
        mov     eax,dwMaxVal2
        sub     eax,dwMinVal2
        mov     dwRange2,eax
        mov     edx,OFFSET commaStr
     
         mov     eax,dwRange2
         call    RandomRange
         add     eax,dwMinVal2
         add [VALUE_FINAL],eax ;first moment the value_final is zero, second moment is ????????
         call    WriteInt
;         call    WriteString

      call array1
        call    Crlf ;an enter in the end of column

        ret
RandLoop2 ENDP

array1 PROC
      mov     ebx, Index
      mov     eax, VALUE_FINAL
      mov     [esi+ebx], eax    ;store EAX into the array
      add     ebx, 4               ;point to next dword
      mov     Index, ebx
      ret
array1 ENDP


ShowArray       proc
                xor     ebx, ebx
    _next:      cmp     ebx, Index
                jne     @F
                ret
        @@:     mov     eax, [esi+ebx]    ; get EAX from the array
                add     ebx, 4            ; point to next dword
                call WriteInt
;            call Crlf
            jmp     _next
ShowArray       endp 

ShowArrayR      proc
                mov     ebx, Index
               
    _next:      sub     ebx, 4       
                mov     eax, [esi+ebx]    ; get EAX from the array
                call WriteInt
                ;call Crlf
                cmp     ebx, 0
                jne     _next
                ret
ShowArrayR      endp 

     
main    PROC
        call    Clrscr     
        call    Randomize      ;initialize random generator
    mov cntr,20
    .while cntr
        INVOKE  RandLoop2,1,100,0
        dec cntr
    .endw

    call    Crlf
    call ShowArray
;    call DumpRegs     


    call    Crlf
    call ShowArrayR



        call    Crlf
        call WaitMsg         ; <<<<<<<<<< Stop here
        exit
   
main    ENDP

;#########################################################

        END     main