Most people just start reading a book, but I have organized this book such that I think it will help you to learn the material more efficiently if you follow a few simple guidelines.
Many sections have exercises at the end that extend the material presented in the main body of the section. These are intended as exercises, not tests. In fact, I have provided answers and my solutions to most of these exercises. If you are an instructor using this book, sorry, but you will have to make up your own exam questions. Most exercises have fairly obvious extensions that instructors could make as class assignments.
To make efficient use of these exercises, I recommend an iterative process:
Try to solve the problem on your own. Spend some time on it, but do not let yourself get stuck for too long.
If the answer does not come to you after trying yourself, peek at my solution. In some cases I give a hint before looking at the full solution.
Return to the first step, armed with some knowledge of how an experienced assembly language programmer might approach the solution.
One thing I strongly urge you not to do is to copy and past code from the book. If you type it in yourself, I believe this physical activity will help you to learn the material faster. If nothing else, it forces you to read every character in the code. And I do not see any advantage to copy-and-pasting the code. After all, you will not be graded on the results. And, frankly, none of the programs in this book have any “real world” usefulness. The code is provided for your own exercising, so please use it in that spirit.
This hands-on approach also applies to the mathematics in Chapter 2 and Chapter 3. It involves converting numbers between several number bases. Any good calculator will do that easily, but the actual conversion is not the point. The point is to learn about how bit patterns are used to represent values. I believe that using paper and pencil to work through the arithmetic will help you to get a feel for these patterns.