Programmation Assembleur x86
Programmation Assembleur x86/Copie entre registres et mémoire

Programmation Assembleur x86/Introduction

Programmation Assembleur x86/La pile
Programmation Assembleur x86/Les branchements

Programmation Assembleur x86/Les flags
Programmation Assembleur x86/Les interruptions

Programmation Assembleur x86/Registres
Programmation Assembleur x86/Sommaire
DOS/Robocopy
Robocopy est un logiciel de synchronisation de données en local ou sur un partage distant uniquement utilisable dans l' environnement Windows
Développé par Microsoft
Très facile à utiliser . Il possède beaucoup d' options . Les seules obligatoires sont les dossiers source et destination
options robocopy :
/R répétition des tentatives si erreurs
/W temps d' attention entre chaque tentative de synchro
/mir copie miroir
/np pas de barre de progression
/LOG le script créé un log qui permet de visualiser ce qui s'est passé pendant la synchro
/E 
Des dossiers de la source peuvent etre exclus de la synchro avec une option spécifique 
exemple de syntaxe : 
robocopy /R:1 /W:1 "dossier_source_local_ou_distant" "\\dossier_destination_local_ou_distant" /mir /np /LOG:c:\logs.txt /E 
Une info intéressante est la fin des logs :
la colonne FAILED comporte uniquement des 0 s' il n' y a pas d' erreurs pendant la synchro
               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :     12001     12000         1         0         0         0
   Files :     99618     99615         0         0         3         0
   Bytes :  42.020 g  42.019 g      0         0   512.0 k         0
   Times :   4:24:42   4:04:24                       0:00:00   0:20:17
   Speed :             3076608 Bytes/sec.
   Speed :             176.044 MegaBytes/min.
   Ended : Fri Dec 01 00:42:02 2017

Gambas 3/HelloWorld
Hello World! (en console).
Il est d'usage de faire une micro application pour tester si les outils de développement fonctionnent. 
Commencez par ouvrir l'environnement de développement ! Il y a beaucoup de façons de faire. Personnellement, sur Linux Mint, j'utilise le raccourci Alt+F2 pour afficher la fenêtre qui permet de saisir des commandes et j'écris "gambas3" puis j'appuie sur la touche Retour ! 
Si Gambas n'est pas installé chez vous, il vous faudra d'abord l'installer. Le plus simple étant d'utiliser le gestionnaire de logiciels de votre distribution si vous débutez sur Linux. Utilisez le paquet "gambas3" ! 
Une fois l'environnement de développement Gambas démarré, faites Ctrl+N ou 
Choisissez le modèle "Console Application" ! Donnez-lui un nom et choisissez le dossier contenant vos projets de développement Gambas ! 
Appuyez sur F10 pour afficher le volet "Projet" sur la gauche ! 
Dans les Sources du projet, on voit un Module "Main". Par défaut, Gambas va démarrer la routine Main dans le module de démarrage qui est le module Main lui aussi. 
Faites un double-clic sur le module "Main" pour afficher le code ! 
Comme Gambas est bien fait, le code contient déjà l'instruction permettant d'afficher un classique "Hello World!" à l'écran. Rien à faire donc ! Mais si vous le désirez, modifiez le texte ! C'est toujours sympa de s'approprier le code ! 
Voici le code dans le module principal (the main module) : 
' Gambas module file
Public Sub Main()
 Print "Salut tout le monde !"
