News:

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

How to setup an array?

Started by edhalsim, February 28, 2005, 08:15:04 PM

Previous topic - Next topic

edhalsim

I need to create an array as follows:

myArray    db  8 DUP(000h)
                db  8 DUP(001h)
                db  8 DUP(002h)
                db  8 DUP(003h)
                db  8 DUP(004h)
                db  8 DUP(005h)
                db  8 DUP(006h)
                db  8 DUP(007h)
                db  8 DUP(008h)
                db  8 DUP(009h)
                db  8 DUP(00Ah)
                db  8 DUP(00Bh)
                db  8 DUP(00Ch)
                db  8 DUP(00Dh)
                db  8 DUP(00Eh)
                db  8 DUP(00Fh)
                db  8 DUP(010h)
etc., all the way up to
                db  8 DUP(0FFh)

In other assemblers, I've seen something like this:
   %assign iter 0
   %rep 256
      db   iter,iter,iter,iter,iter,iter,iter,iter
      %assign iter iter+1
   %endrep
Is there a similar construct in MASM?

Thanks for your help.



MichaelW

One of several methods:

; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    .486                       ; create 32 bit code
    .model flat, stdcall       ; 32 bit memory model
    option casemap :none       ; case sensitive

    include \masm32\include\windows.inc
    include \masm32\include\masm32.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\kernel32.lib
    include \masm32\macros\macros.asm
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    .data
        initializer = 0
        myArray db 8 dup(0)
        REPEAT 255
          initializer = initializer + 1
          db 8 dup(initializer)
        ENDM
    .code
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
start:
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    ; Verify first 16 elements:
    mov   ebx,OFFSET myArray
    REPEAT 16
      print uhex$([ebx])
      print chr$(13,10)
      add   ebx,8
    ENDM

    mov   eax,input(13,10,"Press enter to exit...")
    exit
; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
end start
eschew obfuscation