Débutant

Pour discuter de l'assembleur
Mesa
Messages : 1093
Inscription : mer. 14/sept./2011 16:59

Débutant

Message par Mesa »

Il y a longtemps que je n'ai pas programmé en assembleur et "jamais" sous PB et puis il manquait une rubrique pour le deboguage...

Quelqu'un peut-il me faire fonctionner ce code (et me dire ce qui cloche si possible :) )

Code : Tout sélectionner

DataSection
  monthlen:
  Data.b 31,  28,  31,  30,  31,  30,  31,  31,  30,  31,  30,  31, 31,  29,  31,  30,  31,  30,  31,  31,  30,  31,  30,  31
EndDataSection

Global debugexx=0

Procedure MDToDayNum(M, D, LeapYearFlag)
  
  ;Static monthlength;pas réussi à faire fonctionner avec le MOVZX même avec so_nomprocedure.v_nominfo

  Protected.i monthlength  ;integer est-il le bon choix pour 32b et 64b ?
  monthlength=?monthlen
  ;Debug monthlength
  
  EnableASM
  MOV	ebx, LeapYearFlag				; ebx := LeapYearFlag
  MOV	edx, M
  ;Je veux : eax := MonthLen[M - 1 + LeapYearFlag]
  ;MOVZX	eax, [p.v_monthlength + edx -1 +ebx] ; pourquoi ça ne fonctionne pas ?
  MOVZX	eax, byte[p.v_monthlength] ; essai de deboggage
  
  ;------------------------
  MOV	debugexx, eax	
  ; Debug debugexx   ;attention debug change le eax
  ;------------------------	
  DisableASM
  ProcedureReturn
EndProcedure

Debug MDToDayNum(1, 2, 1) ; mauvais
Debug PeekB(?monthlen)    ; bon
Debug debugexx            ; mauvais

Mesa.
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Débutant

Message par PAPIPP »

bonjour Mesa

Peut-être comme cela si j'ai bien compris
je n'ai gardé la section data que pour le debug.
Mais à quoi sert le paramètre D ? le jour du mois ? La formule complète serait opportune.

Code : Tout sélectionner

DataSection
	monthlen:
	Data.b 31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31
EndDataSection
Global debugexx=0
Procedure MDToDayNum(M,D,LeapYearFlag)
	;Static monthlength;pas réussi à faire fonctionner avec le MOVZX même avec so_nomprocedure.v_nominfo
; 	Protected.i monthlength  ;integer est-il le bon choix pour 32b et 64b ?
; 	monthlength=?monthlen
; 	Debug mp_h(monthlength,32,222)
	;Debug monthlength
		EnableASM
  LEA ebx,[monthlen]
  MOV edx,0
  XOR eax,eax
	MOV eax,LeapYearFlag            ; ebx := LeapYearFlag
	MOV edx,M
	SUB edx,2
	ADD eax,edx
	XLATB
	;Je veux : eax := MonthLen[M - 1 + LeapYearFlag]
	;MOVZX   eax, [p.v_monthlength + edx -1 +ebx] ; pourquoi ça ne fonctionne pas ?
	
	;------------------------
	MOV debugexx,eax
	; Debug debugexx   ;attention debug change le eax
	;------------------------
	DisableASM
	ProcedureReturn
	!monthlen:
	!DB 31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31
EndProcedure

Debug MDToDayNum(1,2,1) ; bon
Debug PeekB(?monthlen)    ; bon
Debug debugexx            ;bon

Debug MDToDayNum(2,2,1) ; bon
Debug PeekB((?monthlen)+1)    ; bon
Debug debugexx            ; bon

Debug MDToDayNum(4,2,1) ; bon
Debug PeekB((?monthlen)+3)    ; bon
Debug debugexx            ; bon

Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Mesa
Messages : 1093
Inscription : mer. 14/sept./2011 16:59

Re: Débutant

Message par Mesa »

Merci bien :D

En fait j'essaie de traduire ce code http://mikhajduk.houa.org/EN/index.php?f=Links rubrique projects calendar trouvé par kernadec ici http://www.purebasic.fr/french/viewtopi ... =3&t=14026

La traduction de la fonction isleapyear c'est bien passé, maintenant j'essaie de traduire MDToDayNum(M, D, LeapYearFlag)

[Edition] J'ai réussi, je poste un fil nommé rang du jour

Mesa.
Mesa
Messages : 1093
Inscription : mer. 14/sept./2011 16:59

Re: Débutant

Message par Mesa »

Je dois être miro aujourd'hui mais je ne trouve pas e fichier PureBasic.asm.

Il est où ?

Merci.

M.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Débutant

Message par kernadec »

bonjour Mesa
pour purebasic.asm
je l'ai a la racine du répertoire Purebasic
et dans Purebasic\Examples\Sources

Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Débutant

Message par kernadec »

bonjour Mesa
j'ai contacté Mikołaj Hajduk pour lui demander une version de sa bibliothèque dans un autre langage
il m'as répondu qu'il allait mettre sur son site une version en langage C dans quelques temps.

Vraiment sympa Mikołaj

Cordialement
Répondre