[MASM32] Comment utiliser RECORD ?

Signaler
Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006
-
Messages postés
569
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
6 janvier 2021
-
Bonjour,

J'essaie de faire un programme simple en RS232 pour piloter
un modem et je bloque sur la structure du DCB qui comporte
le RECORD 'fbits' qui est renseigné comme suit :

BITRECORD RECORD fBinary:1, fParity:1, .....

Comment puis je faire pour renseigné l'option fParity ?

Merci !

frobinet.

3 réponses

Messages postés
569
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
6 janvier 2021
2
L'élément record défini les bits d'un registre de la même manière qu'une structure défini le contenu d'une zone mémoire.Charger le registre,et la valeur est affectée.
ToutEnMasm
Messages postés
64
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
15 décembre 2006

oui j'ai bien compris le principe du RECORD mais je voulais
savoir si il étais possible de fixer directement les bits du
RECORD en faisant par exemple fbits.fbinary = 1 (ça ne fonctionne pas, bien sûr) plutôt que d'utiliser un systemes de masques.

et autrement qu'elle est le bit de poids faible
(ex fBinary ou le dernier de la chaine) ?

Merci !

frobinet.
Messages postés
569
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
6 janvier 2021
2
Un petit exemple vaut mieux qu'un long discours
Dans la section déclarations
Exemple RECORD Allons:6,voir:3,mignonne:3,sila:8,rose:3,est:5,fleurie:4

sigifie Allons a une étendue de 6 bits et ainsi de suite ,les bits allant du poids fort au poids faible.
L'étendue est un byte ,8 bits,un mot 16 bits ou un double mot 32 bits.
le total des étendues doit correspondre a un de ces trois chiffres.
La suite dans la section data .data
LErecord Exemple <45,4,1,10,1,5,2>
l'instruction fixe la valeur du dword LErecord que l'on pourra ensuite chargé dans un registre au moment du code.
mov eax,LErecord
Chaque valeur affecté aux étendues nommées ne doit pas dépasser la capacité du nombre de bits.
Par exemple voir compte 3 bits soit max 111b = 8

Voila ça doit être suffisament clair,j'espère
ToutEnMasm
http://perso.wanadoo.fr/luce.yves/