MODES
D'ADRESSAGES
Fonction Introduction
Fonction direct
Fonction indirect
Fonction absolu
Fonction avec PC
Fonction immédiat
Fonction avec SR
Fonction avec CCR

Page précédente



 

Monter Descendre Retour Introduction
puce Le Motorola 68000 peut adresser des valeur en mémoire de 14 façons différentes, les syntaxes dans cette page apparaissent dans la partie MODES D'ADRESSAGE des instructions.

puce La variable x est un octet, donc 8 bits.
puce La variable y est un mot, donc 16 bits.
puce La variable z est un double mot, donc 32 bits.
puce La variable xyz est au choix un octet (8 bits), un mot (16 bits) ou un double mot (32 bits).

puce Les registres de données D0, D1, D2, D3, D4, D5, D6 et D7 seront appelé Dn quand nous pourrons les utiliser indifféremment pour une tâche.

puce Les registres d'adresse A0, A1, A2, A3, A4, A5, A6 et A7 seront appelés An quand nous pourrons les utiliser indifféremment pour une tache.
Attention, le registre A7 est le pointeur de pile.

puce Les registres de données et d'adresses seront appelés Xn quand nous pourrons les utiliser indifféremment pour une tâche.

puce Puis il y a le compteur ordinal 32 bits nommé PC (program counter), qui pointe en permanence sur la prochaine instruction a exécuter.
Seuls les 24 premiers bits sont utilisés, ce qui est largement suffisant pour accéder à toute la mémoire des TI-92, c'est pour cela que la plupart des adresses données sont du type $xxxxxx au lieu de $00xxxxxx.

puce Enfin le registre de status 16 bits nommé SR, pouvant être décomposé en deux registres 8 bits. L'octet de poids faible est le registre de status utilisateur nommé CCR et l'octet de poids fort et l'octet système. Vous aurez besoins d'en savoir plus sur le registre de status utilisateur pour les instruction. Le registre de status est totalement expliqué par ailleurs.





 

Monter Descendre Retour direct
Retour avec Dn
Retour avec An




 

Monter Descendre Retour direct avec Dn
DESCRIPTION
puce Copie le contenu d'un registre de données dans un autre registre de données, l'opérande source n'est pas modifié.

puce Si la taille des données est un octet ou un mot, seul le premier octet ou mot du registre source est copié à la place du premier octet ou mot du registre de destination.

SYNTAXE
puce Dn

EXEMPLE
MOVE.b D0,D1 ; copie le premier octet de D0 dans D1
MOVE.w D0,D1 ; copie le premier mot de D0 dans D1
MOVE.l D0,D1 ; copie le contenu de D0 dans D1





 

Monter Descendre Retour direct avec An
DESCRIPTION
puce Copie le contenu d'un registre d'adresse dans un autre registre de données et inversement, l'opérande source n'est pas modifié.

puce Attention, si vous transférez un mot dans un registre de d'adresse, le bit de poids fort (bit 15) qui est le bit de signe est copié dans les bits 16 à 31 de ce même registre d'adresse, ceci pour ne pas perdre le signe d'un nombre car le nouveau bit de poids fort (bit 31) du registre d'adresse est alors le même que celui du mot copié.

SYNTAXE
puce An

EXEMPLES
MOVE.w D0,A0 ; copie le premier mot de D0 dans A0
MOVE.l D0,A0 ; copie le contenu de D0 dans A0
MOVE.w A0,D0 ; copie le premier mot de A0 dans D0
MOVE.l A0,D0 ; copie le contenu de A0 dans D0





 

Monter Descendre Retour indirect
Retour avec An
Retour avec An et pré-décrémentation
Retour avec An et post-incrémentation
Retour avec An et déplacement
Retour avec An et indice




 

Monter Descendre Retour indirect avec An
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse contenue dans le registre d'adresse dans un autre registre de données ou d'adresse et inversement, l'opérande source n'est pas modifié.

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que l'adresse du registre d'adresse soit paire.

SYNTAXE
puce (An)

EXEMPLES
MOVE.w (A0),A1 ; copie le premier mot à l'adresse de A0 dans A1
MOVE.l (A0),D0 ; copie le double mot contenu à l'adresse de A0 dans D0
MOVE.w D0,(A0) ; copie le premier mot de D0 à l'adresse contenue dans A0
MOVE.l A1,(A0) ; copie le contenu de A1 à l'adresse contenue dans A0





 

