La macchina didattica VM-2 IN : Indirizzo 4094: bit di segno = 0 = carattere fresco in ingresso bit di segno = 1 = carattere vecchio OUT : Indirizzo 4095: bit di segno = 0 = carattere fresco in uscita bit di segno = 1 = carattere vecchio JPOS : 0000aaaaaaaaaaaa IF (ACC >= 0) THEN PC <-- aaaaaaaaaaaa JNEG : 0001aaaaaaaaaaaa IF (ACC < 0) THEN ^^^^^^^^^^^^ JZER : 0010aaaaaaaaaaaa IF (ACC = 0) THEN 12 bit JNZE : 0011aaaaaaaaaaaa IF (ACC <> 0) THEN JUMP : 1100aaaaaaaaaaaa PC <-- aaaaaaaaaaaa HALT : 11111101xxxxxxxx halt LODD : 0100aaaaaaaaaaaa ACC <-- M[ aaaaaaaaaaaa ] ADDD : 0101aaaaaaaaaaaa ACC <-- ACC + M[ aaaaaaaaaaaa ] ANDD : 0110aaaaaaaaaaaa ACC <-- ACC AND M[ aaaaaaaaaaaa ] STOD : 0111aaaaaaaaaaaa M[ aaaaaaaaaaaa ] <-- ACC LODL : 1000aaaaaaaaaaaa ACC <-- M[ FP + aaaaaaaaaaaa ] ADDL : 1001aaaaaaaaaaaa ACC <-- ACC + M[ FP + aaaaaaaaaaaa ] ANDL : 1010aaaaaaaaaaaa ACC <-- ACC AND M[ FP + aaaaaaaaaaaa ] STOL : 1011aaaaaaaaaaaa M[ FP + aaaaaaaaaaaa ] <-- ACC LDIX : 1101aaaaaaaaaaaa ACC <-- M[ ACC + aaaaaaaaaaaa ] LOC8 : 11110000cccccccc ACC <-- 00000000cccccccc LOCH : 11110001cccccccc ACC <-- cccccccc e bit inferiori immutati ^^^^^^^^ 8 bit NEGA : 11111010xxxxxxxx ACC <-- NOT ACC SIGN : 11111011xxxxxxxx ACC <-- (-ACC) RSHF : 11111110xxxxxxxx ACC <-- (ACC>>1) LSHF : 11111111xxxxxxxx ACC <-- (ACC<<1) SWAS : 11111000xxxxxxxx ACC <-- 0000(SP); SP <-- old ACC SWAF : 11111001xxxxxxxx ACC <-- 0000(FP); FP <-- old ACC ^^^^ INSP : 11110010cccccccc SP <-- SP + 0000cccccccc DESP : 11110011cccccccc SP <-- SP - 0000cccccccc ^^^^ PUSH : 11110100xxxxxxxx M[SP] <-- ACC SP <-- (SP - 1) PSHI : 11110101xxxxxxxx M[SP] <-- M[ ACC ] SP <-- (SP - 1) POP : 11110110xxxxxxxx SP <-- (SP + 1) ACC <-- M[ SP ] POPI : 11110111xxxxxxxx SP <-- (SP + 1) M[ ACC ] <-- M[ SP ] CALL : 1110aaaaaaaaaaaa M[SP] <-- FP FP <-- SP SP <-- (SP - 1) M[SP] <-- PC SP <-- (SP-1) PC <-- aaaaaaaaaaaa RETN : 11111100xxxxxxxx SP <-- FP PC <-- M[FP-1] FP <-- M[FP]