When you use the attachMovie command you can add a variable to the "new name" parameter of the new movie clip. For instance:
circNum = 1;
attachMove("circle", "newcircle"+circNum, circNum);
What that will do is load a new movie clip onto the stage (a duplicate from your library, of course) which, in this case, will have the name newcircle1, because the circNum vaiable is 1 and added onto the name. Also, note that I have the depth of the clip also set to the "circNum" variable, so this would also have a depth of 1.
Now, if you wanted to make multiple copies of this, I suggest using a loop of some type:
for(circNum = 1; circNum <= 5; circNum++){
attachMove("circle", "newcircle"+circNum, circNum);
}
And that will make 5 circles, named "newcircle1" through "newcircle5".
When you want to call one of these dynamically named objects, you need just call an object's specific name or use array notation. For instance, if you wanted to move all of those previously made circles a bit to the right, you would use a script like this:
for(num = 1; num <= 5; num++){
_root["newcircle"+num]._x += 5;
}
You use square brackets, similar to calling an index in an array, when you call dynamic objects through _root, or anything else for that matter. It takes some practice, but I hope this helps.