HALT stops the CPU. In Tiny8 it's opcode 0, and its address field is ignored, so it's written 00.
How it works: HALT is fetched and decoded like any instruction (4 cycles), then in E1 the control unit asserts no signals and simply stays in E1 for ever. No register changes again. Counting that first E1, HALT takes 5 cycles.
Two details catch people out:
- The PC has already moved on. Fetch advanced it, so when the CPU stops, the PC holds HALT's address + 1.
- Memory full of 0s is full of HALTs. Since
00is HALT, a program that forgets its own HALT may run into an empty word and stop there. Or it may run into data and execute it as instructions.
This is the stored-program idea at work: the CPU doesn't know where the program ends. It stops only when it reaches a HALT.