programme emu8086
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

programme emu8086



  1. #1
    inviteeafce04f

    programme emu8086


    ------

    bonsoir a tous

    j'ai besoin de vous aide mes amis concernant la récupération d'un valeur ayant 3 caractères seulement et le mettre dans un tableau. car j'en sais pas quel algorithme j'utilise pour lire cette valeur.
    quelqu'un m'aider et merci d'avance

    -----

  2. #2
    Jack
    Modérateur

    Re : programme emu8086

    Avec aussi peu d'informations, on ne va pas aller loin:
    tu aurais pu préciser qu'il s'agissait d'un programme assembleur pour 8086déjà
    la récupération d'un valeur ayant 3 caractères seulement
    On récupère où et comment cette valeur? Comment se termine la saisie: au bout du 2ème ou en validant avec la touche entrée?
    et le mettre dans un tableau
    Ou doit se situer ce tableau?

  3. #3
    inviteeafce04f

    Re : programme emu8086

    on doit faire une fonction permet a l'utilisateur de saisir des nombres différents (par exemple :350,22,1) en stockant ces valeurs dans un tableau (remplissage ) avec la taille précise par l'utilisateur .
    MERCI

  4. #4
    Jack
    Modérateur

    Re : programme emu8086

    avec la taille précise par l'utilisateur
    Il faudra encore que tu définisses comment on précise cette taille.

    Enfin, si tu veux avoir de l'aide, il faudra nous montrer que tu as travaillé un minimum conformément aux usages de ce forum:
    http://forums.futura-sciences.com/pr...ces-forum.html

  5. A voir en vidéo sur Futura
  6. #5
    inviteeafce04f

    Re : programme emu8086

    bonjour
    oui j'ai travaillé les 2 fonctions mais jusqu’à aujourd’hui j'ai pas attendre a corriger le problème.
    voila ma 1ére essaie:
    Code:
      data segment               
         
        pkey db 10,13,"Entrer le nombre des lignes:   $"
        msg db 10,13,'Entrer le nombre des colonnes:   $'
        msg_remplir db 10,13, 'remplir la 1ere matrice A: $'   
         r db 10,13, '$'
            
        nbr_lignes dw 0                             
        nbr_colonnes dw 0  
        
        tab_saisir db 5,?,5 dup(?)   
        
        tab_matriceA dw 100 dup (?)
        tab_matriceB dw 100 dup (?) 
        nb_saisir dw 0                  
        ends
    
    
    stack segment
       dw   128  dup(0)
    ends
    
    ;saisie au clavier le nbre des lignes et colonnes   
    
    saisir_taille PROC   
        
        xor si,si
        xor ax,ax 
      
       
       ;affichahe du message 'Entrer le nombre des lignes' 
       lea dx, pkey
        mov ah, 9
        int 21h
                       
                       
    saisir1: mov ah,1  ;fonction saisir  
            int 21h
                                             
         ;comparaison si al entre 1&6
           cmp al,'1' 
           jl saisir1 ;si al <1 donc l'utlisateur doit resaisir
           
           cmp al,'9'
           jg saisir1
            
        ; recuperation du valeur al 
           sub al,'0'
          
      ; mettre valeur du al dans variable "nbr_lignes"      
       mov nbr_lignes,ax
          
        
      ;affichage du message 'Entrer le nombre des colonnes:'      
       lea dx, msg
        mov ah, 9
        int 21h
        
    saisir2: mov ah,1
            int 21h
            
           cmp al,'1'
           jl saisir2 
           
           
           cmp al,'6'
           jg saisir2 
           
          
           sub al,'0'
             
       mov nbr_colonnes,ax  
       jmp menu      
                
    ret
    
    saisir_taille endp ;fin fonction 
    
    
    
       saisie_nbre  proc  
       xor si,si
       xor bx,bx
       xor ax,ax
       xor dx,dx
       xor cx,cx        
     saisie1:  
        mov ah,1
        int 21h
        cmp al,'0'
        jl saisie1
        cmp al,'9'
        jg saisie1
        mov bl,al
        sub bl,'0'
        mov al,100
        mul bl
        mov l,ax  
     saisie2:           
        mov ah,1
        int 21h
        cmp al,'0'
        jl saisie2
        cmp al,'9'
        jg saisie2
        mov bl,al
        sub bl,'0'
        mov al,10
        mul bl
        add  nb_saisir ,ax  
      saisie3:           
        mov ah,1
        int 21h
        cmp al,'0'
        jl saisie3
        cmp al,'9'
        jg saisie3
        mov bl,al
        sub bl,'0'
        add  nb_saisir ,bx 
        jmp fin
    
    fin:
        ret 
          saisie_nbre endp
    
    
    ;fonction remplissage        
    remplissage_matrice proc 
    ;affichage de message
    lea dx,msg_remplir
    mov ah,9
    int 21h
                  
     
     call Saisir_Nbre 
     xor di,di
     remplir:mov [tab_matriceA+di], bx
     
      inc di
    
       ;calcul de la taille du tableu Matrice A   
      mov ax,nbr_lignes 
       mul nbr_colonnes
       
      mov cx,ax ; car ax contient al=taille de matrice et que "si" sur 16 bits  
      cmp si,cx ; comparaison di avec cx(contient taille de matrice)
      jne remplir
      
      ret
    
    remplissage_matrice endp
    
    code segment
    start:
    ; set segment registers:
        mov ax, data
        mov ds, ax
        mov es, ax
        
         call saisir_taille
      
        ;call remplissage_matriceA     
         
         
        mov ax, 4c00h ; exit to operating system.
        int 21h    
    ends
           end start
    lorsque j’exécute ce programme j'ai aucun problème mais si j'arrive a remplir la matrice il s’arrête au de saisir au niveau de 4 éme chiffre ( par exemple si j'ai taille 3*2=6 élément donc il faut saisir 6 chiffres(368,1,12...))
    j'en sais pas comment je corrige ce problème
    mais de l'aider

  7. #6
    Jack
    Modérateur

    Re : programme emu8086

    Il y a des lignes et des colonnes maintenant? A quoi correspond le nombre de colonnes? Pourquoi ne nous donnes-tu pas enfin l'énoncé complet?

    D'après le titre de cette discussion, tu utilises emu8086. Il existe un mode pas à pas qui permet de tester le programme instruction par instruction avec possibilité d'observer les registres et la mémoire. Est-ce que tu l'a essayé?

  8. #7
    inviteeafce04f

    Re : programme emu8086

    Citation Envoyé par Jack Voir le message
    Il y a des lignes et des colonnes maintenant? A quoi correspond le nombre de colonnes? Pourquoi ne nous donnes-tu pas enfin l'énoncé complet?

    D'après le titre de cette discussion, tu utilises emu8086. Il existe un mode pas à pas qui permet de tester le programme instruction par instruction avec possibilité d'observer les registres et la mémoire. Est-ce que tu l'a essayé?
    généralement le sujet permet de saisir et remplir une matrice

    donc j'ai basé sur la taille de matrice qui doit être saisie par l'utilisateur (nbr_ligne*nbr_clonne)
    puis la 2 éme fonction permet de récupérer les nombres saisie(fontion :saisir_nbre) par l'utilisateur puis on le mettre dans le table MatriceA (fonction: remplissage_matrice)

  9. #8
    invite830075ec

    Re : programme emu8086

    Salut,
    Le retour de l'interruption de saisie 21h avec ah = 01h est dans al, avec ah toujours à 01h, donc faire plutôt "mov nbr_lignes,al" et déclarer nbr_lignes sur 8 bit.
    Ton source produit des erreurs à l'assemblage, c'est quoi "jmp menu", "mov l,ax" ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2015, 15h04
  2. Réponses: 2
    Dernier message: 29/06/2014, 20h44
  3. Emu8086
    Par invitee2ee5a50 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 06/01/2014, 14h18
  4. programme dans Emu8086
    Par invited633afae dans le forum Programmation et langages, Algorithmique
    Réponses: 22
    Dernier message: 11/04/2011, 22h33
  5. comment utiliser les résultats d'un programme fortran dans un autre programme
    Par invitedb78a3a3 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 30/09/2010, 20h21