Essaie:
recoct PROC near PUSH DX MOV DX,3FDh BOUCLE_recoct: IN AL,DX TEST AL, 1 JZ BOUCLE_recoct MOV DX,3F8h in AL,DX POP DX ret
recoct ENDP
|
Core Breaker 
-------------------------------
Réponse au message :
-------------------------------
> bon voila j'ai un programme en C qui appelle une procédure en assembleur et cette dernière doit retourner un caractère.
>
> j'ai donc écrit le programme suivant en assembleur (mon programme marche puisque je l'ai testé avec des fichiers objets valides, alors que mon programme en assembleur ne marche pas).
>
> -----------------------------------------
>
> Code :
>
>
> DOSSEG
> .MODEL small
> .DATA
>
> .CODE
>
> PUBLIC C recchaine ; procedure recchaine visible en C
> PUBLIC C recbloc ; procedure recbloc visible en C
> PUBLIC C reccar ; procedure reccar visible en C
>
> ; ------------
> ; -- recoct --
> ; ------------
>
> recoct PROC
>
> PUSH DX
> ; registre concern, RBR
> ; bit 0 de LSR a 1 si il y a eu quelque chose de re?u
> ; on boucle tant que le bit 0 de LSR est different de 1
>
> MOV DX,3FDh ; acces au registre LSR
> IN AL,DX
> AND AL,01h ; et 00000001b donc comparaison avec le bit 0 (data ready à 1 si l'octet est recu)
> BOUCLE_recoct : CMP AL,1
> JE sortir_recoct ; si egalite alors bit 0 . 1
> JMP BOUCLE_recoct ; sinon on continuer a boucler
>
> sortir_recoct : MOV DX,3F8h ; Registre de RBR pour récupérer l'octet
> in AL,DX ; octet qu'on met dans AX
> POP DX
> ret
>
>
> recoct ENDP
>
>
>
> ; ------------
> ; -- reccar --
> ; ------------
>
> reccar PROC
>
> ; elle consiste juste . appeler recoct
> ; on retourne le char dans AX ou AL selon la taille de la bestiole (ici AL)
> CALL recoct
> ret
>
> reccar ENDP
>
>
> ------------------------------------------
>
>
> j'utilise recoct car dans ce fichier j'ai plusieurs fonctions asm qui l'utilise.
> bon bref quand je lance mon programme C il ne reçoit pas le caractère attendu alors qu'il est envoyé (ça c sur).
> Pourtant je fais attention au registre je passe bien mon caractère dans AL pour l'utiliser.
> Si quelqu'un avait une idée ?
>