Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
appel aux specialistes ASM decalage 96 bits
- Claudius
Passionné- Messages : 260
- Âge : 69
- Enregistré en : septembre 2015
- Localisation : ELANCOURT (78 - YVELINES)
- Contact :
Ok pour les IT's inhibées (c'est déjà une piste en moins)
S'agissant de la boucle for suivante que j'ai un peu reformatée pour plus de lisibilité:
je serais intéressé par le code assembleur correspondant car seul celui-ci est sans appel à l'exécution
De plus, il est tjs possible de l'exécuter séparément voire de le parcourir de visu
C'est peut-être fastidieux, mais c'est le coût à payer pour continuer à avancer...
Questions
- Pourquoi CarryX = Carry[0]; et Carry[0] = CarryX; alors qu'un tableau de [8] est défini et initialisé
=> Si Ok, ne pas utiliser de tableau pour la compréhension du lecteur (en plus, doit être moins coûteux en temps d"exécution ;-)
- Pourquoi 2 x nop successifs
=> Si Ok, n'en garder qu'un seul pour le saut btfsc STATUS,0,1
S'agissant de la boucle for suivante que j'ai un peu reformatée pour plus de lisibilité:
Code : Tout sélectionner
for (i = 0; i < 128; i++)
{
UART1 Write(' '); WordToStrWithZeros(i, CRam1);
UART1 Write_Text(CRam1); UART1_Write_CText(" -> ");
tx t = &TEXTE[0];
CarryX = Carry[0]; // table contenant les reports des 8 mots de 64 bits
_asm {
rlcf _L10+0,1,0 // rotate left through carry de _L10[0] (rlcf _L10,F,ACCESS)
rlcf _L10+1,1,0
rlcf _L10+2,1,0
rlcf _L10+3,1,0
rlcf _L11+0,1,0 // 2em partie mot de 64 bits
rlcf _L11+1,1,0
rlcf _L11+2,1,0
rlcf _L11+3,1,0
// modif 06-11-2019
bcf _L10,0
btfsc STATUS,0,1 // si Carry=1 => reporté dans le bit 0 du mot de depart
bsf _L10,0
nop
nop
}
Carry[0] = CarryX; // memorise report si C=1
Binarise_32bits(L11, txt); UART1_Write('|'); Binarise_32bits(L10,txt);
CRLF1();
}
je serais intéressé par le code assembleur correspondant car seul celui-ci est sans appel à l'exécution
De plus, il est tjs possible de l'exécuter séparément voire de le parcourir de visu
C'est peut-être fastidieux, mais c'est le coût à payer pour continuer à avancer...
Questions
- Pourquoi CarryX = Carry[0]; et Carry[0] = CarryX; alors qu'un tableau de [8] est défini et initialisé
=> Si Ok, ne pas utiliser de tableau pour la compréhension du lecteur (en plus, doit être moins coûteux en temps d"exécution ;-)
- Pourquoi 2 x nop successifs
=> Si Ok, n'en garder qu'un seul pour le saut btfsc STATUS,0,1
Enregistreur de traces GPS & Boussole GPS parlante (PIC & Arduino)
appel aux specialistes ASM decalage 96 bits
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
merçi de te pencher sur mon cas .
lorsque j'initialise ma table de long avec le message à afficher
il s'affiche correctement ...
ensuite je veux decaler cette table pour faire defiler le texte. d'un pas (pixel) à gauche , mais en gardant le buffer circulaire
pour que le texte sortant revienne sur l'entree ( en boucle fermée)
Le test de decalage sur 64 boucles ou 128 boucle de la 1ere ligne constituée de L11-L10 me parait pourtant OK
voici le *.lst correspondant au decalage des 8 lignes de 2 long=32+32= 64 bits ( pour correspondre aux 8 max 8X8)
Je me suis assuré que mes variables 16 entiers longs et pointeur Depart sont bien alloués en bank0 .
MikroC s'accaparant de 21 bytes R0 à R20
j'espere ne pas avoir d'effets de bords vu que j'occupe la bank0 presque à ras bord ( max=0x005F)
carry[8] et carryx ne sont plus utilisés..
effectivement menage à faire !
projet MikroC
==============================================
07-11-2019
ce matin , je refais un test 100% en C
je teste le decalage sur la 1ere ligne en mode DEBUG .. OK
puis j'implemente le code pour les 8 lignes de 2x32 bits , decalage à gauche de 1 bits et surveillance des bits MSB
pour report de carry vers l'entree (rebouclage bit 31 du " MSB entier long" vers bit 0 du" LSB entier long" (MSB=LSB=64 bits)
code en C
le 1er affichage est OK (avant decalage) .. normal, je viens juste de precharger les registre avec le texte à afficher
et se degrade des le 1er decalage, de plus en plus .. voir au 32em decalage :
... puis semble OK du 62eme au 64em
c'est pas ETONNANT ça ! et surtout incomprehensible (du moins,par moi)
lorsque j'initialise ma table de long avec le message à afficher
il s'affiche correctement ...
ensuite je veux decaler cette table pour faire defiler le texte. d'un pas (pixel) à gauche , mais en gardant le buffer circulaire
pour que le texte sortant revienne sur l'entree ( en boucle fermée)
Le test de decalage sur 64 boucles ou 128 boucle de la 1ere ligne constituée de L11-L10 me parait pourtant OK
voici le *.lst correspondant au decalage des 8 lignes de 2 long=32+32= 64 bits ( pour correspondre aux 8 max 8X8)
Je me suis assuré que mes variables 16 entiers longs et pointeur Depart sont bien alloués en bank0 .
MikroC s'accaparant de 21 bytes R0 à R20
j'espere ne pas avoir d'effets de bords vu que j'occupe la bank0 presque à ras bord ( max=0x005F)
carry[8] et carryx ne sont plus utilisés..
effectivement menage à faire !
projet MikroC
==============================================
07-11-2019
ce matin , je refais un test 100% en C
je teste le decalage sur la 1ere ligne en mode DEBUG .. OK
puis j'implemente le code pour les 8 lignes de 2x32 bits , decalage à gauche de 1 bits et surveillance des bits MSB
pour report de carry vers l'entree (rebouclage bit 31 du " MSB entier long" vers bit 0 du" LSB entier long" (MSB=LSB=64 bits)
code en C
Code : Tout sélectionner
m=0;
GIE_bit=0;
Depart=START_Absolute_Adresse;
//Pointeur_Rotation=START_Absolute_Adresse;
for (i=0;i<8;i++) Carry[i]=0;
do
{
// Test terminal seulement
/*
Depart=START_Absolute_Adresse;
for (j=0;j<8;j++)
{
SPI_Write_To_8x7219(j+1,*(Depart+j),*(Depart+8+j),*(Depart+16+j) ,*(Depart+24+j),
*(Depart+32+j) ,*(Depart+40+j),*(Depart+48+j),*(Depart+56+j));
Delay_ms(50);
}
*/
WordToStr(m,CRam1);
UART1_Write_CText(" indice m = "); UART1_Write_Text(CRam1);CRLF1();
//*****************************
// Shift_ALL_8_Long(); // en ASM
//***************************
// tes 100% en C
if (L10>>31) Carry[0]=1; else Carry[0]=0;
L10=L10<<1;
if (L11>31) Carry[1]=1; else Carry[1]=0;
Carry[1]=L11>>31;
L11=(L11<<1 ) ;
L11=L11 + Carry[0];
L10=L10 + Carry[1];
if (L12>>31) Carry[2]=1; else Carry[2]=0;
L12=L12<<1;
if (L13>>31) Carry[3]=1; else Carry[3]=0;
L13=(L13<<1) ;
L13=L13 + Carry[2];
L12=L12 + Carry[3];
if(L14>>31) Carry[4]=1; else Carry[4]=0;
L14=L14<<1;
if (L15>>31) Carry[5]=1; else Carry[5]=0;
L15=(L15<<1 ) ;
L15=L15 + Carry[4];
L14=L14 + Carry[5];
if(L16>>31) Carry[6]=1; else Carry[6]=0;
L16=L16<<1;
if (L17>>31) Carry[7]=1; else Carry[7]=0;
L17=(L17<<1 );
L17=L17 + Carry[6];
L16=L16 + Carry[7];
if(L18>>31) Carry[8]=1; else Carry[8]=0;
L18=L18<<1;
if(L19>>31) Carry[9]=1; else Carry[9]=0;
L19=(L19<<1 ) ;
L19=L19 + Carry[8];
L18=L18 + Carry[9];
if(L20>>31) Carry[10]=1; else Carry[10]=0;
L20=L20<<1;
if(L21>>31) Carry[11]=1; else Carry[11]=0;
L21=(L21<<1 );
L21= L21 + Carry[10];
L20= L20 + Carry[11];
if(L22>>31) Carry[12]; else Carry[12]=0;
L22=L22<<1;
if(L23>>31) Carry[13]; else Carry[13]=0;
L23=(L23<<1 );
L23=L23 + Carry[12];
L22= L22 + Carry[13];
if(L24>>31) Carry[14]=1; else Carry[14]=0;
L24=L24<<1;
Carry[15]=L25>>31;
if (L25>>31) Carry[15]=1; else Carry[15]=0;
L25=L25 + Carry[14];
L24=L24 + Carry[15];
txt=&TEXTE[0];
pB=START_Absolute_Adresse;
for (ja=0;ja<8;ja++)
{
UART1_Write(TAB);
UART1_Write_Text( Bin2Asc( *(pB+ja))); UART1_Write_Text( Bin2Asc( *(pB+ja+8)));
UART1_Write_Text( Bin2Asc( *(pB+ja+16))); UART1_Write_Text( Bin2Asc( *(pB+ja+24)));
UART1_Write_Text( Bin2Asc( *(pB+ja+32))); UART1_Write_Text( Bin2Asc( *(pB+ja+40)));
UART1_Write_Text( Bin2Asc( *(pB+ja+48))); UART1_Write_Text( Bin2Asc( *(pB+ja+56)));
CRLF1();
}
CRLF1();
Delay_1sec();
m++;
} while(m<64);
CRLF1();
le 1er affichage est OK (avant decalage) .. normal, je viens juste de precharger les registre avec le texte à afficher
et se degrade des le 1er decalage, de plus en plus .. voir au 32em decalage :
... puis semble OK du 62eme au 64em
c'est pas ETONNANT ça ! et surtout incomprehensible (du moins,par moi)
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
appel aux specialistes ASM decalage 96 bits
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
paulfjujo a écrit :Merci ! merçi de te pencher sur mon cas .
lorsque j'initialise ma table de long avec le message à afficher
il s'affiche correctement ...
ensuite je veux decaler cette table pour faire defiler le texte. d'un pas (pixel) à gauche , mais en gardant le buffer circulaire
pour que le texte sortant revienne sur l'entree ( en boucle fermée)
Le test de decalage sur 64 boucles ou 128 boucle de la 1ere ligne constituée de L11-L10 me parait pourtant OK
Test_128_decalages_sur_mot_de_64bits.txt
voici le *.lst correspondant au decalage des 8 lignes de 2 long=32+32= 64 bits ( pour correspondre aux 8 max 8X8)
PIC18F27K42_Test_decalage_8_long_asm_pour_8Max7219.txt
Je me suis assuré que mes variables 16 entiers longs et pointeur Depart sont bien alloués en bank0 .
MikroC s'accaparant de 21 bytes R0 à R20
RAM_mapping_18F27K42.jpg
j'espere ne pas avoir d'effets de bords vu que j'occupe la bank0 presque à ras bord ( max=0x005F)
carry[8] et carryx ne sont plus utilisés..
effectivement menage à faire !
projet MikroC
_PIC18F27K42_Test_defil_8_Reverse_Matrices_Max7219_Horiz_191106.zip
==============================================
07-11-2019
ce matin , je refais un test 100% en C
je teste le decalage sur la 1ere ligne en mode DEBUG .. OK
puis j'implemente le code pour les 8 lignes de 2x32 bits , decalage à gauche de 1 bits et surveillance des bits MSB
pour report de carry vers l'entree (rebouclage bit 31 du " MSB entier long" vers bit 0 du" LSB entier long" (MSB=LSB=64 bits)
code en CCode : Tout sélectionner
m=0;
GIE_bit=0;
Depart=START_Absolute_Adresse;
//Pointeur_Rotation=START_Absolute_Adresse;
for (i=0;i<8;i++) Carry[i]=0;
do
{
// Test terminal seulement
/*
Depart=START_Absolute_Adresse;
for (j=0;j<8;j++)
{
SPI_Write_To_8x7219(j+1,*(Depart+j),*(Depart+8+j),*(Depart+16+j) ,*(Depart+24+j),
*(Depart+32+j) ,*(Depart+40+j),*(Depart+48+j),*(Depart+56+j));
Delay_ms(50);
}
*/
WordToStr(m,CRam1);
UART1_Write_CText(" indice m = "); UART1_Write_Text(CRam1);CRLF1();
//*****************************
// Shift_ALL_8_Long(); // en ASM
//***************************
// tes 100% en C
if (L10>>31) Carry[0]=1; else Carry[0]=0;
L10=L10<<1;
if (L11>31) Carry[1]=1; else Carry[1]=0;
Carry[1]=L11>>31;
L11=(L11<<1 ) ;
L11=L11 + Carry[0];
L10=L10 + Carry[1];
if (L12>>31) Carry[2]=1; else Carry[2]=0;
L12=L12<<1;
if (L13>>31) Carry[3]=1; else Carry[3]=0;
L13=(L13<<1) ;
L13=L13 + Carry[2];
L12=L12 + Carry[3];
if(L14>>31) Carry[4]=1; else Carry[4]=0;
L14=L14<<1;
if (L15>>31) Carry[5]=1; else Carry[5]=0;
L15=(L15<<1 ) ;
L15=L15 + Carry[4];
L14=L14 + Carry[5];
if(L16>>31) Carry[6]=1; else Carry[6]=0;
L16=L16<<1;
if (L17>>31) Carry[7]=1; else Carry[7]=0;
L17=(L17<<1 );
L17=L17 + Carry[6];
L16=L16 + Carry[7];
if(L18>>31) Carry[8]=1; else Carry[8]=0;
L18=L18<<1;
if(L19>>31) Carry[9]=1; else Carry[9]=0;
L19=(L19<<1 ) ;
L19=L19 + Carry[8];
L18=L18 + Carry[9];
if(L20>>31) Carry[10]=1; else Carry[10]=0;
L20=L20<<1;
if(L21>>31) Carry[11]=1; else Carry[11]=0;
L21=(L21<<1 );
L21= L21 + Carry[10];
L20= L20 + Carry[11];
if(L22>>31) Carry[12]; else Carry[12]=0;
L22=L22<<1;
if(L23>>31) Carry[13]; else Carry[13]=0;
L23=(L23<<1 );
L23=L23 + Carry[12];
L22= L22 + Carry[13];
if(L24>>31) Carry[14]=1; else Carry[14]=0;
L24=L24<<1;
Carry[15]=L25>>31;
if (L25>>31) Carry[15]=1; else Carry[15]=0;
L25=L25 + Carry[14];
L24=L24 + Carry[15];
txt=&TEXTE[0];
pB=START_Absolute_Adresse;
for (ja=0;ja<8;ja++)
{
UART1_Write(TAB);
UART1_Write_Text( Bin2Asc( *(pB+ja))); UART1_Write_Text( Bin2Asc( *(pB+ja+8)));
UART1_Write_Text( Bin2Asc( *(pB+ja+16))); UART1_Write_Text( Bin2Asc( *(pB+ja+24)));
UART1_Write_Text( Bin2Asc( *(pB+ja+32))); UART1_Write_Text( Bin2Asc( *(pB+ja+40)));
UART1_Write_Text( Bin2Asc( *(pB+ja+48))); UART1_Write_Text( Bin2Asc( *(pB+ja+56)));
CRLF1();
}
CRLF1();
Delay_1sec();
m++;
} while(m<64);
CRLF1();
le 1er affichage est OK (avant decalage) .. normal, je viens juste de precharger les registre avec le texte à afficher
et se degrade des le 1er decalage, de plus en plus .. voir au 32em decalage :
... puis semble OK du 62eme au 64em
c'est pas ETONNANT ça ! et surtout incomprehensible (du moins,par moi)
Test_Decalage_64bits_en_C_tombe_en_marche_vers_la_fin_191107.jpg
je suspecte vraiment un effet de bord à cause du compilo à cause de l'usage la bank0 où sont logés mes 8 entiers longs .
quand à suivre au debugger (software) tout ce qui se passe , c'est trop compliqué
et il me faudrait un ICD tool..
je dois peut etre deplacer les 8 entiers long au debut d'une bank RAM non utilisée ?
appel aux specialistes ASM decalage 96 bits
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
je suspecte vraiment un effet de bord à cause du compilo à cause de l'usage la bank0 où sont logés mes 8 entiers longs .
quand à suivre au debugger (software) tout ce qui se passe , c'est trop compliqué
et il me faudrait un ICD tool..
je dois peut etre deplacer les 8 entiers long au debut d'une bank RAM non utilisée ?
quand à suivre au debugger (software) tout ce qui se passe , c'est trop compliqué
et il me faudrait un ICD tool..
je dois peut etre deplacer les 8 entiers long au debut d'une bank RAM non utilisée ?
appel aux specialistes ASM decalage 96 bits
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
doublon
doublon
impossible d'effacer un doublon , sans tout effacer ?
===================================
et je reviens
au vu de
"View"
"Statistics Variables"
j'ai quelques raisons de m'inquiéter
Que viens faire ma table de caracteres à l'adresse 0x005B alors que la bank 0 est limitée à 0x005F ?
Est-ce que cet outil mikroC est fiable ?
je vais m'enquerir aupres de MikroE la dessus !
ce qui n'empeche pas de donner votre avis ...
Dans quelle galère je me suis fourré .. j'aurais du acheter les vieilles matrices unitaires à connections verticales !
doublon
impossible d'effacer un doublon , sans tout effacer ?
===================================
et je reviens
au vu de
"View"
"Statistics Variables"
j'ai quelques raisons de m'inquiéter
Que viens faire ma table de caracteres à l'adresse 0x005B alors que la bank 0 est limitée à 0x005F ?
Est-ce que cet outil mikroC est fiable ?
je vais m'enquerir aupres de MikroE la dessus !
ce qui n'empeche pas de donner votre avis ...
Dans quelle galère je me suis fourré .. j'aurais du acheter les vieilles matrices unitaires à connections verticales !
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
appel aux specialistes ASM decalage 96 bits
Bonsoir paulfjujo, et tout le forum,
Comme ton cas m'intéresse, et que je travaille pas demain je vais écrire un programme pour rotation de bit, je partirais sur euh... Pic18F26K22 (ton pic préféré si je me trompe pas)
Le programme sera testé avant diffusion avec MPLAB, diffusion surement en fin de soirée vers des heures très .......
A+
Comme ton cas m'intéresse, et que je travaille pas demain je vais écrire un programme pour rotation de bit, je partirais sur euh... Pic18F26K22 (ton pic préféré si je me trompe pas)
Le programme sera testé avant diffusion avec MPLAB, diffusion surement en fin de soirée vers des heures très .......
A+
appel aux specialistes ASM decalage 96 bits
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
je me demande d'ailleurs, si mes problemes ne sont pas liés à l'usage du 18F27K42 ...
car mes precedents tests etaitent sur 18F26K22 !
j'ai choisi le 18F27K42 because 8K de RAM et 128K de flash..
je referai aussi les memes tests avec une base 18F26K22 , en attendant de tes nouvelles .
Temps-x a écrit :Bonsoir paulfjujo, et tout le forum,
Comme ton cas m'intéresse, et que je travaille pas demain je vais écrire un programme pour rotation de bit, je partirais sur euh... Pic18F26K22 (ton pic préféré si je me trompe pas)
Le programme sera testé avant diffusion avec MPLAB, diffusion surement en fin de soirée vers des heures très .......
A+
je me demande d'ailleurs, si mes problemes ne sont pas liés à l'usage du 18F27K42 ...
car mes precedents tests etaitent sur 18F26K22 !
j'ai choisi le 18F27K42 because 8K de RAM et 128K de flash..
je referai aussi les memes tests avec une base 18F26K22 , en attendant de tes nouvelles .
appel aux specialistes ASM decalage 96 bits
Bonsoir,
J'ai pas trop eu le temps de regarder ...
Je vois des "btfsc STATUS,0,1" c'est à dire "btfsc STATUS,0,BANKED"
la case ram testée n'est pas forcément STATUS, car cela dépend de la valeur de BSR
Il faut faire "btfsc STATUS,0,0" c'est à dire "btfsc STATUS,0,ACCESS"
Les registres principaux du pic sont en mémoire access en fin de ram, donc toujours accessibles quel que soit la valeur de BSR
La bank0 va de 0x000 à 0X0FF, mais seule la partie avant 0x060 est en mémoire access
Pour le 18F27K42, La "bank" access couvre 0x0000 à 0x005F et 0x3F60 à 0x3FFF
Si le compilateur le permet, il vaut mieux écrire selon le type d'instruction
W ou ACCESS au lieu de 0
F ou BANKED au lieu de 1
J'ai pas trop eu le temps de regarder ...
Je vois des "btfsc STATUS,0,1" c'est à dire "btfsc STATUS,0,BANKED"
la case ram testée n'est pas forcément STATUS, car cela dépend de la valeur de BSR
Il faut faire "btfsc STATUS,0,0" c'est à dire "btfsc STATUS,0,ACCESS"
Les registres principaux du pic sont en mémoire access en fin de ram, donc toujours accessibles quel que soit la valeur de BSR
La bank0 va de 0x000 à 0X0FF, mais seule la partie avant 0x060 est en mémoire access
Pour le 18F27K42, La "bank" access couvre 0x0000 à 0x005F et 0x3F60 à 0x3FFF
Si le compilateur le permet, il vaut mieux écrire selon le type d'instruction
W ou ACCESS au lieu de 0
F ou BANKED au lieu de 1
appel aux specialistes ASM decalage 96 bits
Bonsoir paulfjujo, et tout le forum,
Je viens de regarder tous les posts, avec les divers proposition apporté, et j'en conclus, aucune ne fonctionne après test sous MPLAB
Il y a bien rotation sur les divers proposition, mais une fois 1 tour fait, c'est la catastrophe .
Carry qui est un avantage au départ devient un handicape par la suite, conclusion, il ne faut pas utiliser Carry
Je suis dessus actuellement.... depuis hier.... pouah pas simple ..... je te donnerais des nouvelles par la suite, c'est pas simple ... a faire, mais marrant.
A+
Je viens de regarder tous les posts, avec les divers proposition apporté, et j'en conclus, aucune ne fonctionne après test sous MPLAB
Il y a bien rotation sur les divers proposition, mais une fois 1 tour fait, c'est la catastrophe .
Carry qui est un avantage au départ devient un handicape par la suite, conclusion, il ne faut pas utiliser Carry
Je suis dessus actuellement.... depuis hier.... pouah pas simple ..... je te donnerais des nouvelles par la suite, c'est pas simple ... a faire, mais marrant.
A+
appel aux specialistes ASM decalage 96 bits
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir TempsX,
c'est pour ça que je parle du decalage arithmetique (au post #40)
qui existait sur les vieux µProc tel que le 6800
on pousse un bit à l'entree .. le dernier bit tombe dans le carry SANS rebouclage sur l'entree
apres le carry on s'en debrouille ou pas .. mais on peut le gerer.
je pense qu'il va falloir traiter ces decalages avec des combinaison RLNCF et RLCF
ou avoir un tableau ou un byte pouvant stoker les 8 carry des 8 bytes decalés et les remettre en bonne place ensuite
une autre idée serait de ne manipuler que des pointeurs ! fini les decalages ..
mais c'est assez difficile de s'imaginer les details.
Pour savoir comment programmer l'algorythme, il faut que ça tourne deja dans l'imaginaire
et un logigramme ne peut pas tout faire/expliquer ..
une animation 3D ?
Bon, assez dissgressé, j'ai le boulard qui va exploser !
A+
c'est pour ça que je parle du decalage arithmetique (au post #40)
qui existait sur les vieux µProc tel que le 6800
on pousse un bit à l'entree .. le dernier bit tombe dans le carry SANS rebouclage sur l'entree
apres le carry on s'en debrouille ou pas .. mais on peut le gerer.
je pense qu'il va falloir traiter ces decalages avec des combinaison RLNCF et RLCF
ou avoir un tableau ou un byte pouvant stoker les 8 carry des 8 bytes decalés et les remettre en bonne place ensuite
une autre idée serait de ne manipuler que des pointeurs ! fini les decalages ..
mais c'est assez difficile de s'imaginer les details.
Pour savoir comment programmer l'algorythme, il faut que ça tourne deja dans l'imaginaire
et un logigramme ne peut pas tout faire/expliquer ..
une animation 3D ?
Bon, assez dissgressé, j'ai le boulard qui va exploser !
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 95 invités