Étape 1: Les instructions de CPU
Pour un CPU de faire un travail significatif, il a besoin qu’on leur dise quoi faire. Cela prend la forme d’instructions. Pour cette horloge murale je me concentrerai uniquement sur les heures pour rendre les choses simples. Autrement dit, nous s’incrémente une variable nommée heures et vérifier si son égal à 11 (nous utiliserons 0 base d’indexation pour les heures, donc 12 est représenté comme un 0). Si la vérification est vraie, alors nous réinitialisera l’arrière variable à 0. Nous ne voulons pas de coder l’instruction ci-dessus directement dans le processeur, car nous voulons qu’elle soit généraliste CPU (sinon nous faisons juste une horloge). Par conséquent, nous mettre en œuvre un ensemble d’instructions de base et écrire le code de l’horloge autour de ces instructions primitives (le jeu d’instructions à exécuter sont connus comme un langage d’assemblage). Enfin, nous tiendrons la variable de l’heure dans un registre, qui est un terme donné pour un composant de mémoire spécial utilisé pour conserver les données et exploiter à ce sujet. Nous aussi utiliser une simple adresse de mémoire de 1 unité (1 bit) d’agir comme un drapeau pour le calculateur et nommez-le DTD pour des raisons personnelles (signifie dédié à Dani. Une histoire bien personnelle). Notez que ce CPU va être programmé avec les instructions de l’horloge, mais il peut être programmé avec un autre code à faire un certain nombre d’autres choses.
Voici les instructions de base (assembleur) que nous allons utiliser :
INCRMENT : Incrément s’inscrire A en y ajoutant 1.
EQUAL : Si le registre A est égal à un nombre spécifique, ignorez la prochaine instruction.
CLAIRE : set A de Registre sur 0, la valeur DTD false
JUMP : saut dans une instruction spécifique à un numéro de ligne donné
SET_DTD : la valeur DTD true
CHECK_DTD : si DTD est vraie, ignorez la prochaine instruction.
Voici le code en langage assembleur pour l’horloge (registre sera d’un garde les heures).
1: CHECK_DTD
2: SAUT 5
3: CLAIRE
4: SAUT 1
5: INCRÉMENT
6: 11 ÉGAL
7: SAUT 1
8: SET_DTD
9: SAUT 1
Ligne 1 vérifie si les DTD est définie sur true (cela sert à indiquer si nous avons besoin de réinitialiser l’heure). Si c’est vrai la nous sauter à la ligne 3 et réglez l’heure à 0 et la DTD à false. Si la DTD est false alors nous continuons avec l’instruction suivante et sauter à la ligne 5. Ligne 5 incréments de l’heure (registre A), tandis que de la vérification en ligne 6 pour voir si elle égale à 11. Si le registre A est égal à 11, puis nous sauter à la ligne 8 et définissez la DTD à true et revenir au début (ligne 1). Dans le cas contraire, nous allons au début. Si nous courons si ce code après une heure, puis en lisant inscription A, nous pouvons dire ce qui est à l’heure actuelle.