I started out playing around with a TI-84 in middle school. Saved myself a lot of annoyance by making it do my homework, saved myself from insanity by programming games in class instead of paying attention. I never got into the ASM stuff, since I didn't have a computer then, but I was at least pushing the limits of what was possible without it. (Wrote a 3D engine in TI-BASIC at one point - intolerably slow but it worked :P)
Then in high school I got a summer internship at a startup with a chemical research lab. I didn't know this going in, but my job ended up essentially being to sit at a desk the entire day and manually type column after column of data into Excel. That pissed me off, so I started messing around with .bat files, trying to automate as much of it as I could (still didn't know how to program anything but a calculator at this point). My boss—apparently an ex kernel hacker—saw this, decided I was wasting my time, gave me a Ruby book, and instead set me loose on a project to revamp their data infrastructure. That was my first exposure to "real" programming, and so far I still consider it the best time of my life.
To summarize, what got me into programming was: (1) trying to automate mundane, repetitive tasks; and (2) just playing around to see how much you can do with a piece of technology.
I would recommend this: look around and imagine what you would want to do if you knew how to program, then try to do it, using books as a reference. From there, follow your natural curiosity.