Convertir un Byte en Word

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Convertir un Byte en Word

Message par SPH »

Imaginez la valeur "Look.b" qui lit le Byte 'A2'. Il s'agit de -94 mais si les bits correspondants etaient dans un Word, il s'agirait de 162.
Alors ma question est : comment passer la valeur absolue d'un Byte dans un Word ?

Moi, j'ai trouvé ceci :

Code : Tout sélectionner

look2.w=-look.b!%11111110
Y a t'il mieux ? :?
Dernière modification par SPH le dim. 30/avr./2006 20:14, modifié 1 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

va voir ici http://purebasic.hmt-forum.com/viewtopi ... highlight=

il y a MakeWord() un peu plus bas... :wink:
Image
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Maintenant que je comprend un peu mieux l'assembleur, je proposerai comme ca.

Code : Tout sélectionner

x.b = -92
y.w
!mov al, [v_x]
!mov [v_y], ax
Debug y
Le problème est que tu dis que le résultat doit être 162, que je trouve 166 avec ta méthode, et 164 avec la mienne.
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

AWEAR a écrit :Maintenant que je comprend un peu mieux l'assembleur, je proposerai comme ca.

Code : Tout sélectionner

x.b = -92
y.w
!mov al, [v_x]
!mov [v_y], ax
Debug y
Le problème est que tu dis que le résultat doit être 162, que je trouve 166 avec ta méthode, et 164 avec la mienne.
pour ta methode, je propose de rajouter apres 'y.w' :

Code : Tout sélectionner

!xor  ax, ax
ou (plus rapide) :

Code : Tout sélectionner

!xor  ah, ah
J'ai corrigé mon premier post car en recopiant, j'ai mis -92 alors que c'etait -94 (A2 en hexa)
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

ou

Code : Tout sélectionner

x.b = -92
y.w = x & 255
Debug y
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

flaith a écrit :ou

Code : Tout sélectionner

x.b = -92
y.w = x & 255
Debug y
J'ai toujours utilisé cette méthode, elle est rapide et me convient comme cela :)
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

RESULTATS

Message par SPH »

Code : Tout sélectionner

x.b = -92 
y.w 

;Goooooooooooo 
temps = GetTickCount_() 
For chrono = 1 To 100000000
;Goooooooooooo 



;STOOOOOOOOOOP 
Next :temps = GetTickCount_() - temps 
Debug ";Le temps mis est de " + Str(temps) + "ms"; : End;+T+I+M+E+R+ 
;STOOOOOOOOOOP 
; R E S U L T A T S (testé 2 fois) :

; SPH
; y.w=-x.b!%11111110
;Le temps mis est de 8156ms
;Le temps mis est de 8188ms


; AWEAR (grand vainqueur)
; !mov al, [v_x]
; !mov [v_y], ax
;Le temps mis est de 4031ms
;Le temps mis est de 3969ms

; !xor ah, ah
; !mov al, [v_x]
; !mov [v_y], ax
;Le temps mis est de 3812ms
;Le temps mis est de 3766ms

; !xor ax, ax
; !mov al, [v_x]
; !mov [v_y], ax
;Le temps mis est de 3782ms
;Le temps mis est de 3828ms

; flaith & KarLKoX
; y.w = x & 255
;Le temps mis est de 7390ms
;Le temps mis est de 7500ms
AWEAR
Messages : 264
Inscription : ven. 28/oct./2005 8:20
Localisation : Mayotte ( 976 ), Océan Indien, France

Message par AWEAR »

Tadam, Awear vainqueur par K.O :lol:
La vie est une rose dont il faut accepter les épines, mais la mienne est fannée, arrosée par le goût de mes larmes. (Soprano)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

attention SPH pour faire un speedtest il ne faut jamais activer le debugger sans quoi les résultats sont pas forcement realistes, surtout lors de test PB vs ASM.

utilise juste un MessageRequester() à la place du Debug Str(temps) + "ms".

:wink:
Image
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Debuggueur desactivé :


; R E S U L T A T S (testé 2 fois) :

; SPH
; y.w=-x.b!%11111110
;Le temps mis est de 1375
;Le temps mis est de 1469


; AWEAR (grand vainqueur quand meme)
; !mov al, [v_x]
; !mov [v_y], ax
;Le temps mis est de 829
;Le temps mis est de 797


; flaith & KarLKoX
; y.w = x & 255
;Le temps mis est de 1266
;Le temps mis est de 1188
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

le '; !xor ah, ah' est obligatoire, sinon il peut y avoir des problemes car mov al,[xx] ne change pas la valeur de ah.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Et on peut avoir une estimation pour l'arrivée des nombres non signés en PB ?

Dri ^^
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Message par Fred »

Ce n'est pas au programme pour l'instant.
Répondre