LDC R0, #100 // n LDC R1, #1 // incrementor LDC R2, #2 // addr LDC R3, #1 // value (all start as prime) fill: STR R3, 0(R2) ADD R2, R2, R1 SUB R4, R0, R2 JMPN R4, filldone JMP fill LDC R2, #2 // addr sieve: SUB R7, R0, R2 JMPN R7, sievedone NOP //LDR R4, 0(R2) NOP //ADD R2, R2, R1 NOP //JMPZ R4, sieve NOP //SUB R2, R2, R1 LDC R4, #2 // multiplier LDC R6, #0 // value (composite) inner: MUL R5, R4, R2 SUB R7, R0, R5 JMPN R7, innerdone STR R6, 0(R5) ADD R4, R4, R1 JMP inner innerdone: ADD R2, R2, R1 JMP sieve sievedone: LDC R2, #2 // addr display: SUB R7, R0, R2 JMPN R7, displaydone LDR R4, 0(R2) ADD R2, R2, R1 JMPZ R4, display SUB R15, R2, R1 // R15 <- prime NOP //ADD R2, R2, R1 JMP display displaydone: END