Section courante

A propos

Section administrative du site

Introduction

Le microprocesseur 6502 de l'entreprise MOS Technology est un microprocesseur 8 bits connu pour avoir été vendu au 1/6 du prix des microprocesseurs Intel et Motorola durant les années 1970. Il a été conçu par une équipe menée par l'ingénieur Chuck Peddle (la même personne ayant développé le Motorola 6800. Il fut utilisé dans de nombreux micro-ordinateurs durant les 1970, comme l'Apple I par exemple. De plus, les premiers micro-ordinateurs de la famille Apple II et les micro-ordinateurs Atari 8 bits (Atari 400, Atari 800,...) et les micro-ordinateurs de la famille Commodore PET et le Commodore VIC-20 utilisaient également se microprocesseur.


Fiche technique

Voici les caractéristiques de la puce «6502» de «MOS Technology»:

Spécification Description
Concepteur MOS Technology
Fabricant Rockwell et Synertek
Modèle 6502
Date de conception 1975
Bus de données 8 bits
Bus d'adressage 16 bits
Cadencé à 1 Mhz à 1,55 Mhz

Schéma des broches

Voici le schéma des broches de la puce 6502 de l'entreprise MOS Technology :

Architecture

Le microprocesseur 6502 effectue des transferts en 8 bits de données ou est exploités au cours de chaque cycle d'instruction ou cycle d'opération. Tous les périphériques de la famille MCS650X fonctionnent en données de 8 bits à la fois, bien que certaines opérations ressemblent à des opérations série ou 16 bits. L'industrie informatique traite les combinaisons de données à 8 bits sous un terme connu sous le nom d'«octet» (en français) ou «byte» (en anglais). Dans de nombreux gros ordinateurs fonctionnant simultanément sur plusieurs octets de données, le nombre d'octets transférés et exploités par la machine en parallèle est appelé un mot (en français) ou word (en anglais). Étant donné que ces microprocesseurs sont des microprocesseurs à 8 bits, les mots et les octets sont de longueur égale. Un mot de 16 bits est composé de deux octets de 8 bits.

Modes d'adressage

Le 6502 dispose de 15 modes d'adressage (deux de plus que la famille équivalente NMOS). Dans la discussion suivante de ces modes d'adressage, une expression entre crochets suit le titre du mode. Cette expression est le terme utilisé dans la table Set Op Code Matrix de l'instruction pour faciliter l'identification du mode d'adressage réel utilisé par l'instruction.

Le bus de données, l'accumulateur et l'unité arithmétique

Le bus de données

Les données doivent être transférées entre l'accumulateur et des sources extérieures en passant par le microprocesseur vers 8 lignes appelées bus de données. Les sources externes comprennent le programme contrôlant le microprocesseur, la mémoire étant utilisée comme entreposage intermédiaire pour les registres internes lorsqu'ils doivent être utilisés dans une opération en cours, et les communications réelles avec le monde via les ports d'entrée/sortie. La seule opération du bus de données est de transférer des données entre la mémoire et les registres internes du microprocesseur tels que l'accumulateur. La figure suivante montre la communication de base entre l'accumulateur, A, et la mémoire, M, via l'utilisation de 8 lignes de données bidirectionnelles appelées bus de données :

L'accumulateur

L'accumulateur est un registre dans lequel sont conservées des données sur lesquelles sont effectuées des opérations. Toutes les opérations entre les emplacements de mémoire doivent être communiquées via l'accumulateur ou l'un des registres d'index auxiliaires. L'accumulateur est utilisé comme entreposage temporaire pour déplacer des données d'un emplacement de mémoire à un autre. Par conséquent, la première utilisation de l'accumulateur (A) consiste simplement à transférer des données de la mémoire à l'accumulateur ou de l'accumulateur à la mémoire. On peut introduire des données dans l'accumulateur, effectuer des opérations telles que ET/OU dessus, tester les résultats de ces opérations, y placer de nouveaux bits ou les transférer vers le monde extérieur. Il sert d'entreposage intermédiaire pour une série d'opérations telles que l'addition de 2 valeurs ; où l'un d'eux est chargé dans l'accumulateur, le second y est ajouté, et les résultats entreposés dans l'accumulateur. L'accumulateur remplit en réalité deux fonctions : 1) C'est l'un des principaux points d'entreposage de la machine ; 2) C'est le point auquel les résultats intermédiaires sont normalement entreposés.

L'unité arithmétique

