In assembly you don't really declare variables, you just pick a space in memory and use them. This can be convenient as you have a lot of flexibility and can organize your data really well and also access it a variety of different ways, but it also means you have to be careful that you are indeed reading from that variable.
A variable is nothing more than a location in memory. So in JamesV's example, yeah you could say trash is at AppBackUpScreen, but nothing was created inserted or anything. If you wanted you could leave that #define out and just use AppBackUpScreen, it would be exactly the same.
There are two ways to load immediate data into a register, the first is without the parenthesis, just putting the address or value you want to load. Ie:
Code: ld a,10
ld bc,$8080
ld hl,Var_X
It might be helpful to know that Var_X is just another equate in your program that the assembler calculates for you. Rather than having to calculate it's address, the assembler does it for you. In JamesV's example, Var_X really only equals $8007. It just contains the address where the .dw statement is stored. So variables aren't really variables in the classic sense, there's nothing preventing you from overwriting them accidentally or re-using that area for something else. So without the parenthesis, you're just loading that value into the register (here, Var_X is the same as $8007).
The second way is called indirection. This uses parenthesis around the address, and what this does is get data stored at a certain address.
Code: ld a,(10)
ld bc,($8080)
ld hl,(Var_X)
The first instruction loads a one-byte value stored at $000A (10 = $0A in hex). The previous example stored 10 into a, here a's value will depend on whatever byte is located at $000A. The other two instructions load a two-byte value into the register. The first byte will go into the smaller register (c and l), this is called the LSB : Least Significant Byte. The second byte (at $8081 and Var_X+1 aka $8008) will go into the larger register (b and h). This is called the MSB, or Most Significant Byte. On the z80, values are stored in a format called Little Endian (funny, no?). This basically means that the LSB (the smaller part of a number, for example the $20 in $8020) is stored first and the MSB comes after it. The .dw statement can help us explain this.
Code: .org $8007
Var_X: .dw 1000
It'll be easier to see if we convert 1000 to hex, so that gives us $03E8. .dw $03E8. What value is stored at $8007 and what value's at $8008? You would think that $8007 would hold $03 and $8008 would hold $E8, but it's the opposite. The LSB ($E is stored first and the MSB ($03) second. Therefore, these two statements are NOT the same:
Code: .db $03,$E8
.dw $03E8
These two ARE the same:
Code: .db $E8,$03
.dw $03E8
Alright, all of that was just to explain that when you do "ld hl,(Var_X)", the byte stored at (Var_X) (which the assembler will translate to ($8007)) well get stored into l, and the byte stored at (Var_X+1) will get stored into h. So, l = $E8 and h = $03. In the instruction "ld hl,Var_X", the LSB of the ADDRESS (and not what is stored at that address!) goes into l, and the MSB goes into h. So l = $07 and h = $80.
Aaaaand (sorry for rambling!) it's also worth noting the difference between one byte and two byte registers. One byte registers: a, b, c ,d, etc. Two byte registers: bc, de, hl, ix, etc. The only one byte register that can load/store a value from/to an immediate address is a. And remember that it will only load/store one byte. ld a,(Var_X) will load $E8 into a. Two byte registers will read/store 2 bytes. This can confuse people at the beginning, because if you do this:
Code: ld hl,10
ld (Var_X),hl
...you're really loading two bytes. l = 10 and h = 0.
In short, in assembly the concept of a variable is very loose. There are no variable types or sizes and there's no special protection against other parts of your code overwriting your variables. All a variable is is a place in RAM that any part of your program can access and potentially modify.
You might be interested in reading Kerm's topic on indirection:
http://www.cemetech.net/forum/viewtopic.php?t=1708