Low level programming is sometimes called writing in assembler or machine code. It takes longer to write, because we have to give every little step. However, in the right hands assembler can be used to do things which would be impossible in a high level language, because a skilled assembler programmer can create much smaller and faster programs than is possible in a high level language.

If I notice that a sheep has gone past in assembler I have to write:

1. `movf 13, W`
2. `addlw D'1'`
3. `movwf 13`

This series of PICmicro instructions boils down to:

1. Get register 13 (which is where I have decided to store my sheep counter) and put the contents into the Working Register (where I can do sums on it).

2. Add 1 to the value in the Working Register.

3. Store the contents of the Working Register back to register 13 (so that my sheep counter is now one bigger)

This is much more fiddly and time consuming than the higher level C code, and I also have to remember where I stored the value.

Assembly language programming is covered in our Assembly for PICmicro microcontrollers CD ROM (see our web site for more details).