MULO Le 06/08/2002 à 18:09 Oui oui je connais l'algo d'Euclide. c'est vrai ca peut etre moins compliqué
Maintenant mon probleme c'est le PPCM car pour des nombres comme 500 et 1000 pour le PPCM il faut les multiplier et diviser par le PGCD et 500*1000 ca fait trop (enfin je sais pas... la TI accepte des chiffres plus grand ?)
Sinon, voila le fichier .s
.file "spelab.c"
#NO_APP
.data
tigcc_compiled.:
.set _A_LINE,0xA000
#APP
/* Main Startup Code */
.even
.set __min_num_ROM_CALLs__,0x3CC
.ifdef __test_for_calc_num__
.err
.endif
.set __test_for_calc_num__,1
.xdef _main
_main:
move.l 0xC8,%a0
/* Calculator Detection */
moveq #1,%d0
move.l %a0,%d1
and.l #0x400000,%d1
jbne __calc_in_d0__
clr.w %d0
move.l (%a0,0x2F*4),%a1 /* ScrRect */
cmp.b #200,2(%a1)
jblt __calc_in_d0__
moveq #3,%d0
__calc_in_d0__:
cmp.w #__test_for_calc_num__,%d0
jbeq __calc_is_OK__
pea.l __wrong_calc__
jbra __display_message_and_exit__
__calc_is_OK__:
/* Minimum AMS Version Check */
cmp.l #__min_num_ROM_CALLs__,(%a0,-4) /* TIOS_entries */
jbcc __ams_version_is_OK__
__ams_version_not_OK__:
pea.l __ams_too_low__
__display_message_and_exit__:
move.l (%a0,0xE6*4),%a0 /* ST_helpMsg */
jsr (%a0)
addq.l #4,%sp
jmp _ROM_CALL_51 /* ngetchx */
__ams_version_is_OK__:
jbsr __main
rts
.xdef __save__sp__
.even
__save__sp__:
.long 0
.even
__wrong_calc__:
.asciz "Wrong calculator model"
.even
__ams_too_low__:
.ascii "AMS "
.ascii "1.01"
.asciz " or higher needed"
.even
#NO_APP
.globl _comment
.data
_comment:
.ascii "SpeLab v0.0.1 by MULO " //La grande classe
#APP
.xdef _ti92plus
/* Include Patch: _detect_calc_ */
/* Include Patch: _test_for_specific_calc_ */
/* Include Patch: _test_for_92p_ */
/* Include Patch: _dont_need_calculator_var_ */
/* Include Patch: _MIN_AMS_required_ */
/* Include Patch: _MIN_AMS_1_01_ */
/* Include Patch: doors_patch */
/* Include Patch: no_retval */
/* Include Patch: save_the_sp */
/* Include Patch: doors_no_very_simple_main */
/* Include Patch: complex_main */
.set MT_TEXT,0x8000
.set MT_XREF,0x9000
.set MT_ICON,0xA000
.set MT_CASCADE,0x4000
.data
.even
.LC15:
.word 40
.word 20
.word 200
.word 100
#NO_APP
.LC0:
.ascii "SPELAB "
.LC1:
.ascii "1.Base (conversion de nombres) "
.LC2:
.ascii "2.Systeme (avec PGCD et PPCM) "
.LC3:
.ascii "a.systeme avec a+b=? et PGCD(a,b)=? "
.LC4:
.ascii "b.systeme avec axb=? et PGCD(a,b)=? "
.LC5:
.ascii "c.systeme avec a+b=? et PPCM(a,b)=? "
.LC6:
.ascii "d.systeme avec axb=? et PPCM(a,b)=? "
.LC7:
.ascii "e.systeme avec PGCD(a,b)=? et PPCM(a,b)=? "
.LC8:
.ascii "3.Autre (Euclide, Nbre 1er) "
.LC9:
.ascii "a.Algorithme d'Euclide "
.LC10:
.ascii "b.Nombre premier ? "
.LC11:
.ascii "4.About "
.LC12:
.ascii "5.Quitter "
.LC14:
.ascii "A propos de SPELAB "
.LC16:
.ascii "SPELAB v0.2.C "
.LC17:
.ascii "By MULO "
.LC18:
.ascii "6 Aout 2002 "
.LC19:
.ascii "Programme pour la specialit351 "
.LC20:
.ascii " Maths de terminale: "
.LC21:
.ascii "PGCD, PPCM, Nbre premier "
.LC22:
.ascii "Algorithme d'Euclide "
.LC23:
.ascii "PPCM = %d "
.LC13:
.ascii "Ca marche pas encore :þ "
.even
.globl __main
__main:
#APP
move.l %sp,__save__sp__
#NO_APP
link.w %a6,#-108
movm.l #0x1f3c,-(%sp)
clr.w -98(%a6)
move.w #130,%d5
move.w %d5,-100(%a6)
move.w %d5,%d4
move.w %d5,-102(%a6)
move.w %d5,-104(%a6)
move.w #50,-106(%a6)
move.w %d5,%d6
move.w %d5,-108(%a6)
move.w #60,%a5
moveq.l #70,%d7
.L12:
jbsr _ROM_CALL_19E
move.w #2,-(%sp)
lea _ROM_CALL_18F,%a3
jbsr (%a3)
move.w #1,-(%sp)
pea .LC0
move.w #10,-(%sp)
move.w #84,-(%sp)
lea _ROM_CALL_1A9,%a2
jbsr (%a2)
move.w #1,-(%sp)
jbsr (%a3)
move.w #1,-(%sp)
pea .LC1
move.w #30,-(%sp)
move.w #5,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
pea .LC2
move.w #40,-(%sp)
move.w #5,-(%sp)
jbsr (%a2)
lea (34,%sp),%sp
clr.w -(%sp)
jbsr (%a3)
move.w #1,-(%sp)
pea .LC3
move.w -100(%a6),-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
pea .LC4
move.w %d5,-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
pea .LC5
move.w -102(%a6),-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
lea (32,%sp),%sp
move.w #1,-(%sp)
pea .LC6
move.w %d4,-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
pea .LC7
move.w -104(%a6),-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
jbsr (%a3)
move.w #1,-(%sp)
pea .LC8
move.w -106(%a6),-(%sp)
move.w #5,-(%sp)
jbsr (%a2)
lea (32,%sp),%sp
clr.w -(%sp)
jbsr (%a3)
move.w #1,-(%sp)
pea .LC9
move.w -108(%a6),-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
pea .LC10
move.w %d6,-(%sp)
move.w #10,-(%sp)
jbsr (%a2)
move.w #1,-(%sp)
jbsr (%a3)
move.w #1,-(%sp)
pea .LC11
move.w %a5,-(%sp)
move.w #5,-(%sp)
jbsr (%a2)
lea (34,%sp),%sp
move.w #1,-(%sp)
pea .LC12
move.w %d7,-(%sp)
move.w #5,-(%sp)
jbsr (%a2)
jbsr _ROM_CALL_51
move.w %d0,%d3
lea (10,%sp),%sp
cmp.w #49,%d0
jbeq .L15
.L5:
cmp.w #50,%d3
jbeq .L16
.L6:
cmp.w #51,%d3
jbeq .L17
.L7:
cmp.w #52,%d3
jbeq .L9
cmp.w #97,%d3
jbeq .L9
.L8:
cmp.w #53,%d3
jbeq .L11
cmp.w #264,%d3
jbne .L2
.L11:
move.w #1,-98(%a6)
jbra .L2
.even
.L9:
pea .LC14
move.w #4120,-(%sp)
pea .LC15
lea (-96,%a6),%a3
move.l %a3,-(%sp)
jbsr _ROM_CALL_1E
move.w #1,-(%sp)
move.l %a3,-(%sp)
lea _ROM_CALL_13,%a2
jbsr (%a2)
move.l %a3,-(%sp)
jbsr _ROM_CALL_1
move.w #2,-(%sp)
move.l %a3,-(%sp)
jbsr (%a2)
pea .LC16
move.w #4,-(%sp)
move.w #22,-(%sp)
move.l %a3,-(%sp)
lea _ROM_CALL_26,%a4
jbsr (%a4)
lea (42,%sp),%sp
clr.w -(%sp)
move.l %a3,-(%sp)
jbsr (%a2)
pea .LC17
move.w #15,-(%sp)
move.w #65,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
pea .LC18
move.w #23,-(%sp)
move.w #58,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
pea .LC19
move.w #32,-(%sp)
move.w #4,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
lea (38,%sp),%sp
move.l #.LC20,(%sp)
move.w #40,-(%sp)
move.w #4,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
pea .LC21
move.w #48,-(%sp)
move.w #4,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
pea .LC22
move.w #56,-(%sp)
move.w #4,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
lea (36,%sp),%sp
move.w #500,-(%sp)
move.w #1000,-(%sp)
jbsr ppcm
move.w %d0,-(%sp)
pea .LC23
lea (-20,%a6),%a2
move.l %a2,-(%sp)
jbsr _ROM_CALL_53
move.l %a2,-(%sp)
move.w #62,-(%sp)
move.w #4,-(%sp)
move.l %a3,-(%sp)
jbsr (%a4)
jbsr _ROM_CALL_51
move.l %a3,-(%sp)
jbsr _ROM_CALL_B
lea (30,%sp),%sp
jbra .L8
.even
.L17:
move.w #130,%d5
move.w %d5,-100(%a6)
move.w %d5,%d4
move.w %d5,-102(%a6)
move.w %d5,-104(%a6)
move.w #50,-106(%a6)
move.w #60,-108(%a6)
moveq.l #68,%d6
move.w #76,%a5
moveq.l #86,%d7
jbra .L7
.even
.L16:
move.w #50,-100(%a6)
moveq.l #58,%d5
move.w #66,-102(%a6)
moveq.l #74,%d4
move.w #82,-104(%a6)
move.w #90,-106(%a6)
move.w #130,%d6
move.w %d6,-108(%a6)
move.w #100,%a5
moveq.l #110,%d7
jbra .L6
.even
.L15:
pea .LC13
jbsr _ROM_CALL_E6
move.w #130,%d5
move.w %d5,-100(%a6)
move.w %d5,%d4
move.w %d5,-102(%a6)
move.w %d5,-104(%a6)
move.w #50,-106(%a6)
move.w %d5,%d6
move.w %d5,-108(%a6)
move.w #60,%a5
moveq.l #70,%d7
addq.l #4,%sp
jbra .L5
.even
.L2:
tst.w -98(%a6)
jbeq .L12
movm.l -144(%a6),#0x3cf8
unlk %a6
rts
Ancien patriarche nostalgique de Ti-fr v1.