problème de passage de paramètre en ASM - ASM - Programmation
MarshPosté le 28-05-2003 à 14:12:44
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 ?
Marsh Posté le 28-05-2003 à 14:12:44
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).
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 ?
---------------