Section 05 Part 01 – The PC (Program Counter) “The opposite for courage is not cowardice, it is conformity. Even a dead fish can go with the flow” ~Jim Hightower

Introduction

There are instructions that change the location of where the 68k is reading its instructions.  To allow the 68k to do this, they use the PC and SP, so let’s take a look.

The PC (Program Counter)

The PC (Program Counter) is another 68k register; it is designed to hold the current location of where the 68k is currently reading.  Now, all of the instructions you have learnt so far, have to exist somewhere in memory, for example:

 move.w    #\$0F20,d0           add.l     d1,d0           lsr.w     #\$02,d0           move.w    d0,\$00200000

I’ve colour coded each instruction differently for this example.  These instructions have to exist in memory somewhere for the 68k to be able to read them, so we’ll pretend they’re in memory at offset 00001000:

 Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F 00001000 30 3C 0F 20 D0 81 E4 48 33 C0 00 20 00 00 00 00 00001010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00001020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00001030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 etc

As I said before, the 68k reads instructions in binary, but you can probably see the similarities, like the move instruction, where the 303C is the move.w and d0, and you can see after it the 0F20.

The PC is 24-bit, meaning it’ll only hold the end three bytes of the offset.

• The 68k will read the PC and go to offset 00001000, where it’ll start reading the “move.w #\$0F20,d0” instruction (303C0F20).
• After it has processed that instruction, the PC will increase to 001004.
• The 68k will read the PC again and go to offset 00001004, where it’ll read “add.l d1,d0” (D081).
• After that instruction, the PC will increase to 001006.
• The 68k will read the PC again and go to offset 00001006, where it’ll read “lsr.w #\$02,d0” (E448).
• After that, the PC will increase to 001008.
• The 68k will read the PC again and go to offset 00001008, where it’ll read “move.w d0,\$00200000” (33C000200000).
• After that, the PC will increase to 00100E.

As you can see, the PC is the main control over where the 68k reads.  In this section, we’ll be looking at jump and branch instructions that can change the PC, and allow you to change where the 68k reads its instructions from.