Why do you need to learn an assembly language in 5 months? I have an electrical engineering degree and I tell you there is no way a beginner can teach himself assembler in only 5 months and be proficient if he has had no other programming experience. Do you have 8 hours a day for the next 5 months?
That is because every computer system that supports assembler programming uses a higher level language to invoke the assembler programming environment and after compilation invoke the assembled program.
Furthermore, you must have the hardware to work with, so that as you learn the commands and data structures, you can experiment and see what works and what does not work. Assembler simply should not be the first computer language you learn.
My experience - I have to print out code listings so I can scribble notes and draw lines from one section to another to match up sections that seem to have problems. I also write down lines of code to add as I add features to the programs or find the mistakes and correct them - I can't keep all that information in my head, especially if the phone rings. Writing software is a lot like climbing scaffolding on the side of the building, I have to "climb the structure" of the code mentally before I can become productive, and every interruption makes me leave that structure. Grrrrr. This is for any software project, any language.
You haven't told us what processor you want to learn assembler on.
Assembly programming is for people who word directly with hardware, like for graphics cards, and chipsets - if you are talking about PCs or Macs or notebooks or netbooks.
Trying to learn assembler for the Intel x86 processor is a massive undertaking, it's too much to learn in only 5 months.
There are processors that are much easier to use for learning assembly language.
One magazine that has articles related to assembly programming is "Nuts and Volts", where people who have done a little project havemade an article out of their project. Fun to read, but trying to understand programming by looking at a listing of code just does not work; I have to reverse-engineer the code to fully understand what the heck is going on.
You really should learn a high-level program first, then add assembler to that high-level program.
From an educator:
http://www.phanderson.com/stamp/stamp-pic.html
I suggest you learn about the BASIC Stamp - it's a good little learning environment and useful programs will be small and quick to program.
http://en.wikipedia.org/wiki/Basic_Stamp
The Basic Stamp is manufactured by Parallax:
http://www.parallax.com/
Click on "Basic Stamp Activity Kit" for more information. You might be able to get one through a Radio Shack store.
Click on the tab (in the web page) "Education"
http://www.parallax.com/Education/EducationHome/tabid/463/Default.aspx
Parallax also has forums where you can ask questions of people who can actually provide you with answers:
http://forums.parallax.com/forums/
.