Monter Descendre Retour indirect avec An et pré-décrémentation
DESCRIPTION
puce Décrémente la valeur du registre d'adresse de la taille des données copiées puis copie le contenu d'un emplacement mémoire à l'adresse contenue dans le registre d'adresse dans un autre registre de données ou d'adresse et inversement, l'opérande source n'est pas modifié.

puce Attention, si la taille des données copiées est un octet, le registre d'adresse A7 qui est le pointeur de la pile sera pré-décrementé de 2 et non de 1, ceci pour avoir en permanance un pointeur de pile dont l'adresse est paire.

SYNTAXE
puce -(An)

EXEMPLES
MOVE.b -(A0),A1 ; décrémente A0 de 1 puis copie le premier octet contenu
à l'adresse de A0 dans A1
MOVE.w -(A0),A1 ; décrémente A0 de 2 puis copie le premier mot contenu
à l'adresse de A0 dans A1
MOVE.l -(A0),D0 ; décrémente A0 de 4 puis copie le double mot contenu
à l'adresse de A0 dans D0
MOVE.b D0,-(A7) ; décrémente A7 de 2 puis copie le premier octet de D0
à l'adresse contenue dans A7
MOVE.w D0,-(A0) ; décrémente A0 de 2 puis copie le premier mot de D0
à l'adresse contenue dans A0
MOVE.l A1,-(A0) ; décrémente A0 de 4 puis copie le contenu de A1
à l'adresse contenue dans A0





 

Monter Descendre Retour indirect avec An et post-incrémentation
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse contenue dans le registre d'adresse dans un autre registre de données ou d'adresse et inversement puis incrémente la valeur du registre d'adresse de la taille des données copiées, l'opérande source n'est pas modifié.

puce Attention, si la taille des données copiées est un octet, le registre d'adresse A7 qui est le pointeur de la pile sera post-incrementé de 2 et non de 1, ceci pour avoir en permanance un pointeur de pile dont l'adresse est paire.

SYNTAXE
puce (An)+

EXEMPLES
MOVE.b (A0)+,A1 ; copie le premier octet à l'adresse de A0 dans A1
puis incrémente A0 de 1
MOVE.w (A0)+,A1 ; copie le premier mot à l'adresse de A0 dans A1
puis incrémente A0 de 2
MOVE.l (A0)+,D0 ; copie le double mot contenu à l'adresse de A0 dans D0
puis incrémente A0 de 4
MOVE.b D0,(A7)+ ; copie le premier octet de D0 à l'adresse contenue dans A7
puis incrémente A7 de 2
MOVE.w D0,(A0)+ ; copie le premier mot de D0 à l'adresse contenue dans A0
puis incrémente A0 de 2
MOVE.l A1,(A0)+ ; copie le contenu de A1 à l'adresse contenue dans A0
puis incrémente A0 de 4





 

Monter Descendre Retour indirect avec An et déplacement
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse contenue dans le registre d'adresse plus la variable y dans un autre registre de données ou d'adresse et inversement, l'opérande source n'est pas modifié.

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que l'adresse finale soit paire.

SYNTAXE
puce y(An)

EXEMPLES
MOVE.w $1998(A0),A1 ; copie le premier mot à l'adresse de $1000+A0 dans A1
MOVE.l #1000(A0),D0 ; copie le double mot contenu à l'adresse de #1000+A0 dans D0
MOVE.w D0,#%01100111011011011(A0) ; copie le premier mot de D0 à l'adresse contenue dans #%01100111011011011+A0





 

Monter Descendre Retour indirect avec An et indice
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse contenue dans le registre d'adresse plus le deuxième registre spécifié plus la valeur de la variable x dans un autre registre de données ou d'adresse et inversement, l'opérande source n'est pas modifié.

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que l'adresse finale du registre d'adresse soit paire.

SYNTAXES
puce x(An, Xn.w)
puce x(An, Xn.l)

EXEMPLES
MOVE.w 65(A0, D0.l),A1 ; copie le premier mot à l'adresse 4+A0+D0 dans A1





 

Monter Descendre Retour absolu
Retour court
Retour long




 

Monter Descendre Retour absolu court
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse spécifiée par la variable 16 bits y.

puce Le mot de poids fort de y est ignoré, donc nous pouvons copier une valeur dont l'adresse peut se trouver 32768 octet avant ou 32767 octets après notre position actuelle.

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que la valeur de y soit paire.

SYNTAXE
puce y

EXEMPLES
MOVE.b $1998,D0 ; copie le premier octet à l'adresse $1998 dans D0
MOVE.w #1000,A0 ; copie le premier mot à l'adresse #1000 dans A0
MOVE.l #%0100111011011011,D0 ; copie le double mot à l'adresse #%01100111011011011 dans D0





 

