Langage Assembleur

Click here to load reader

  • date post

    08-Jun-2015
  • Category

    Documents

  • view

    4.178
  • download

    7

Embed Size (px)

Transcript of Langage Assembleur

Langage assembleur

Version de Janvier 2003

Langage assembleur - 1re - PBT

1

Langage assembleur

Pierre Bettens (PBT) [email protected]

Langage assembleur - 1re - PBT

Avant-propos Ces notes sont crites, la fois, pour servir de support la prsentation orale du cours et comme support pour l'tudiant. Ce document n'est que la remise en forme, lgrement modifie et complte, des notes de messieurs Jean-Claude Jaumain et Jean-Marie VanLoock. Qu'ils en soient ici remercis. J'en profite pour remercier plus particulirement tout ceux qui aiment tre remercis. Cette premire version sera revue, augmente ou diminue en tous les cas, elle sera modifie pour les annes suivantes afin de mieux rpondre aux besoins de l'tudiants. Exemples Les exemples contenus en annexes dans ces notes sont disponibles dans mon distri et sur internet (demandez-moi o).

2

Langage assembleur

Martin Van Aken (VAK) [email protected] Ren Pailloucq (RPA) [email protected] Amine Hallal (HAL) [email protected]

Langage assembleur - 1re - PBT

CopyrightCopyright 2001-2002 Pierre Bettens, Jean-Claude Jaumain, Jean-Marie Van Loock - HEB ESI La reproduction exacte et la distribution intgrale de ce document, incluant ce copyright et cette notice, est permise sur n'importe quel support d'archivage, sans l'autorisation de l'auteur. L'auteur apprcie d'tre inform de la diffusion de ce document. Verbatim copying and distribution of this entire document, including this copyright and permission notice, is permitted in any medium, without the author's consent. The author would appreciate being notified when you diffuse this document. E-mail : [email protected]

3

Table des matires Techniques de programmation et exemples Procdures et programmation structure (1) La pile du 80x86 Complments sur les tableaux Procdures et programmation structure (2) Passage de paramtres par valeur Passage de paramtres par adresse Variables globales / variables locales

RcursivitLangage assembleur - 1re - PBT

4

Table des matires Complments sur les interruptions Segmentation mmoire Segments logiques Directives de segmentation simplifies Directives de segmentation standard

Le co-processeur mathmatique, le 80x87 Macros Les chanes de caractres Manipulation de bitsLangage assembleur - 1re - PBT

5

Techniques de prog. et exemplesExemple 1Afficher un nombre donn (dans EAX) en base 10 dans une autre base ECX (comprise entre 2 et 36) EAX=45, ECX=4 EAX=123, ECX=4 EAX=32767, ECX=16 Afficher : 2314 Afficher : 13234 Afficher : 7FFFh

LASEx01.asmLangage assembleur - 1re - PBT

