Aller au contenu

Des gens qui connaissent l'assembleur 8086 ?


eclipz

Messages recommandés

C'est un AND et pas un NAND !

 

Je suppose que le but de l'exercice est de faire activer votre routine au déclenchement d'une IRQ et surtout de vérifier que vous n'oubliez pas de rendre la main à la fin ;).

 

Explications ici : sur les FIRQ du 6809

 

Edit : grillé par Digital-Jedi

 

Je ne peux pas vous donner d'aide plus en détail, ça fait 25 ans que je n'ai plus codé en ASM (6502, x86). J'ai abandonné le Hack&Crack :ane:, donc plus de raison de continuer avec...

Lien vers le commentaire
Partager sur d’autres sites

C'est ok j'ai bien la solution à l'exercice maintenant. L'écrire en asm 6809 n'est pas un problème maintenant que tout est clair grâce a Aloyse57.

Thanks pour ton aide.

 

Un autre exercice dont la compréhension m'est tout aussi Ambiguë que le précédent: 

Ecrire un programme  en assembleur 80x86 qui calcule la somme de 16 bits sachant qu’ils sont précédés du nombre FFFF h. le résultat sera stocké à partir de l’adresse 2000 h.

Consignes :

-         l’étendu des adresses de 0100 h et 01FA h

-         le résultat peut tenir sur 16 ou 32 bits.

M'aider à comprendre le principe de résolution me sera d'une grande utilité.

Lien vers le commentaire
Partager sur d’autres sites

C'est pour vous faire :

1/travailler sur des DD (=2Bytes=16 bits) et des DW(=Double Word=4bytes=32 bits).

2/transpirer sur la subtilité des bits de poids faibles (Low) et forts (High). Les 4 bits en partant de la gauche sont les H, et les 4 finaux sont les L.

3/Si je comprends le sujet, les nombres à additionner sont aux adresses impaires seulement.

0100:FF FF

0102:00 01 (exemple)

0104:FF FF

0106:0A 00 (exemple)

0108:FF FF

...

01FA :

Vous avez donc FA(=250 décimal)/2=125 nombres à additionner, soit dans le pire des cas 125x65536(FFFF)=8192000(7D0000, soit 3 octets (32bits) à partir de l'adresse 2000)

 

L'exercice est sympa, car il se limite à additionner sur 16 bits, qui est la taille des registres x86, mais le vice c'est que vous ne pouvez pas utiliser les registres brutalement car FFFF+FFFF=20000, donc il faut traiter la retenue (Carry, voir instructions JC/JNC)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...