I never thought I would understand it, then suddenly, one day, it all clicked. It helps (as crazy as it sounds) to assemble someone else's ASM, insert it and then watch as it gets executed in a debugger. Obviously, you need to know what the eventual outcome of the ASM actually is to understand how it gets there. A good place to start may be my little bit of code which extends the number of available encounter tracks. It's short, simple, and has a predictable outcome. You should understand the absolute basics of ASM if you watch that as it executes. :) Try it, it worked for me!