L'une des fonctions attendues de tout micro-ordinateur est la capacité de calculer ou d'effectuer des opérations arithmétiques. Même dans un problème de commande simple, on trouve souvent utile d'ajouter 2 nombres pour déterminer qu'une valeur a été atteinte, ou de soustraire 2 nombres pour calculer une nouvelle valeur qui doit être obtenue. De plus, de nombreux problèmes impliquent une forme rudimentaire d'arithmétique décimale ou binaire ; il est certain que de nombreuses applications du microprocesseur impliqueront les deux. Le MCS6502 possède une unité arithmétique de 8 bits s'interfaçant avec l'accumulateur, comme illustré ci dessous :

L'unité arithmétique est composée de plusieurs parties principales. Le plus important d'entre eux est le circuit nécessaire pour effectuer une addition de complément à deux de valeurs parallèles de 8 bits et générer un résultat binaire de 8 bits parallèles plus une retenue. Cependant, un examen rapide du concept de « porter » s'impose. La plus grande intervalle pouvant être représentée dans un nombre de 8 bits est 256 avec des valeurs comprises entre 0 et 255. Si nous ajoutons 2 nombres donnant une somme supérieure à 255, nous représentons le résultat avec un neuvième bit plus le 8 bits de l'excédent sur 255. Le neuvième bit est appelé retenue.

ADC : Ajouter de la mémoire à l'accumulateur avec retenue

Cette instruction ajoute la valeur de mémoire et la retenue de l'opération précédente à la valeur de l'accumulateur et entrepose le résultat : dans l'accumulateur. La représentation symbolique de cette instruction est A + M + C → A. Cette instruction affecte l'accumulateur ; définit le drapeau de retenue lorsque la somme d'une addition binaire dépasse 255 ou lorsque la somme d'une addition décimale dépasse 99, sinon la retenue est réinitialisée. L'indicateur de débordement est activé lorsque le signe ou le bit 7 est modifié en raison du résultat supérieur à +127 ou -128, sinon le débordement est réinitialisé. Le drapeau négatif est positionné si le résultat de l'accumulateur contient le bit 7 activé, sinon le drapeau négatif est réinitialisé. Le drapeau zéro est défini si le résultat de l'accumulateur est 0, sinon l'indicateur zéro est réinitialisé. Il s'agit d'une instruction "Groupe 1" et possède les modes d'adressage suivants : Immédiat ; Absolu; Zéro page ; Absolu,X; Absolu,Y; Page zéro,X; Indirect indexé ; et indexé indirect. Le neuvième bit du résultat est entreposé dans le drapeau de retenue et les 8 bits restants résident dans l'accumulateur. Le drapeau de retenue peut être considéré comme un bit de drapeau étant éloigné de l'accumulateur lui-même mais étant directement affecté par les opérations de l'accumulateur comme s'il s'agissait d'un neuvième bit dans l'accumulateur. La principale raison pour ne pas considérer le bit de retenue comme simplement un neuvième bit dans l'accumulateur est que l'on a le contrôle du programme sur son état en pouvant régler (à "1") ou effacer (à "0") le bit et, de bien entendu, il ne fait pas partie de l'accumulateur 8 bits dans les opérations de transfert de données.

Ajout de précision multiple

Pour effectuer l'addition de 2 nombres, on envoie au microprocesseur une instruction ADC additionnant la mémoire et l'accumulateur et entrepose les résultats dans l'accumulateur avec le bit de retenue mis à 1 si les résultats dépassent 255. Pour ajouter des nombres ayant une valeur nettement supérieure à 255, il serait nécessaire de représenter ces nombres par une série de nombres en série de 8 bits. Avec les 16 bits en 2 numéros série 8 bits, il est possible de représenter des nombres binaires de valeur supérieure à 65 000. Afin d'ajouter deux nombres de 16 bits ensemble et d'accomplir ainsi une addition en double précision, on charge d'abord l'octet le plus bas d'un nombre dans l'accumulateur, efface le drapeau de retenue, puis ajoute le deuxième nombre au premier nombre dans l'accumulateur en utilisant la commande ADC. On entreposerait alors ce résultat dans un autre emplacement mémoire en utilisant la commande STA. Le drapeau de retenue représenterait maintenant la retenue de l'octet le plus bas à l'octet le plus élevé. On pourrait alors charger l'octet de poids fort du premier nombre, rajouter avec retenue à la valeur haute du deuxième nombre, et entreposer le résultat dans l'octet de poids fort du résultat. Ainsi, on peut voir que la retenue nous permet d'effectuer autant d'arithmétique de précision que nécessaire.

Programmation

Langage Description
Assembleur 6502 Langage Assembleur pour le microprocesseur 6502

Voir également

Langage de programmation - Turbo Pascal - Émulateur - Émulateur de microprocesseur 6502

Dernière mise à jour : Mercredi, le 16 août 2017