DOSSEG .MODEL Small .STACK 100h .DATA message1 db 'trame a deshabiller: $' message2 db 0dh,0ah, 'Donn‚es initiales: $' message3 db 0dh,0ah, 'Erreur au calcul de FCS$' TAB_RECU db 11 dup(0) TAB_TRAME db 02h,040h,041h,040h,041h,040h,041h,040h,041h,040h,041h,040h,041h,040h,041h,040h,041h,040h,041h,040h,041h,040h,01001010b,00000011b .CODE DEBUT: mov AX,@DATA mov DS,AX mov dx,offset message1 mov ah,9 int 21h mov di,0 tourn: mov al,TAB_TRAME[di] push ax call EN_BINAIRE ;affichage TAB_TRAME inc di cmp di,24 jne tourn call dtrame cmp cl,TAB_RECU[10] jne erreur mov dx,offset message2 mov ah,9 int 21h mov di,0 trame: mov al,TAB_RECU[di] push ax call EN_BINAIRE inc di cmp di,10 jne trame jmp fin erreur: mov dx,offset message3 mov ah,9 int 21h FIN: mov AH,04Ch int 21h decodage proc mov cl,4 shl al,cl shr ax,cl ret decodage endp dtrame proc mov di,1 mov si,0 mov cx,0 boucle: mov ah,TAB_TRAME[di] inc di mov al,TAB_TRAME[di] inc di call decodage mov TAB_RECU[si],al inc si cmp di,23 jne boucle mov si,0 mov cx,0 plop: add cl,TAB_RECU[si] inc si cmp si,10 jne plop ret dtrame endp EN_BINAIRE proc pop dx pop ax push dx mov si,1 dpour: cmp SI,8 ;test de la boucle jg fpour ;idem mov ah,0 shl AX,1 ;decalage de AL ds AH add AH,30h ;conversion en ASCII mov DL,AH ;preparation de l'affichage de AH en le mettant ds DL push AX ;sauvegarde de AX mov AH,02 ;Affichage int 21h ;idem pop ax inc si jmp dpour ;saut de boucle pour fpour: ret EN_BINAIRE endp END DEBUT