Aller au contenu


Assembleur


  • Vous ne pouvez pas répondre à ce sujet
4 réponses à ce sujet

#1 fengweilee

  • Membres
  • 5 messages
  • Classe :Autre
  • Sexe :Garçon

Posté 13 avril 2010 - 11:45

Bonjour,

Je suis bloqué dans un exercice assembleur:

[org 0x0100]

mov ax,cs
mov ds,ax

mov ax, 00h
mov bx ,01h
mov cx ,[limite]

pour add ax, bx ;ax-< ax + bx

mov [swap] ,ax
mov ax, bx
mov bx, [swap]

loop pour

mov [fibo], bx

mov ah,4ch
int 21h

nop

[segment .data]

limite db 0Ah,00
swap db00h,00
fibo db 00h,00

il faut réaliser l'assemblage et donner la taille en octet ensuite détaillez le cycle d'instruction en assembleur x86 de mov [swap], ax (ip contient 0110)

#2 Denis CAMUS

    Posteur

  • E-Bahut
  • 2 112 messages
  • Classe :Enseignant
  • Sexe :Garçon
  • Localisation:Massy 91
  • Intérêts:Radioamateur, aviation, électronique, informatique

Posté 13 avril 2010 - 12:15

Bonjour,
je te colle ce que j'avais envoyé en MP à une élève qui avait même DM :

Citation

Je ne connais pas bien la syntaxe de l'assembleur du x86, mais le principe est le même que sur d'autre.
J'ai téléchargé un émulateur ici :
http://www.emu8086.com/

C'est une version d'essai, mais elle marchera bien plusieurs jours, et elle permet de sauvegarder ce que l'on a fait et aussi de l'émuler en observant les registres.

J'ai copié-collé ton source, essayé de retirer les erreurs de frappe, mais je ne suis pas sûr que mes corrections soient toutes bonnes.
En particulier, je ne sais pas à quoi sert [segment].
Je te propose donc de télécharger la même chose, l'installer sur ton ordinateur et de compiler.

Sur l'émulateur, les étiquettes doivent être suivies de " : " (deux points).
Le ret est mis par défaut par l'émulateur.

Il semble donc que le code, si je n'ai pas fait trop d'erreurs, fasse une longueur de FF, soit 128 octets.



EMU8086 GENERATED LISTING. MACHINE CODE <- SOURCE.

Essai_bahut.com -- emu8086 assembler version: 4.08

[ 18/03/2010 -- 15:58:40 ]

===================================================================================================
[LINE] LOC: MACHINE CODE SOURCE
===================================================================================================

[ 1] :
[ 2] : ; You may customize this and other start-up templates;
[ 3] : ; The location of this template is c:\emu8086\inc\0_com_template.txt
[ 4] :
[ 5] : org 100h
[ 6] :
[ 7] :
[ 8] :
[ 9] : ;[SEGMENT .text]
[ 10] :
[ 11] :
[ 12] :
[ 13] 0100: 8C C8 MOV AX, CS
[ 14] :
[ 15] 0102: 8E D8 MOV DS, AX
[ 16] :
[ 17] 0104: B8 00 00 MOV AX, 00h
[ 18] :
[ 19] 0107: BB 01 00 MOV BX, 01h
[ 20] :
[ 21] 010A: B9 23 01 MOV CX, limite
[ 22] :
[ 23] :
[ 24] :
[ 25] 010D: POUR :
[ 26] :
[ 27] 010D: 03 C3 ADD AX, BX ; AX <- AX + BX
[ 28] :
[ 29] 010F: 89 06 25 01 MOV [swap] , AX
[ 30] :
[ 31] 0113: 8B C3 MOV AX, BX
[ 32] :
[ 33] 0115: BB 25 01 MOV BX, swap
[ 34] :
[ 35] 0118: 90 90 LOOP POUR
[ 36] :
[ 37] :
[ 38] :
[ 39] 011A: 89 1E 27 01 MOV fibo, BX
[ 40] :
[ 41] :
[ 42] :
[ 43] 011E: B4 4C MOV AH, 4Ch
[ 44] :
[ 45] 0120: CD 21 INT 21h
[ 46] :
[ 47] :
[ 48] 0122: 90 NOP
[ 49] :
[ 50] :
[ 51] : ;[SEGMENT .data]
[ 52] :
[ 53] :
[ 54] :
[ 55] 0123: 0A 00 limite: db 0Ah, 00
[ 56] :
[ 57] 0125: 00 00 swap: db 00h, 00
[ 58] :
[ 59] 0127: 00 00 fibo: db 00h, 00
[ 60] :
[ 61] 0129: C3 ret
[ 62] :
[ 63] :
[ 64] :
[ 65] :
[ 66] :
[ 67] :

===================================================================================================





===================================================================================================

Seuls les faucons volent.
Les vrais restent au sol.

#3 fengweilee

  • Membres
  • 5 messages
  • Classe :Autre
  • Sexe :Garçon

Posté 13 avril 2010 - 13:20

Merci de votre aide!

#4 fengweilee

  • Membres
  • 5 messages
  • Classe :Autre
  • Sexe :Garçon

Posté 13 avril 2010 - 20:30

Voir le messagefengweilee, le 13 avril 2010 - 13:20, dit :

Merci de votre aide!

segment sert apparemment

#5 fengweilee

  • Membres
  • 5 messages
  • Classe :Autre
  • Sexe :Garçon

Posté 13 avril 2010 - 20:32

Voir le messagefengweilee, le 13 avril 2010 - 13:20, dit :

Merci de votre aide!

segment sert apparemment au logiciel pour faire l'assemblage :il a un fichier segment .text qui correspond au début du programme et un fichier .data qui correspond à la fin du programme.Apres cela on retrouve les variables qu'on doit initialiser pour trouver leur adresses mémoires.





1 utilisateur(s) li(sen)t ce sujet

0 invité(s) et 1 utilisateur(s) anonyme(s)

Elyazalée - Agence de Communication, Création de Site internet, Côtes d'Armor, 22 // Agence de Communication, Création de Site internet, Vannes, 56
Livre dirigeant crise - outils de management