Monter Descendre Retour absolu long
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse spécifiée par la variable 32 bits z (seuls les premiers 24 bits sont utilisés pour être en accord avec registre PC).

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que la valeur de z soit paire.

SYNTAXE
puce z

EXEMPLES
MOVE.b $100000,D0 ; copie le premier octet à l'adresse $100000 dans D0
MOVE.w #250798,A0 ; copie le premier mot à l'adresse #250798 dans A0
MOVE.l #%001101100110111011011011,D0 ; copie le double mot à l'adresse #%001101100110111011011011 dans D0





 

Monter Descendre Retour avec PC
Retour avec déplacement
Retour avec un indice




 

Monter Descendre Retour avec PC et déplacement
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse spécifiée par l'adresse de PC, plus la variable y et plus 2 car la valeur y se trouve deux octets après l'instruction.

puce Le bit de poids fort de y est ignoré, donc nous pouvons copier une valeur dont l'adresse peut se trouver 32768 octet avant ou 32767 octets après de notre position actuelle.

SYNTAXE
puce y(PC)

EXEMPLES
MOVE.b $1998(PC),D0 ; copie le premier octet à l'adresse $1998+PC+2 dans D0
MOVE.w #1000(PC),A0 ; copie le premier mot à l'adresse #1000+PC+2 dans A0
MOVE.l #%01100111011011011(PC),D0 ; copie le double mot à l'adresse #%01100111011011011+PC+2 dans D0





 

Monter Retour avec PC et un indice
DESCRIPTION
puce Copie le contenu d'un emplacement mémoire à l'adresse spécifiée par la variable x, plus la valeur du compteur ordinal, plus la valeur d'un registre de données ou de l'adresse plus 2, car la valeur x se trouve deux octets plus loins de l'instruction.

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que la valeur de x soit paire.

SYNTAXES
puce x(PC,Xn.w)
puce x(PC,Xn.l)

EXEMPLES
MOVE.b $B2(PC, A0.w),D0 ; copie le premier octet à l'adresse $B2+PC+A0 dans D0
MOVE.w #65(PC, D0.l),A0 ; copie le double mot à l'adresse #65+PC+D0+2 dans A0
MOVE.l #%01110101(PC, A0.l),D0 ; copie le double mot à l'adresse #%01110101+PC+A0 dans D0





 

Monter Descendre Retour immédiat
DESCRIPTION
puce Copie le contenu d'une valeur immédiate xyz.

puce Attention, si la taille des données copiées est un mot ou un double mot, il faut que que la valeur de xyz soit paire.

SYNTAXE
puce #xyz

EXEMPLES
MOVE.b #$A7,D0 ; copie la valeur #$A7 dans le premier octet de D0
MOVE.l #10021994,A0 ; copie la valeur #10021994 dans le premier mot de A0
MOVE.l #%0110001111010010010101000010100111(PC, A0),D0 ; copie la valeur #%0110001111010010010101000010100111 dans D0





 

Monter Descendre Retour avec SR
DESCRIPTION
puce Il y a une page concernant les indicateurs et le registre SR.

SYNTAXE
puce SR

EXEMPLES EN MODE UTILISATEUR
ANDI #$2015,SR ; effectue un ET logique entre #$2015 et SR
EORI #8209,SR ; effectue un OU EXCLUSIF logique entre #8209 et SR
ORI #%1010000000001101,SR ; effectue un OU logique entre #%1010000000001101 et SR

EXEMPLE EN MODE SUPERVISEUR

MOVE.w #$2700,SR ; modifie seulement l'octet système (octet de poids fort)





 

Monter Retour avec CCR
DESCRIPTION
puce Il y a une page concernant les indicateurs utilisateur et le registre CCR.

SYNTAXE
puce CCR

EXEMPLES EN MODE UTILISATEUR
ANDI #$3,CCR ; effectue un ET logique entre #$3 et CCR
EORI #5,CCR ; effectue un OU EXCLUSIF logique entre #5 et CCR
ORI #%000011001,CCR ; effectue un OU logique entre #%000011001 et CCR

EXEMPLE EN MODE SUPERVISEUR

MOVE.w #%00000110,CCR ; modifie seulement l'octet utilisateur (octet de poids faible)





 

 

Lisez la section sur les droits d'auteur et la license d'utilisation avant de distribuer Zguide.

Zguide © 1998, Florian DREVET. Tous droits réservés à l'échelle mondiale