begin process at 2012 05 25 03:47:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

c, c++ et asm

 > 

envoie d'un caractère par liaison série en asm/C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

envoie d'un caractère par liaison série en asm/C

mercredi 28 mai 2003 à 14:24:35 | envoie d'un caractère par liaison série en asm/C

lordankou

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 ?
mercredi 28 mai 2003 à 18:24:54 | Re : envoie d'un caractère par liaison série en asm/C

CoreBreaker

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 ?
>


Cette discussion est classée dans : programme, caractère, al, dx, recoct


Répondre à ce message

Sujets en rapport avec ce message

Multiplication de deux nombres compris entre 0 et 99 en assembleur [ par petitspirou ] salut, j'ai un programme a faire mais je suis nul en assembleur, voici ce que j'ai fais mais ca ne fonctionne pas.Quelqun peut'il me le corriger et me PROGRAMME EN NASM : pas du tout facile [ par eishtein ] bonjour tout le monde; je me demandais si vous pouvez m'aider à la résolution d'un certain problème au niveau suivant : en fait j'ai un prg en NASM [1 probleme de simulation de 8086 sur ISIS PROTEUS [ par AZERGUI2 ] Bonjour, j'ai généré le .exe du programme suivant par le MAMSM32 ,mais la simulation ça marche pas au niveau de ISIS PROTEUS !!! il s'agit de tro Voir si un caractère est dans une chaine [ par Wayth ] Bonsoir, Je viens sur votre forum car je n'arrive pas à trouver un label fonctionnel pour voir si un caractère se trouve ou non dans une chaîne de ca [BAR]simulation d'un pont roulant (schéma sur isis avec le nom de de materiel et le programme sur Mikro C) stp help [ par badhamma ] salut , stp qui peut m'aider de fair un schéma sur isis et le programme sur Mikro C stp urgent help help me please un programme ELM327 pour interface diagnostic OBD-II (assembleur ou une autre langage...) [ par wassfi ] slt, svp aider moi pour trouver un programme ELM327 pour interface diagnostic OBD-II (assembleur ou une autre langage...) boot [ par BARABS ] apres avoir booter la machine avec le code suivant : [bits 16] [org 7c00] .... qu'est ce qu'il faut faire si on veut continuer le programme mais le p [BAR]testeur du clavier téléphoniqur [ par maramoura ] Bonjour; j'ai un programme d'un testeur de clavier téélphonique (usage RTOS) utilisant le CCS avec PIC16F877 et je vais translater le programme en ut Serrure codée [ par raphi67 ] Voilà je viens de commencer mon projet donc je l'explique. Il s'agit d'une serrure codée, alors j'ai commencé mon projet avec un monostable au début e problème avec l'interruption 21h et récup de la touche Entrée [ par HirOinEvOl ] Bonjour, je dois développer une animation en assembleur et je souhaite faire une boucle infini [b]jusqu'à[/b] interruption de l'utilisateur. j'utilise


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,961 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales