; add.asm ; add two 4bit numbers on the Intel 4004 ; FIM R0R1, 0x78 ; initialize: R0=8 R1=7 LD R0 ; load R0 into accumulator ADD R1 ; add R1 into accumulator XCH R1 ; and store in R1 done: JUN done ; endless loop as end of program
The program first uses a FIM instruction to initialize the registers R0=8 and R1=7. The program then loads R0 into the accumulator, adds the contents of R1 to the accumulator, and then uses the XCH instruction to exchange the values of R1 and the accumulator, which stores the addition result into R1.
The program then enters an endless loop, written as a JUN (jump unconditional) instruction that jumps to its own address.
To watch the program execution, open the user-interface of the i4004 processor and the i4001 ROM chip memory editor. (On Windows, you may have to resize and move the windows a little, so that all windows remain readable during the simulation.)
Because the program is so short, you may want to single-step
through the program with the technique explained in the
Type the value
1.35 into the time-interval textfield
in the simulator control panel,
and select the
us (microseconds) value from
the time-scale drop-down list.
Reset the simulation by clicking the rewind button.
Now, click the
run-for button to run and automatically
pause the simulation after the selected time interval
(here 1.35 microseconds or one MCS4 clock cycle) has elapsed.
Repeatedly click the run-for button to step through the program.
Run the applet | Run the editor (via Webstart)