IAR have simple repeat and variables mostly used for macros, but also works inline of code.
So the idea is to take the 0 value as a start = 9586980 (or octal 44444444)
and add the 1s data-bits after they been shifted up to their proper location.
first a Little-Endian version, second one stores it in j so it can be shuffled as big-endian.
ORG 0E000h ; start of flash ram for a 8k device i set 0 rept 256 dc24 9586980+((i&1)<<1)+((i&2)<<3)+((i&4)<<5)+((i&8)<<7)+((i&16)<<9)+((i&32)<<11)+((i&64)<<13)+((i&128)<<15) i set i+1 endr
// a big-endian version i set 0 rept 256 j set 9586980+((i&1)<<1)+((i&2)<<3)+((i&4)<<5)+((i&8)<<7)+((i&16)<<9)+((i&32)<<11)+((i&64)<<13)+((i&128)<<15) dc8 HWRD(j),HIGH(j),LOW(j) i set i+1 endr