Assembleur 8086

Résolu
karim66 Messages postés 27 Date d'inscription   Statut Membre -  
 nom -
Bonjour,tout le monde

SVP,aidez moi a écrire un programme en Assembleur 8086 qui permet de:

1-Saisir un Nombre sur 4 digits.
2-Effectuer la Conversion Binaire/Decimal
3-Effectuer la Conversion Decimal/Héxadecimal
4-Effectuer la Conversion Decimal/Octale

C'est un Tp et je doit le rendre dans moin d'une semaine.Merci d'avance pour vos réponses.

Nb:je voudré avoir le code source du programme.
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. karim66 Messages postés 27 Date d'inscription   Statut Membre 5
     
    cé bon les amateurs jé pu trouvé mn programme. le voila pour celui ki ont aura besoin.

    TITLE conversion de nombres

    org 100h

    jmp debut

    result db 16 dup('?'),'b'

    msg1 db "Veuillez saisir un nombre,SVP : $", 0Dh,0Ah

    msg2 db 0Dh,0Ah, "Le nombre en binaire est: $"
    msg3 db 0Dh,0Ah, "Le nombre en hexadecimal est : $"
    msg4 db 0Dh,0Ah, "Le nombre en octal est: $"

    debut:

    ;conversion binaire.

    mov dx, offset msg1
    mov ah, 9
    int 21h

    call scan_num

    mov bx, cx

    call convert_to_bin

    mov dx, offset msg2
    mov ah, 9
    int 21h

    mov si, offset result
    mov ah, 0eh
    mov cx, 17
    print_me:
    mov al, [si]
    int 10h
    inc si
    loop print_me

    ;conversion hexadecimal

    mov dx, offset msg3
    mov ah, 9
    int 21h

    debut1: mov ax,bx
    call affichHexa
    int 20h

    ;conversion octal.

    debut2: mov dx, offset msg4
    mov ah, 9
    int 21h

    mov ax,bx
    call affichOcta
    int 20h

    ; procedure de conversion au binaire.

    convert_to_bin proc near
    pusha

    lea di, result

    mov cx, 16
    print: mov ah, 2
    mov [di], '0'
    test bx, 1000_0000_0000_0000b
    jz zero
    mov [di], '1'
    zero: shl bx, 1
    inc di
    loop print

    popa
    ret
    convert_to_bin endp

    putc macro char
    push ax
    mov al, char
    mov ah, 0eh
    int 10h
    pop ax
    endm

    scan_num proc near
    push dx
    push ax
    push si

    mov cx, 0

    mov cs:make_minus, 0

    next_digit:

    mov ah, 00h
    int 16h

    mov ah, 0eh
    int 10h

    cmp al, '-'
    je set_minus

    cmp al, 13
    jne not_cr
    jmp stop_input
    not_cr:

    cmp al, 8
    jne backspace_checked
    mov dx, 0
    mov ax, cx
    div cs:ten
    mov cx, ax
    putc ' '
    putc 8
    jmp next_digit
    backspace_checked:

    cmp al, '0'
    jae ok_ae_0
    jmp remove_not_digit
    ok_ae_0:
    cmp al, '9'
    jbe ok_digit
    remove_not_digit:
    putc 8
    putc ' '
    putc 8
    jmp next_digit
    ok_digit:

    push ax
    mov ax, cx
    mul cs:ten
    mov cx, ax
    pop ax

    cmp dx, 0
    jne too_big

    sub al, 30h

    mov ah, 0
    mov dx, cx
    add cx, ax
    jc too_big2

    jmp next_digit

    set_minus:
    mov cs:make_minus, 1
    jmp next_digit

    too_big2:
    mov cx, dx
    mov dx, 0
    too_big:
    mov ax, cx
    div cs:ten
    mov cx, ax
    putc 8
    putc ' '
    putc 8
    jmp next_digit

    stop_input:

    cmp cs:make_minus, 0
    je not_minus
    neg cx
    not_minus:

    pop si
    pop ax
    pop dx
    ret
    make_minus db ?
    ten dw 10
    scan_num endp

    ;fin de la conversion decimal binaire.

    ;procedure de conversion au hexadecimal.

    start1: jmp debut1
    affich1 proc near
    push ax
    push dx
    cmp al,10
    jb w4chiffre
    add al,"a"-10

    jmp w4affiche
    w4chiffre: add al,"0"
    w4affiche: mov dl,al
    mov ah,2
    int 21h
    pop dx
    pop ax
    ret

    affich1 endp

    affichHexa proc near

    push ax
    push bx
    push cx
    mov bx,ax
    and ax,0F000h

    mov cl,12
    shr ax,cl
    call affich1
    mov ax,bx

    and ax,0F00h

    mov cl,8
    shr ax,cl
    call affich1
    mov ax,bx

    and ax,00F0h

    mov cl,4
    shr ax,cl
    call affich1
    mov ax,bx

    and ax,000Fh

    call affich1
    pop cx
    pop bx
    pop ax

    mov al, 'h'
    mov ah, 0eh
    int 10h

    affichHexa endp

    ; fin de la conversion decimal hexadecimal.

    ; conversion de nombre au octal.

    start2: jmp debut2

    affich2 proc near

    push ax
    push dx

    add al,"0"
    mov dl,al
    mov ah,2
    int 21h
    pop dx
    pop ax

    ret

    affich2 endp

    affichOcta proc near

    push ax
    push bx
    push cx

    mov bx,ax
    and ax,8000h
    mov cl,15
    shr ax,cl
    call affich2

    mov ax,bx
    and ax,7000h
    mov cl,12
    shr ax,cl
    call affich2

    mov ax,bx
    and ax,0E00h
    mov cl,9
    shr ax,cl
    call affich2

    mov ax,bx
    and ax,01C0h
    mov cl,6
    shr ax,cl
    call affich2

    mov ax,bx
    and ax,0038h
    mov cl,3
    shr ax,cl
    call affich2

    mov ax,bx
    and ax,0007h
    call affich2

    pop cx
    pop bx
    pop ax

    ;attent de sorti ou dos

    mov al, 'o'
    mov ah, 0eh
    int 10h

    mov ah, 0
    int 16h

    ret

    affichOcta endp

    ;fin de la procedure de conversion en octal.

    ;fin de programme
    4
    1. nom
       
      mrc
      0
  2. alex
     
    l'assembleur est obligé? Sinon tu peut essayer le quickbasic 4.5. Il est facile d'utilisation
    0
  3. karim66 Messages postés 27 Date d'inscription   Statut Membre 5
     
    l'assembleur est obligé oui.je voudré le programme écrit en assembleur.cé pour mon tp.
    0
  4. karim66 Messages postés 27 Date d'inscription   Statut Membre 5
     
    alor comme ça ya personne ki si conné en assembleur.?
    0
    1. Jenifer
       
      Salut l'ami

      Si tu veux trouver des personnes qui font de l'assembleur, va voir ici
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. karim66 Messages postés 27 Date d'inscription   Statut Membre 5
     
    merci jenifer.
    0
  7. nanous
     
    salut svp aider moi a resoudre ce probleme :
    ecrire un programme assembleur(masm) qui realise :
    etape 1 : saisie d'une suite de nbres a stocker dans un tableau . le nbre max de nbres que l'on peut saisir est de 16 (on peut saisir moins de 16 nbres) la saisie doit s'arreter a la rencontre du #
    etape 2 :
    afficher la taille du tableau
    si un nbre du tableau est pair on calcule son carré puis on affiche le nbre et son carre
    si un nbre du tableau est impair on lui rajoute la valeur 1 puis on affiche l'ancien et le nouveau nbre
    si un nbre du tableau est nul on affiche l'indice du tableau contenant cette valeur nulle
    afficher le nbre de pairs , impairs et nuls .
    0
  8. karim66 Messages postés 27 Date d'inscription   Statut Membre 5
     
    cé pas gagné faut te cassé 1 peu la téte ma vielle.

    jé eu le meme probléme et jé trouvé la solution tt seul en travaillant 1pe.lol.
    0
  9. zied
     
    ecrit programmation assembleur 8086 dans google livres il va apparaitre un livre vert qui s'appelle microprocesseur et microcontrolleur tu va trouver dans ce livre le programme que tu cherche
    0