Here is the program:
STZ 1
ENNX 1
STX 1(0:1)
SLAX 1
ENNA 1
INCX 1
ENT1 1
SRC 1
ADD 1
DEC1 -1
STZ 1
CMPA 1
MOVE -1,1(1)
NUM 1
CHAR 1
HLT 1
What I know so far:
- STZ 1 sets the next instruction to NOP so the second instruction can be ignored
- According to the answer - the ADD function should trigger the overflow.
- The ADD function should add the contents of Memory 1 to Register A
Memory 1 is set to zero with the first command - the ADD function should simply add zero to Register A.
If Mem1 is set to zero how does this set the overflow toggle to on?
REF: The Art of Computer Programming Volume 1 Page 142 Question 18
CodePudding user response:
The program appears to use location 1 as data, and so the code itself should be located somewhere past that, as a stab in the dark, say starting from 0x10. If the code is located starting at 0 (or 1) then it will overwrite itself, with undesired results.
Older computers, like PDP-8, would start the program counter at 0, but also use data down low like that (on the zero page), so you would see programs contain a first instruction at 0 being a JUMP to the actual code start, then data after that, then the actual code.