It could be explained that how a computer actually processes information is through the use of logic gates. The logic gates basically tally when something equates to a certain amount.
An Assembler would utilise the programming of these gates, where as a debugger can capture how these gates are used in a program.
for instance if I was to program a function/Sub in VB it would look like this:
Sub Showntest()
avalue as string
avalue="nothing"
text1.text=avalue
end Sub
When that function appears in a compiled program it will no longer being in Pseudo-English but more computerised through a compiler that converts it to a code that can run faster and is only readible by the machine.
That information is passed through logic gates as that machine code and is what you find mentioned in a Debugger. so instead of that function being called there will be a three letter entry and small amount of hexidecimal characters assigned to it, rather than that sub above.
You can find more out about debuggers if you do a search for Softice (in fact their manual is pretty good at explaining some of it), you could also try finding a book like "How to Crackproof Software" which explains a little about debugging (and more about spotting them).
Just to let you know, Debuggers can be used to Crack software, although software now adays is being programmed to be smarter (Like looking for debuggers loaded in the memory etc)