End
Vous l'aurez deviné, nous allons démarrer l'application. Tapez la touche F5 pour exécuter l'application en mode débogage ! 
Le code fonctionne. C'est chouette. Mais comment faire dans la vraie vie pour l'utiliser ? Et bien il suffit de générer l'exécutable comme ceci : 
Ensuite, pour l'utiliser, affichez une console comme suit : 
Votre terminal est affiché. Chez moi, c'est gnome-terminal. Nous allons utiliser notre application comme ceci : 
GBR3 c'est l'interpréteur de Gambas. C'est la machine qui exécute notre application d'une manière similaire au JRE pour Java. 
On peut traduire cette commande par : 
Donc, on peut créer nos applications et les utiliser en production si on a l'interpréteur installé sur le PC de l'utilisateur ! Vos utilisateurs peuvent l'installer. Le plus simple est d'utiliser le gestionnaire de logiciels de votre distribution lorsque vous débutez sur Linux. Le paquet s'appelle "gambas3-runtime". 
Vous verrez plus tard que Gambas permet de générer rapidement des paquets pour installer votre application facilement sur d'autres ordinateurs. Vous verrez aussi que Gambas n'est pas limité aux applications de type console. Vous pourrez créer des applications graphiques, des jeux, des applications web, etc. 
Essayez maintenant de faire un Hello World! avec une application graphique !

Programmation Assembleur Z80/Introduction

Introduction.
L'assembleur.
Le langage machine est le langage de plus bas niveau de programmation. Les instructions sont traduites littéralement et assemblées les unes à la suite des autres. Par métonymie, le langage machine a pris pour nom "assembleur".
L'utilité du langage machine prend tout son sens sur des processeurs anciens ou en architecture contrainte (peu de mémoire, peu de puissance) car c'est le langage qui offre le plus de performance si on le maîtrise.
La contrepartie de cette simplicité est que le langage assembleur ne dispose comme instructions que ce dont le processeur est capable. Pour écrire un programme assembleur de bout en bout, il faut être capable de décomposer des instructions complexes en instructions simples. Par exemple, le Z80 n'est pas capable de réaliser de division ni de multiplication. Il faudra les décomposer en additions et décalages. Cet état de fait ne doit pas rebuter le débutant car de nombreuses librairies ou exemples existent. La pratique aidant, l'utilisation de librairies tierces deviendra caduque.
Le processeur Z80.
Historique.
Ce processeur fabriqué par Zilog est commercialisé dès juillet 1976 en version NMOS.
Si la première version est cadencée à 2.5MHz, c'est la version Z80a à 4MHz qui le rendra populaire au milieu des années 80 quand on le retrouvera dans de nombreux ordinateurs personnels tels que l'Amstrad CPC, Spectrum ZX, MSX mais aussi la console de salon Master System et de nombreuses bornes d'arcade dont les fameuses triple-based de SNK. Quelques années plus tard, on le trouve encore dans des systèmes plus puissants (NeoGeo, Megadrive) non plus en tant que processeur principal mais en tant que coprocesseur pour gérer des puces sonores par exemple.
La version NMOS la plus rapide est le Z80h à 8MHz.
Une version CMOS a été développée au début des années 2000 pour une fréquence de fonctionnement de 4 à 20MHz.
On le trouve encore aujourd'hui dans les calculatrices TI-84 et TI-84+.
Description.
Le Z80 est un microprocesseur 8 bits avec un bus d'adresse 16 bits qui lui permet d'adresser 65536 octets de mémoire (64K) de façon linéaire. Son bus de donnée mémoire est 8 bits, c'est pourquoi lorsqu'il réalise des opérations de lecture ou d'écriture mémoire en 16 bits, l'opération est scindée en deux lectures/écritures.
Son jeu d'instruction est de compatibilité ascendante avec le 8080 d'Intel, auquel il ajoute de nombreuses instructions de manipulation de bit: RES, SET, BIT ainsi qu'une généralisation des instructions de décalage à tous les registres là où le 8080 d'Intel ne pouvait faire des décalages qu'avec le registre A.
Sa compatibilité ascendante lui permit de s'imposer comme architecture de référence pour le système d'exploitation CP/M qui fût conçu pour le 8080 au point que certains programmes ne fonctionnaient plus que sur Z80.
Les compatibles.
Il existe d'autres processeurs plus ou moins compatibles avec le Z80:

Précis d'épistémologie/La recherche de la raison