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