Sunday, April 10, 2011

Pourquoi apprendre a programmer en languague d'assemblage (assembleur)

livre de jour
titre : assembleur facile
auteur : Ph.Mercier 
imprimé en france par brodard et taupin 
6471E-5 - usine de la flèche (Sarthe); le 23-09-1991
pour le compte des 
nouvelles éditions marabout
D.L. septembre 1991/0099/283
ISBN 2-501-01176-7

salut voila on va parler  d'assembleur aujourd'hui j'ai un livre d'assembleur mon frère il acheter de Marché de la ferraille pour 0.3 euro ou moins édition de 1991
voila la partie a d'extraire de livre.

Pourquoi  apprendre à programmer en langage d'assemblage alors que l'on dispose aujourd'hui de puissants   outils de programmation comme DBase ou autre générateurs de programmes?
Il y a plusieurs réponses à cette question. Tout d'abord ; il faut savoir que le langage d'assemblage (on dit parfois "assembleur") est très proche de la machine sur la quelle il est utilisé ; il accès à toutes les possibilités de cette machine et il est très rapide à l'exécution . il existe sur le marché des langages de haut niveau comme le PASCAL ; c ou DBASE qui orientent leurs actions commerciales sur la rapidité d'exécution des programmes générés . Les arguments qu'ils présentent sont réels pour 90% des applications. Par contre ; pour programmer un traitement de texte ; un tableur ; un système sur d'exploitation ou même certains jeux ; il est tout à fait impensable d'envisager un autre langage que l'assembleur ; ce sont des programmes qui calculent en permanence énormément de paramètres; ainsi la moindre portion de temps ; aussi infime soit-elle ; a une importance vitale . Imaginer le traitement de texte qui vous fait patienter une demi-seconde quand vous tapez return ; le tableur qui prend plusieurs minutes pour recalculer les cellules ; un jeu où vous pouvez compter jusqu'à avant que le bombe ne percute votre avion.....
c'est tellement vrai que beaucoup de langage de haut niveau ; conscients de leurs limites ; offrent des possibilités d'interface avec l'assembleur : on pourra inclure de code assembleur au milieu d'un programme écrit en pascal ou dbase ou autre .... cette option permet  de programmer le plus efficacement possible les routines "critique" qui doivent s"exécuter très rapidement (affichage écran ; tris;...)

l'assembleur est composé d'une série d'instructions simple . le système d'exploration proposes quelques routines d'accès aux périphérique mais l'assembleur ne dispose pas l'instruction pour afficher un nombre à l'écran ; pour manipuler des chaines de caractère (concaténer ;modifier;...)  il faudra quasi tout programmer soi-même ; il est donc évident  qu'au début les programmes que vous écrivez ne sont pas  spectaculaire ....

.............
on aller vers  la page 243

la programmation en assembleur n'est pas beaucoup plus compliquée que dans n'importe quel langage pour autant que l'on soit bien organisé. le problème consiste en ce que les programmes sont général très peu lisibles et ne répondent quasi  à aucun règle ; chacun fait un peu ce qu'il veut et il en résulte qu'un programme n'est compréhensible que par qui l'a créé et encore !
Toutes sortes de théories ont été développées pour tenter d'établer des règles de programmation.
parmi ces technique ; il y en a une qui consiste a "calquer" un programme assembleur sur un langage de plus haut niveau. Ainsi ; des langage comme pascal; basic ; c  .... disposent d'une série d'instructions STANDARD qui permettent de programmer 90% des problèmes :
 IF......THEN.......ELSE 
FOR.....
WHILE.....
REPEAT.........
CASE........ OF
on pourrait donc convenir que toute série d'instructions en assembleur ayant le même fonction qu'un:
IF serait repéré par des tables IF1 ; THEN1; ELSE1;ENDIF1; l'instruction IF suivante par IF2 ;THEN2;ELSE2;ENDIF2....
FOR serait repérée par des labels FOR1.
la  programmation du problème peut donc être repérée comme pour n'importe quel langage
IF THEN ELSE
Si ax=1 Alors bx <--10
sinon
bx <--0
cx <--10
Fsi

Ce qui donne:
if1:     CMP    AX,1       ; si AX=1
      JNZ Else1
Then1:   MOV    BX,10      ;alors..
JMP   EndIf1
Else1:   MOV   BX,0      ;sinin.. 
MOV    CX,10 
EndIf1












          


 


No comments:

Post a Comment