Language assembleur - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 53 sur 53

Language assembleur



  1. #31
    JPL
    Responsable des forums

    Re : Language assembleur


    ------

    Oui mais il dit qu'il est en informatique de gestion. Je pense donc que ce dont tu parles n'est pas dans son projet.

    -----
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  2. #32
    hepta7

    Re : Language assembleur

    C'est en fait ça, JPL a compris ma situation

  3. #33
    bisou10

    Re : Language assembleur

    L'assembleur ou autre chose.... Moi j'avais commencé par du pascal, abandonné 4 mois après, pour passer sur du C. Bon, y'avait une raison pédagogique (approche douce à travers la syntaxe simple ET précise du pascal), et celle de l'assembleur doit plutot se trouver dans la compréhension HW d'un CPU, base 16, base 2, et ne continuera sans doute pas longtemps.

    Donc qu'il y ait un TP ou 2 dessus me semble acceptable, après tout

  4. #34
    hepta7

    Re : Language assembleur

    Faire un peu de tout aide à mieux comprendre le tout

  5. #35
    hepta7

    Re : Language assembleur

    J'ai un autre probleme avec ce tout nouveau code tout frais

    Le but est d'ecrire dans le fichier "result" pair si le nbr introduit l'est, et impair si celui-ci l'est aussi.
    Dans mon cas quelque soit le nombre introduit il me met pair ( voir asterix dans mon code: zone sensible)

    Code:
    global main
    
    section .data
        result	DB	`result`, 0
        
    section .rodata
      msg1		DB	`Pair\n`
      lgrMsg1	DD	lgrMsg1 - msg1
      msg2		DB	`Impair\n`
      lgrMsg2	DD	lgrMsg2 - msg2
    
    section .bss
      nbr		RESB 	1
    
    section .text
    
    main:
    
       mov eax, 3 ; service read
       mov ebx, 0 ; stdin (clavier)
       mov ecx, nbr
       mov edx, 256
       int 0x80
       
     ; * je doit trouver le moyen de mettre la nbr introduite dans le registre edx. Le code qui suit est correcte, si erreur il y a alor elle sera en haut
    
      
      bt edx, 0
      jc _impair
      
      mov eax, 5 ; service open
      mov ebx, result
      mov ecx, 1q | 2000q
      int 0x80
      
      mov ebx, eax ; service write
      mov eax, 4 
      mov ecx, msg1
      mov edx, [lgrMsg1]
      int 0x80
      jmp _fin
    
    _impair:
    
      mov eax, 5 ; service open
      mov ebx, result
      mov ecx, 1q | 2000q
      int 0x80
      
      mov ebx, eax ; service write
      mov eax, 4
      mov ecx, msg2
      mov edx, [lgrMsg2]
      int 0x80
      
    _fin:
      mov eax, 1
      mov ebx, 0
      int 0x80

  6. #36
    satinas

    Re : Language assembleur

    Quelle est la taille exacte de ton buffer de saisie clavier ?
    A l'économie tu peux juste analyser le dernier chiffre tapé.
    Sinon il faut convertir une chaîne en valeur numérique, et là tu n'échappes pas à l'algo et le programme d'une dizaine de lignes.
    La conversion vérifiera en même temps que la saisie est valide.
    Dernière modification par satinas ; 30/07/2014 à 08h14.

  7. #37
    hepta7

    Re : Language assembleur

    Je ne sais pas te répondre.

    Si je veux introduire un nombre et non un chiffre alors je devrai analysé l’entièreté. En plus de ça j'ai mis 256 octet pour nbr, ca devrais suffir, non? à moins que je suis à coté de la plaque

  8. #38
    satinas

    Re : Language assembleur

    Ou c'est moi car en fait je n'ai jamais fait d'asm Intel sur Linux, je lis juste les docs

    Je disais quelle est la taille de ton tampon recevant les données ?
    http://www.gladir.com/LEXIQUE/INTR/int80f03.htm

    Pour moi un nombre pair à son dernier chiffre pair, et j'ai bu que du café

  9. #39
    hepta7

    Re : Language assembleur

    Merci mais je crois qu'il ne s'agit pas du tampon.

  10. #40
    hepta7

    Re : Language assembleur

    et d’après la documentation que tu as trouvé je suis dans le bon "car nombre d'octets à lire dans le tampon"

  11. #41
    satinas

    Re : Language assembleur

    Ce qui m'intéresse c'est l'adresse du tampon que tu mets dans ecx, et c'est nbr.
    La ligne "nbr resb 1" signifie que ton tampon fait 1 octet. Donc des que tu vas taper 2 octets ou va t-il mettre le 2ème, et le 255ème ?
    Normalement ton programme devrait planter, c'est pourquoi je suis pas sur.

  12. #42
    hepta7

    Re : Language assembleur

    Je viens d'essayer avec un autre code ce que tu soulève concernant "RESB 1" et il se trouve qu'il fonctionne.
    ah! j'allais oublier dans RESB 1 (1=> 1 Byte=1 octect= 8 bits =>nbr max=01111111)
    tandis que edx, 256 est exprimé en bit

  13. #43
    satinas


  14. #44
    satinas

    Re : Language assembleur

    Il faut que tu lises un tuto sur les bases de l'asm, les directives, les formats de données. Elles te manquent. Il y en a de très bons sites en français, je sais pas si on peut les citer ici.

  15. #45
    hepta7

    Re : Language assembleur

    Dans ton lien, il montre code permettant d'afficher ce qu'on écrit au clavier, mais dans mon cas je ne veux pas l'afficher, mais mettre ce que j'ai ecrit au clavier dans un registre afin de faire un test de parité sur celui-ci.

  16. #46
    satinas

    Re : Language assembleur

    Ma réponse n'a pas changé depuis mon premier message de la journée.
    Où je te signalais aussi déjà que ton buffer n'étais pas bon. Il faut écrire "nbr resb 256" et pas autres chose. Ca plantait pas car l'OS est très tolérant dans la protection des segments.

  17. #47
    hepta7

    Re : Language assembleur

    ok je vais essayé alors, croisons les doigts

  18. #48
    hepta7

    Re : Language assembleur

    ça n'a pas fonctionné.
    Mon code ne plante pas, mais il marche que pour pair, donc pour n'importe quelle valeur il me met pair dans le fichier result.

    J'ai essayé mon code on donnant une valeur fixe pour edx, et cela fonctionnait à la perfection, le seul hic c'est que je n'arrive pas à faire fonctionner l'enregistrement de la lecture clavier dans edx donc edx variable.

  19. #49
    hepta7

    Re : Language assembleur

    Merci encore Satinas pour ton acharnement

  20. #50
    satinas

    Re : Language assembleur

    Montre nous ton code qui permet de prendre les (nombreux) caractères tapés et stockés dans le (très grand) buffer nbr, et les transformer en valeur numérique 32 bit que tu mettras dans edx, avant de tester sa parité.

    Si c'est trop dur, tu dois pouvoir trouver ça sur le net, même dans un autre langage et le transposer en asm. Faut traiter les puissance de 10 dans une boucle.
    Là je dis pus rien, c'est la sieste

  21. #51
    hepta7

    Re : Language assembleur

    lol Je suis aussi fatigué, donc ca sera mon dernier message tu pourras dormir en paix apres avoir vu ce fameux code que voici: (et je t'assure qu'il fonctionne tres bien à condition que les nombres ne dépasse pas 8bit=>1 byte RESB 1)

    Code:
    global main
    
    section .bss
    	affich RESB 1
    section .text
    main:
    
    	mov eax,3 ; lire
    	mov ebx,0 ; clavier
    	mov ecx,affich ; adresse du resultat
    	mov edx,256 ;nbr d'octet lu
    	int 0x80 
    
    	mov edx,eax; nbr d'octet lu
    	mov eax,4 ; write
    	mov ebx,1 ; ecran
    	mov ecx,affich ; le message
    	
    	int 0x80 
    
    	mov eax,1
    	mov ebx,0
    	int 0x80 ; on quitte

  22. #52
    satinas

    Re : Language assembleur

    Ton code affiche tout ce qui a été tapé dans la limite des 256 caractères. A partir du 2ème caractère il stocke dans un endroit indéterminé, mais ça passe car il n'y a rien derrière le buffer affich.
    je te propose de tester ce code qui affiche la même chose, suivi du caractère '1'. Tu verras qu'il se comporte pas du tout pareil avec "affich resb 1" et "affich resb 256".
    Dans le premier cas, il écrase le contenu de ndata car il a le malheur de suivre le buffer affich que tu exploses allègrement.

    Code:
    global main
    
    section .bss
    	affich   RESB 1
    	ndata  RESB 1
    	
    section .text
    main: 
            mov byte [ndata],'1'
    
    	mov eax,3
    	mov ebx,0
    	mov ecx,affich
    	mov edx,256
    	int 0x80 
    
    	mov edx,eax
    	mov eax,4
    	mov ebx,1
    	mov ecx,affich
    	int 0x80 
    
    	mov edx,1
    	mov eax,4
    	mov ebx,1
    	mov ecx,ndata
    	int 0x80 
    
    	mov eax,1
    	mov ebx,0
    	int 0x80

  23. #53
    hepta7

    Re : Language assembleur

    J'ai posé ma question à un professeur et voila ca réponse, j'espere que quelqu'un pourra trouver réponse à mon problème :
    Re: [LMC1] TD4 - EX4
    Message nvs Aujourd'hui à 02:44

    Ce que tu fais, c'est lire quelques caractères au clavier et les stocker dans la variable nbr. ce que tu ne fais pas c'est convertir cette suite de caractères en un nombre binaire puis placer celui-ci dans edx... ce qui n'est pas trivial !

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. Compilation Language C en Language Hex pour PIC16F877
    Par bibi_6919 dans le forum Électronique
    Réponses: 8
    Dernier message: 19/09/2011, 17h43
  2. exercice sur language assembleur
    Par invite5c6a01fc dans le forum Électronique
    Réponses: 16
    Dernier message: 06/12/2009, 21h22
  3. programme language c ou assembleur
    Par invite0b7bc3b2 dans le forum Électronique
    Réponses: 11
    Dernier message: 27/04/2009, 22h07
  4. Cours Language assembleur
    Par jorg1n dans le forum Électronique
    Réponses: 4
    Dernier message: 08/10/2007, 14h31
  5. probleme comprehension du language d'assembleur
    Par invite522722ae dans le forum Électronique
    Réponses: 2
    Dernier message: 19/05/2007, 12h08