L'environnement de développement proposé par Freescale s'appelle CodeWarrior. Il comprend :
Le module "Processor Expert" de UNIS inclus dans CodeWarrior configure graphiquement les périphériques et génère le code C correspondant. CodeWarrior est gratuit dans sa version proposée en « Special Edition » jusqu'à 32 Ko de code objet en C. L'assembleur est illimité.
Les instructions CPU08 sont codées sur 1,2 ou 3 octets, dépendant du mode d'adressage. Elles s'exécutent en 1 à 11 cycles d'horloge, 3 à 4 en moyenne . Ce sont des instructions CISC, qui sont en fait équivalentes à plusieurs instructions RISC. Par exemple, une seule instruction CBEQ X+, LOOP :
Le CPU08 met en œuvre plusieurs modes d'adressage de base différents :
inhérent (ou implicite ou absolu) : L'opérande est implicite, par exemple : CLRA (Clear A), MUL (Multiply). Ces instructions sont en général codées sur un seul octet.
immédiat : La valeur de l'opérande est contenue dans l'instruction. Par exemple : LDA #10 (Charge A ou LoaD A) avec la valeur 10.
direct : Ce mode d'adressage permet d'adresser les 256 premiers octets de la mémoire (de 0x00 à 0xFF, zone aussi appelée « page zéro »). Il optimise les instructions dans la mesure où l'adresse de cette zone est représentée par un seul octet, ce qui réduit la taille de l'instruction et la vitesse d'exécution de celle-ci. À remarquer que les ports d'entrée-sortie sont mappés dans cette zone. Par exemple : LDA $00 (charge A avec le contenu de l'adresse $00 (en général le port A)).
étendu : Ce mode permet d'adresser toute la mémoire avec une adresse sur 16 bits.
relatif : Ce mode d'adressage ajoute un opérande de 8 bits signé (de +127 à - 127) au compteur ordinal (PC). Ce mode d'adressage est utilisé principalement pour les instructions de branchement, et en particulier pour les boucles. Par exemple : DBNZA LOOP (Decrement and Branch if Not Zero ou décrémente l'accumulateur A, et branche à l'étiquette LOOP si A est différent de 0).
indexé sans déplacement, avec déplacement de 8 bits, avec déplacement de 16 bits, avec post-incrément, avec post-incrément et déplacement sur 8 bits. L'adresse est contenue dans le registre d'index (H:X). Un déplacement de 8 ou 16 bits peut lui être ajouté et il peut être incrémenté après l'opération. Les modes d'adressage post-incrémentés sont utilisés uniquement avec les instructions DBNZ (Decrement and Branch if Not Zero) et CBEQ (Compare and Branch in EQual). Ils permettent de réaliser des contrôles de boucles particulièrement efficaces.
indexé sur le pointeur de pile, avec déplacement de 8 bits et avec déplacement de 16 bits. L'adressage relatif sur le pointeur de pile est particulièrement utile pour le code écrit en C : Les variables locales et les paramètres des fonctions sont adressées relativement au pointeur de pile, ce qui permet de libérer l'espace mémoire à la sortie de la fonction.
de mémoire à mémoire . Certaines opérations ne nécessitent pas le transfert via l'accumulateur. Par exemple : MOV #$55,$00 (place la valeur 55 à l'adresse mémoire 00 (le PORT A)).