Micros ID n°2 janvier 1987
Micros ID n°2 janvier 1987
  • Prix facial : 22 F

  • Parution : n°2 de janvier 1987

  • Périodicité : trimestriel

  • Editeur : Mieva Presse

  • Format : (206 x 291) mm

  • Nombre de pages : 84

  • Taille du fichier PDF : 123 Mo

  • Dans ce numéro : PC compatible, comment le choisir ?

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 30 - 31  |  Aller à la page   OK
Pages suivantes >
30 31
Dans le premier numéro de Micros ID, nous avons établi des comparaisons entre différentes notions en assembleur et en Basic. Les sauts, les variables, les boucles, les tests et les sous-routines ont été examinés. Au cours de cet article, nous nous attacherons plus particulièrement à l'étude des fonctions portant sur les entiers. LES FONCTIONS ARITHMETIQUES SIMPLES En Basic, les quatre opérations fondamentales ne posent aucun problème. En assembleur, l'addition et la soustraction sont simples à réaliser. La multiplication et la division ne font pas partie des mnémoniques élémentaires du processeur Z80 et doivent être simulées par des routines plus ou moins complexes. Nous aborderons les trois premières opérations, alors que division, trop complexe, sort du cadre de cette série d'articles. L'ADDITION L'addition d'un seul octet (valeur comprise entre 0 et 255) peut se faire entre l'accumulateur et une valeur fixe. On parle alors d'adressage direct entre l'accumulateur et un registre. Elle peut également avoir lieu entre l'accumulateur et le contenu d'une adresse pointée par un registre. ADD A,25 additionne la valeur 25 à la valeur contenue dans A. ADD A,B additionne la valeur contenue dans B à la valeur contenue dans A. ADD A,(HL) additionne la valeur contenue à l'adresse pointée par HL à la valeur contenue dans A. ADD A,(IX+5) additionne la valeur contenue à l'adresse située 5 octets après l'adresse pointée par IX à l'adresse contenue dans A. On ne peut additionner que dans le registre A. Pour additionner une valeur n au registre C par exemple on doit écrire : LD A,n ADD A,C LDC,A Les instructions d'addition influencent 4 des indicateurs du registre des sémaphores (F). —Si le résultat de l'addition est supérieur à 255 : l'indicateur C (carry) est positionné à 1. — Si le résultat de l'addition vaut 256, l'indicateur Z (zéro) est positionné à 1. Lungellges SEMBLEUR Z80 — Si le résultat de l'addition est supérieur à 127, l'indicateur S (signe) est positionné à 1. Le programme de simulation suivant vous permettra de faire des essais sur l'opération d'addition. 10 CLEF (200,50000 20 FOR 1=50010 TO 50017 30 READ A$ 40 POKE I,VAL("&H"+A$) 50 NEXT I 60 DEFUSR=50010 70 DATA 3E,00,C6,00,32,50,C3,C9 80 INPUT"valeur 1 ":X : POKE 50011,X 90 INPUT "valeur 2 "0 : POKE 50013,Y 100 L=USR(0) 110 PRINT"Résultat ":PEEK(50000) 120 PRINT 130 GOTO 80 Essayez différentes valeurs comprises entre 0 et 256. Les additions 16 bits sont possibles entre HL,IX et IY et une autre paire de registres. ADD HL,BC additionne la constante 16 bits contenue dans BC à la constante 16 bits contenue dans HL. Le résultat se retrouve dans HL. Une addition correcte doit faire intervenir l'indicateur de reportC. Cette addition correspond à une nouvelle mnémonique ADC. L'addition avec report ne marche que pour les registres A (8 bits) et HL (16 bits). Pour additionner une constante à HL il faut utiliser un registre intermédiaire : LD BC,n ADD HL,BC ou encore LD A,L ADD A,n LDL,A LD A,H ADC A,0 LD H,A Remarquez les trois dernières instructions qui permettent de récupérer le report. L'addition d'une seule unité porte le nom d'incrémentation et fait l'objet en assembleur d'une mnémonique spécialisée qui effectue l'opération en un temps beaucoup plus court qu'un simple ADD A,1 INC A ajoute une unité à A. INC (HL) ajoute une unité à la valeur contenue à l'adresse pointée par HL. Les instructions d'incrémentation n'influencent pas l'indicateur de report. La soustraction sans report porte uniquement sur les registres simples (8 bits). Une soustraction 16 bits doit faire l'objet d'une routine spécialisée.
LA SOUSTRACTION La soustraction avec report s'effectue avec le registre A (8 bits) ou avec le registre HL (16 bits). Soustraction sans report : SUB A,n soustrait la valeur n de A. SUB A,B soustrait la valeur du registre B du registre A. SUB A,(HL) soustrait la valeur contenue à l'adresse pointée par HL du registre A. Soustractions avec report : (le report ainsi que l'opérande sont soustraits de A ou de HL) SBC A,n SBC A,B SBC A,(HL) SBC HL,BC soustrait la valeur 16 bits contenue dans BC de l'adresse contenue dans HL. Pour faire SBC BC,DE, on peut faire : LD H,B LDL,C SBC HL,DE LD B,H LDC,L ou encore : PUSH BC POP HL SBC HL,DE PUSH HL POP BC Vous pouvez utiliser le programme de test des additions pour les soustractions en modifiant simplement la valeur C6 contenue à la ligne 70 et en la remplaçant par D6. LA MULTIPLICATION La multiplication ne correspond pas à une mnémonique simple de l'assembleur. Cependant, une multiplication n'est jamais qu'une série d'additions. Multiplier A par 5 équivaut à écrire A+A+A+A+A. Sous-routine de multiplication du contenu de B par C LD A,B A=B LOOP DEC C RET Z Retour si C vaut 0 ADD A,B A=A+B JR LOOP Suivant Remarque : La ROM Basic de votre ordinateur à base de Z80 contient forcément toutes les routines de traitement des quatre opérations aussi bien en entier 16 bits qu'en virgule flottante. bilingellges ASSEMBLEUR Z80 LES FONCTIONS LOGIQUES Les fonctions logiques (ET, OU, OU exclusif et NON) sont particulièrement simples à émuler en assembleur. Elle correspondent à des fonctions natives du processeur. En assembleur, les opérations logiques se font toujours par l'intermédiaire de l'accumulateur (A). Elles portent sur le contenu de l'accumulateur et une constante ou le contenu d'un registre. AND n et logique de A et n AND C et logique de A et C AND (HL) et logique de A et du contenu de l'adresse pointée par HL OR n ou logique de A et n OR D ou logique de A et D OR (HL) ou logique de A et du contenu de HL XOR n ou exclusif logique de A et n XOR E ou exclusif logique de A et E XOR (HL) ou exclusif logique de A et du contenu de HL Pour faire une opération logique entre deux registres (D et E par exemple) il suffit d'écrire : LD A,D AND E ou OR E, ou XOR E LD D,A Les opérations logiques positionnent les indicateurs S (signe), Z (zéro), P (Parité) et C (report). C'est en testant les indicateurs que l'on peut déterminer le résultat de l'opération et effectuer les traitements adéquats. CPL complémente logiquement (inverse l'état des bits) le contenu de A et ne positionne pas d'indicateur. NEG complémente réellement A (A=0-A) et positionne les indicateurs. Pour complémenter logiquement un registre 16 bits (BC par exemple), la séquence suivante s'impose : LD A,B CPL LD B,A LD A,C CPL LDC,A A suivre... Daniel Martin



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micros ID numéro 2 janvier 1987 Page 1Micros ID numéro 2 janvier 1987 Page 2-3Micros ID numéro 2 janvier 1987 Page 4-5Micros ID numéro 2 janvier 1987 Page 6-7Micros ID numéro 2 janvier 1987 Page 8-9Micros ID numéro 2 janvier 1987 Page 10-11Micros ID numéro 2 janvier 1987 Page 12-13Micros ID numéro 2 janvier 1987 Page 14-15Micros ID numéro 2 janvier 1987 Page 16-17Micros ID numéro 2 janvier 1987 Page 18-19Micros ID numéro 2 janvier 1987 Page 20-21Micros ID numéro 2 janvier 1987 Page 22-23Micros ID numéro 2 janvier 1987 Page 24-25Micros ID numéro 2 janvier 1987 Page 26-27Micros ID numéro 2 janvier 1987 Page 28-29Micros ID numéro 2 janvier 1987 Page 30-31Micros ID numéro 2 janvier 1987 Page 32-33Micros ID numéro 2 janvier 1987 Page 34-35Micros ID numéro 2 janvier 1987 Page 36-37Micros ID numéro 2 janvier 1987 Page 38-39Micros ID numéro 2 janvier 1987 Page 40-41Micros ID numéro 2 janvier 1987 Page 42-43Micros ID numéro 2 janvier 1987 Page 44-45Micros ID numéro 2 janvier 1987 Page 46-47Micros ID numéro 2 janvier 1987 Page 48-49Micros ID numéro 2 janvier 1987 Page 50-51Micros ID numéro 2 janvier 1987 Page 52-53Micros ID numéro 2 janvier 1987 Page 54-55Micros ID numéro 2 janvier 1987 Page 56-57Micros ID numéro 2 janvier 1987 Page 58-59Micros ID numéro 2 janvier 1987 Page 60-61Micros ID numéro 2 janvier 1987 Page 62-63Micros ID numéro 2 janvier 1987 Page 64-65Micros ID numéro 2 janvier 1987 Page 66-67Micros ID numéro 2 janvier 1987 Page 68-69Micros ID numéro 2 janvier 1987 Page 70-71Micros ID numéro 2 janvier 1987 Page 72-73Micros ID numéro 2 janvier 1987 Page 74-75Micros ID numéro 2 janvier 1987 Page 76-77Micros ID numéro 2 janvier 1987 Page 78-79Micros ID numéro 2 janvier 1987 Page 80-81Micros ID numéro 2 janvier 1987 Page 82-83Micros ID numéro 2 janvier 1987 Page 84