![]() | ![]() |
DescriptionA realization of BCD subtraction on the i4004 microprocessor
based on this assembly source: bcd_sub.asm.
; bcd_sub.asm
; subtract two 4bit numbers on the Intel 4004
; bcd-wise
FIM R0R1, 0x42 ; initialize R0=2 & R1=4
FIM R2R3, 0 ; clear result pair
LD R0 ; load R0 into accumulator
SUB R1 ; subtract second number
XCH R1 ; and store in R1
JCN C, end ; carry not set when result<0
LD R1 ; load result into accumulator
CMA ; build complement of accu
CLC ; clear carry
IAC ; increment accu (=> 2-complement)
XCH R1 ; right result back to R1
STC ; set carry to show borrow
done:
JUN done ; end
This short program demonstrates a single digit BCD subtraction on the i4004. As the MCS4 system was originally designed for a printing desktop calculator, binary-coded-decimal arithmetic was one of the main application areas of the MCS4.
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.)
Again, you may want to single-step through the program
with the technique explained in the MCS4 overview,
because the program is so short.
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.
See also:
Run the applet | Run the editor (via Webstart)