asmodeus 0.1.0

Complete assembler and emulator for Asmodeus architecture
; example: Calculating factorial of 5 
; Simple iterative approach (5! = 120)

start:
    POB one         ; Load 1 into AK (initial result)
    LAD result      ; Store 1 as initial result
    POB n           ; Load n=5 into AK
    LAD counter     ; Store as counter

factorial_loop:
    POB counter     ; Load current counter
    SOZ done        ; If counter == 0, we're done
    
    ; Multiply result by counter
    ; result = result * counter
    LAD multiplier  ; Store counter as multiplier
    POB result      ; Load current result
    LAD temp_result ; Store current result as temp
    
    ; Initialize multiplication: result will be built by addition
    POB zero        ; Load 0
    LAD result      ; Clear result to 0
    
mult_loop:
    POB multiplier  ; Load multiplier
    SOZ mult_done   ; If multiplier == 0, multiplication done
    
    POB result      ; Load current result
    DOD temp_result ; Add temp_result to result
    LAD result      ; Store back to result
    
    POB multiplier  ; Load multiplier
    ODE one         ; Decrement multiplier
    LAD multiplier  ; Store back
    SOB mult_loop   ; Continue multiplication
    
mult_done:
    ; Decrement counter and continue
    POB counter     ; Load counter
    ODE one         ; Decrement counter
    LAD counter     ; Store back
    SOB factorial_loop ; Continue factorial loop
    
done:
    POB result      ; Load final result
    WYJSCIE         ; Output result (should be 120)
    STP             ; Stop

; Data section
n:           RST 5       ; Number to calculate factorial of
one:         RST 1       ; Constant 1
zero:        RST 0       ; Constant 0
result:      RST 1       ; Result (initialized to 1)
counter:     RST 0       ; Counter
multiplier:  RST 0       ; Multiplier for multiplication
temp_result: RST 0       ; Temporary storage for multiplication