Analyse Pour convertir un nombre de la base 10 vers une autre base, on utilise l algorithme de la division entire pas la base. Les chiffres du nombre sont les restes successifs. LogiqueACTION Dfinition d un vecteur de chiffres (ici 36 symboles) Dfinition d une zone d affichage (EAX SI+=1 sinon SI-=1 LODSW Le registre AX est charg avec DS:SI Si FD = 0 -> SI+=2 sinon SI-=2 LODSD Le registre EAX est charg avec DS:SI Si FD = 0 -> SI+=4 sinon SI-=4Langage assembleur - 1re - PBT

63

Manipulation de chanes de caractres Instructions STOSSTOSB - STOSW - STOSD [ES:DI] reoit le contenu de AL - AX - EAX Si FD=0 DI+=1-2-4 sinon DI-=1-2-4

Instructions SCASModifie les flags O,S,Z,A,P,C

SCASB - SCASW - SCASD Comparaison AL - AX - EAX avec [ES:DI] SI FD=0 DI+=1-2-4 sinon DI-=1-2-4Langage assembleur - 1re - PBT

64

Manipulation de chanes de caractres Instructions CMPSCMPSB - CMPSW - CMPSD Comparaison [DS:SI] avec [ES:DI] (byte, word, dword) SI FD=0 DI+=1-2-4 et SI+=1-2-4 sinon DI-=1-2-4 et Si-=1-2-4

Instructions MOVSMOVSB - MOVSW - MOVSD [DS:SI] est copi dans [ES:DI] (byte, word, dword) SI FD=0 DI+=1-2-4 et SI+=1-2-4 sinon DI-=1-2-4 et Si-=1-2-4Langage assembleur - 1re - PBT

65

Manipulation de chanes de caractresPrfixe REP Toutes ces instructions peuvent tre prcdes d'un prfixe REP, REPZ, REPNZ, REPE, REPNE REP : CX fois ou ECX fois REPZ ou REPE : CX fois et tant que FZ = 0 REPNZ ou REPNE : CX fois et tt que FZ 0

Langage assembleur - 1re - PBT

66

Manipulation de BITS Slection d'un ensemble de bits par masque AND destination,source OR destination,source XOR destination,source NOT oprande

L'utilisation d'un masque permet de positionner des bits une valeur prdfinie

Langage assembleur - 1re - PBT

Oprations lmentaires Les oprations de base sur le bits sont le ET, le OU, le NON OU et le NON. Ces oprations sont directement lies l'algbre de Boole. Le ET effectue un et logique entre chacun des bits des deux oprandes. Le rsultat est plac dans l'oprande destination. idem pour les autres oprateurs. Exemples AND AL,0Fh - positionne les 4 bits de gauche zro, les 4 bits de droite restent inchangs. OR AL,0Fh - positionne les 4 bits de droite un, les 4 bits de gauche restent inchangs. XOR AL,0Fh - inverse les 4 bits de droite et laisse les 4 bits de gauche inchangs. NOT AL - inverse tous les bits de AL

67

Manipulation de BITSShift - Dcalage d'un nombre de bits Oprateurs : SHR - SAR - SHL - SAL SHx = shift, SAx = shift arithmtique Sxx oprande1,oprande2 oprande2 = 1, CL, n Multiplication ou division par puissance de 2, OF n'a pas de sens, sauf pour 1, il rcupre le 'bit perdu' limit aux 4 bits de droite de CL ou de nLangage assembleur - 1re - PBT

Remarque La diffrence entre le shift et le shift arithmtique est que le second recopie le bit de signe tandis que le premier remplit l'oprande par un ou plusieurs zro.

68

Manipulation de BITSRotation - Rotation d'un nombre de bits Oprateurs : RCR - RCL - ROR - ROL RCx = rotation avec CF, ROx = rotation Rxx oprande1,oprande2 oprande2 = 1, CL, n OF n'a pas de sens, sauf pour 1, il rcupre le 'bit perdu' limit aux 4 bits de droite de CL ou de n

Langage assembleur - 1re - PBT

Remarque La diffrence avec le shift est que la rotation permet de remplir l'oprande avec le bit sortant. Soit en passant par le CF soit non.

69

Manipulation de BITSTest du bit ni (386) BTx oprande,i BT : CF = bit ni, op est inchang, i = val / reg BTC : idem BT mais le bit est complment BTR : idem BT mais le bit est mis 0 (reset) BTS : idem BT mais le bit est mis 1 (set)( retenir pour le cours de 2 ime)

Langage assembleur - 1re - PBT

ExempleMOV MOV continue: BT LOOP AX,CX continue CX,16 AX,11101111011110101b

Le CF vaudra successivement : 10101111011110111 Si l'on remplace BT par BTR, le bit est reset, et donc la fin AX vaut zro.

70

Manipulation de BITSRecherche du premier bit 1 (386) BSF oprande1,oprande2 Bit Scan Forward Scan de droite -> gauche oprande1 (registre) droite

Langage assembleur - 1re - PBT

ExempleMOV BSF BSR XOR XOR INC BSF BSR BX,0000111010000000b AX,BX AX,BX AX,AX BX,BX AX AX,BX AX,BX ; ZF = 1, AX inchang ; ZF = 1, AX inchang ; AX