Dave,
in STEP5 the assignment list is only a list with words, which replace the actual addresses in the program. In teh list there's only one symbol defined for each address. DW20 is on address with only one symbol attached to it. There is a maximum of 256 DW20's possible, but since there is only one symbol available for the address DW20, they all get the same symbol. There's no way around it.
Now, with STEP7 it's a totally different story. You can define a symbol for every item in a datablock. If you give the datablock a symbolic name, you can address the item within it by a symbolic name made up of two parts (or sometimes even more): the name of the block and the name of the item within. So suppose you define DB10 with symbolic name DataBlock_10 and in DB10 you give DBW20 the name TestValue, then you can address DBW20 of DB10 as DataBlock_10.TestValue. Furthermore: in S5 you almways have to open the DB and then address the DW in it, in S7 you can do that too, but you can also address the DW without opening the DB. In that case you address DBx.DBWy.
Why isn't this possible in STEP5? Well, that's simply a question of technology. S5 exist since the late seventies, and therefor uses the technology of that age. S7 has been started in the second halve of the nineties and uses technology that's a lot more advanced.
Kind regards,