Vous n'êtes pas identifié.
Bonjour j'ai commencé à apprndre l'assembleur et j'ai quelques questions :
existe-t-il une fonction donnant un nombre aléatoire (comme random) ?
comment redémarrer la calculatrice (j'ai essayé l'interruption 19h mais ca avais pas l'air de marcher) ?
connaissez vous d'autres bons tutoriaux en assembleur (je connais deja http://opecheux.free.fr/abcp) ?
merci
Hors ligne
ben moi g tout appris sur abcp ensuite j'ai experimenté moi-même ^^
sinon pour le generateur de nombre "aleatoire" faut le faire soi meme (chaud !) ou alors tu cherches sur le net.
je me souviens qu'il y en avait un avec le Art Of Assembly je dois l'avoir... si oui je le mets sur le forum
enfin pour rebooter il suffit juste de faire un jump à l'adresse FFFF:0000, mais apparament certains ont des problemes en le faisant.
Hors ligne
d'acord merci je vais essayer ca pour le reboot
sinon pour le nombre aléatoire je crois que je vais essayer l'horloge interne (mais bon c'est pas la joie !)
c'est quoi le Art of Assembly ?
Hors ligne
http://webster.cs.ucr.edu/AoA/DOS/index.html
le art of assembly est un gros bouquin electronique en anglais sur l'assembleur x86
il y a trois versions: windows(32bits), linux(32bits bien sur ^^), et DOS(16bits) celui qui peut nous interesser dans le cadre de la graph100.
ce bouquin n'est pas juste fait pour apprendre l'assembleur, il est aussi une reference pour la programmation PC. Ensuite il y a des chapitres qui servent ou non: il m'arrive assez souvent de me referer aux chapitres sur les interruptions BIOS et DOS.
la Art Of Assembly language est "livré" avec une bibliotheque contenant de fonctions bien utiles (sous forme de code source) dont la generation de nombres aleatoires, mais aussi des fonctions d'ouverture/fermeture de fichiers par exemple.
Hors ligne
Tiens moi j'ai appris avec ca :
c simple et bien expliqué...
par contre ya pas d'exemple, donc fo experimenter par soi meme :
http://www-ipst.u-strasbg.fr/pat/memo8088.htm
Hors ligne
merci beaucoup je lirai ça quand j'aurai le temps ( et le courage!)
mais pour aller à l'adresse FFFF:0000 je dois juste faire un jmp ou alors je dois écrire qqch à cette adresse ?
au fait je me demandais si Swifter pourrais me passer les sources de chess (je vais pas les diffuser, c'est juste pour voir comment c'est fait : représenter l'échiquier, recherche des mats ...)
merci
Hors ligne
faut faire un jump à cette adresse
Hors ligne
merci ca marche !
quant au nombre aléatoire ...
je crois que je vais pas faire de programme en asm pur !!
Hors ligne
bonne résolution
Hors ligne
avec mon émulateur y doit y avoir un démineur en asm avec un générateur aléatoire voici le code (basé sur celui de borland ou visual je sais plus) :
Rand:
push si ;
push bx ;
mov ax,WORD[wRandLO] ;
mov dx,WORD[wRandHI] ;
mov bx,0x43FD ;
mov cx,0x0003 ;
xchg si,ax ;
xchg dx,ax ;
mul bx ;
xchg cx,ax ;
mul si ;
add ax,cx ;
xchg si,ax ;
mul bx ;
add dx,si ;
add ax,0x9EC3 ;
adc dx,0x0026 ;
mov WORD[wRandLO],ax ;
mov WORD[wRandHI],dx ;
mov ax,dx ;
pop bx ;
pop si ;
ret ;
le nombre est récupéré dans ax
wRandLO et wRandHi sont à initialisé au début du prog avec l'horloge par exemple.
Hors ligne
j'en ai un assez simple en C, qui vient des sources de la librairie C digital mars
#include <stdlib.h> #include <time.h> static unsigned long int next = 1; #define step_next (next = next * 1103515245 + 12345) int __CLIB rand(void) { step_next; return ((unsigned int) (next / 0x10000) & 0x7FFF); } int __CLIB random (int num) // negative arguments treated // as unsigned { step_next; return ((long) (next / 0x10000) * (unsigned)num) >> 16; } void __CLIB srand(unsigned int seed) { next = seed; } void __CLIB randomize (void) { next = (unsigned long)time(NULL); }
il est plus facile a comprendre, mais par contre c assez lourd de gerer les long en asm
Hors ligne
hum passer les sources de chess...
je sais ps je vais voir...
le probleme c que c le gros bordel et que tu av rien comprendre...
a moins de t'acharner comme un taré...
enfin passe ton email je vais t'envoyer ca
Hors ligne
bah c'est pas grave si c'est compliqué, je suis pret à m'acharner dessus
pour mon adresse e-mail c'est stephane.bijakowski@wanadoo.fr
merci
Hors ligne
bon c envoyé...
si ya un probleme dis le moi
Hors ligne
le code ASM que j'ai mis correspond en fait à cette formule :
next = next * 214013L+2531011L;
return (next>>16)&0xFFFF;
avec "simplification" de la multiplication des long (les cas particuliers sont virés)
Hors ligne
a noter ke ca vient de chez moi ;-)
u-strasbg.....
héhé
Hors ligne