E' possibile realizzare in Mic-1 (e anche in Mic-2) tale istruzione. E' sufficiente eseguire una operazione di wr del valore presente sullo Stack all'indirizzo CPP+26 (la costante 26 si puo' calcolare con poche istruzioni Mic-1). ===================================== OPC=1 OPC=OPC+OPC OPC=OPC+OPC OPC=OPC+OPC OPC=OPC+OPC OPC=OPC+OPC //inizializzazione a 32 di OPC SP= 0 //inizializzazione contatore di zeri presenti in TOS loop N=TOS; if (N) goto uno; else goto zero zero SP=SP+1 //Il bit 32 e' a 0, incremento contatore uno TOS=TOS+TOS //shift a sx di TOS OPC=OPC-1; if (Z) goto fine; else goto loop // decremento di OPC e verifica termine ciclo fine ======================================= Altra soluzione, molto interessante, by F. Lo Brutto OPC=1 //maschera iniziale ad 1 per il primo bit SP=0 //contatore loop Z=OPC; if(Z) goto fine; else goto checkTos //se OPC=0 finito, altrimenti controllo bit checkTos Z=OPC AND TOS; if(Z) goto count; else goto loop// se Z il bit controllato e' 0, altrimenti 1 count SP=SP+1 //incremento contatore di zeri OPC=OPC+OPC; goto loop //shift a sx per controllo bit successivo fine