// ESEMPIO DI ORGANIZZAZIONE DI CODICE MAL // I BLOCCHI IF-THEN-ELSE // // X = Y; // IF (Y = 0) THEN // Y = Y + 1 // Y = Y + 1 // Y = Y*(2^8) // ELSE // Y = Y - 1 // Y = Y - 1 // Y = Y/2 // ENDIF // Z = X + Y // // dove H=X, TOS=Y, SP=Z // // .label inizio 0x00 .default goto errore inizio H = TOS Z = TOS; if (Z) goto ZERO; else goto NOTZERO ZERO TOS = TOS + 1 TOS = TOS + 1 TOS = TOS << 8 goto ENDIF // questo goto e' assolutamente necessario perche' // se non ci fosse l'esecuzione continuerebbe con // la microistruzione alla riga successiva a quella // contenente TOS=TOS<<8. NOTZERO TOS = TOS - 1 TOS = TOS - 1 TOS = TOS >> 1 goto ENDIF // questo goto, invece, non e' necessario perche' // se non ci fosse l'esecuzione continuerebbe con // la microistruzione alla riga successiva a quella // contenente TOS=TOS>>1 ma la sua presenza rende // piu' leggibile il codice ENDIF SP = H + TOS FINE goto FINE errore goto errore