Unfortunatly I learned ASM from a lab manual that my prof wrote in Collage.
I can however, suggest some things for you.
1.> get a book that uses the DEBUG.EXE program. Alot of books want you to use fancy pay for software that looks flashy that will give you more headaches then its worth. I do all my ASM programing using Edit (or VI) and Debug.exe. From what I had seen from some of the computer programers ASM texts they focused more on using the acutal programing suite (such as Codewarrior) then they actualy spent on programing in the base language.
Incase you dont know anyting about machine language this is what a simple add program looks like just so you have some basic reference
Code:
N ADD.COM
A100
;program for 8 bit addition
MOV AL, [200] ;loads first number
ADD AL, [201] ;adds second number
MOV [202], AL ;saves answer
INT 20
A200
DB 10
DB 35
DB 00
RCX
400
W
Q
2.> ASM hasnt been updated in the last centery so picking up a books thats a few years old doesnt make a difference
3.> I highly suggest that you find a book that has a reference list in the back. The one in my lab manual looks like this:
Code:
ADD = addition
Memory Addressing -- ADD reg,[addr] or ADD [addr],reg
[000000 d w] [00 reg 110] [low addr] [high addr] 9 clocks d=1
I know its a bit confusing but the more info you get the beter. The information above for instance allows you to reverse engineer code form hex (must ... repress ... bad ... memories)
4. Make sure you get a nice Reference of Interupt Calls
5. Try looking for Computer Interfacing manules most of them are writen in ASM and show you how to controll PCs (80x85 processors)
6. Learn on an 80x85 proccessor (PCs) and request the encoding instruction reference from the microcontrollers manufacturer, the sintax will be the same some of the memory ranges will most likely be different.
7. Try looking at old DOS manuals they might have details on machine language calls.
Hope this points you in a somewhat right direction.