A: 

Make a visualization of the internal register/memory state in every step of a small program so you can see the program behavior :

To do that, you can explain first what is an register, what can of operation you can do with the register shown by a very small ASM program. (like that you can understand not only the software program concept but how it is run)

Phong
That just sounds like a great way to bore them.
Ben S
Maybe but it is not to teach them assembly but to teach them what is a computer! and how it behave! Too many programmer nowadays learn directly how to program, but they knowing how the computer "is working". (even the basic).
Phong
+2  A: 

I'll say programming is a way of making life easier to anyone in a digital manner. Like providing a calculator to compute a stuff rather than providing a pen and paper.

Jojo Sardez
+2  A: 

I usually tell people what I am specifically working on, rather than some abstract "this is what programming is". I think most people understand the general concept of what a computer programmer does (in that they understand that a computer must be "programmed" in order to do anything). At least, that's been my experience when people ask me what I do.

In my particular case, I usually tell them something like "you know how radio stations have competitions where you text in your favourite song or whatever and you win a prize, well we do the backend processing on that - so all the messages come in and we collate the data and spit out the name/number of winner".

It's not a "trivial" answer, but everybody who's asked me has been able to understand it, at least on some level. I guess it does depend on the kind of programming you do, though.

Dean Harding
A: 

You have to use examples that they can relate to. Something from their field of expertise. Make it interesting and make it relevant.

Jack