eclipz Posté(e) le 29 avril 2003 Partager Posté(e) le 29 avril 2003 Salut Bon suis nul en assembleur, je comprends strictement rien ! Qqu'un aurait dans ses vieux documents un prog en assembleur qui permet de calculer le carré d'un nombre (sans utiliser le copro) ? Je sais, c'est spécial comme demande mais bon... Merci, vince Lien vers le commentaire Partager sur d’autres sites More sharing options...
gtm Posté(e) le 29 avril 2003 Partager Posté(e) le 29 avril 2003 le carré d'un entier ? Ca fait longtemps que j'en n'ai plus fait, mais c'est quelque chose du genre: mov ax, nombre mul ax ; calcule ax*ax et le résultat est dans dx:ax je crois (partie haute dans dx, partie basse dans ax) Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 29 avril 2003 Auteur Partager Posté(e) le 29 avril 2003 ok, merci beaucoup pour cette réponse, c sympa Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 6 mai 2003 Auteur Partager Posté(e) le 6 mai 2003 arf... en fait j'arrive pas à mettre en oeuvre tout ça... la saisie merdouille à fond... quelqu'un pourrait me dire précisément comment faire saisir le nombre puis le mettre au carré ? par avance merci pour les âmes généreuses Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gmal Posté(e) le 7 mai 2003 Partager Posté(e) le 7 mai 2003 Euh... Pourquoi tu veux faire de l'asm? Pour la saisie, tu ferais mieux de prendre le C et de faire que le calcul en ASM!!!!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 7 mai 2003 Auteur Partager Posté(e) le 7 mai 2003 lol! si ça n'en tenait qu'à moi, je ferai saisie et calcul en c, si je veux faire ça en asm c'est parce que suis etudiant et que c'est un élément d'un TP ! maintenant c'est un cosinus que j'essaie de calculer avec le copro ! lol Lien vers le commentaire Partager sur d’autres sites More sharing options...
cmoivoilà INpact Posté(e) le 8 mai 2003 Partager Posté(e) le 8 mai 2003 arg... un 8086 arf c'est plutot dur à bidouiller cet engin... là je peux pas aider... mais je vais contacter quelqu'un qui sait ptêt... je vais voir. @+ :bonnenuit: Lien vers le commentaire Partager sur d’autres sites More sharing options...
Gmal Posté(e) le 12 mai 2003 Partager Posté(e) le 12 mai 2003 Moi j'ai la soluce quelque part la haut dans mon crane... C'est sous linux, avec gcc... Tu le fais minimal en C, tu compile avec GCC avec l'option qui va bien (trou), et tu ré édites l'ASM tu nettoies, tu compile tn asm et c'est bon... Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 12 mai 2003 Auteur Partager Posté(e) le 12 mai 2003 lol ! oui c'est un moyen comme un autre ! bon en fait là j'ai bien avancé : j'ai mon resultat dans une variable de type DT, le truc c'est que j'arrive pas à afficher caractere par caractere le contenu de cette variable ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 20 mai 2003 Partager Posté(e) le 20 mai 2003 Oula je m'y essaie, rien de garanti :-) mov ah, 8 ;int dos, lire char int 21h ;appel dos imul al ;al * al mov dl, al ;dl contient le char a afficher mov ah, 2 ;int dos affiche char int 21h ;appel dos attention ne marche que pour des nombres de 16bits. Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 21 mai 2003 Auteur Partager Posté(e) le 21 mai 2003 Oula je m'y essaie, rien de garanti :-) mov ah, 8 ;int dos, lire char int 21h ;appel dos imul al ;al * al mov dl, al ;dl contient le char a afficher mov ah, 2 ;int dos affiche char int 21h ;appel dos attention ne marche que pour des nombres de 16bits. lol ! si ça marche pas c'est pas grave, c'est déjà super sympa de m'aider ! je vais essayer dés que possible ! en tous cas merci beaucoup ! Vince Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 22 mai 2003 Partager Posté(e) le 22 mai 2003 En fait, après tests, faut faire gaffe que l'assembleur prends en compte le code ASCII, donc ca donne plutot ca : bcl: mov ah, 8 ;int dos, lire char int 21h ;appel dos sub al, 48 ;conversion code ascii-> valeur imul al ;al * al add al, 48 ;valeur->code ascii mov dl, al mov ah, 2 int 21h jmp bcl Et encore une autre précision, ca ne marchera que pour un nombre de 0 à 9, car on utilise la fonction 'lire caractère' du DOS, et non pas 'lire une chaine de caractères', qui est gérée autrement. Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 22 mai 2003 Auteur Partager Posté(e) le 22 mai 2003 oui bon déjà c'est vrai que j'avais oublié de déduire les fameux 48 ! maintenant il me reste un problème : mon format de variable est dt et son contenu est en dcb80... bref, faut donc que j'arrive à avoir octet par octet le contenu de ma variable et à extraire chaque demi-octet pour l'afficher... et ça j'y arrive po bref pour évoluer ma variable j'ai fait ça : mov si, offset resultat+9 mov cx,10 boucle : mov cl,[si] ... inc si loop boucle mais même ça je suis pas certain de mon coup ! est-ce que dans ce cas cl contient bien le SIème octet de resultat ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 22 mai 2003 Partager Posté(e) le 22 mai 2003 dcb80, pour toi c'est décimal codé binaire sur 80 bits ? Si je comprends bien, ta variable est sur dix bytes (DT), donc 10 bytes * 8 bits = 80 bits. C'est ca ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 22 mai 2003 Auteur Partager Posté(e) le 22 mai 2003 c'est tout à fait ça... sauf qu'en fait, en principe, j'ai que les 5 derniers octets qui sont utilisés et chaque octet comprend 2 chiffres (un dans la partie haute, l'autre dans la partie basse de l'octet)... bref, le truc que j'arrive pas à faire, c'est à me positionner au debut du premier des 5 derniers octets pour afficher les 10 chiffres qui sont stockés dans ma variable Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 22 mai 2003 Partager Posté(e) le 22 mai 2003 As-tu essayé avec un pointeur ? Exemple: type ptr expression Par exemple en forcant ta variable DT en une DB ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 22 mai 2003 Auteur Partager Posté(e) le 22 mai 2003 je sais pas comment forcer une variable... quand aux pointeurs oui, j'essaie mais je dois me planter je pense... Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 22 mai 2003 Partager Posté(e) le 22 mai 2003 J'ai quelques exemples avec les pointeurs, mais je ne les ai jamais utilisés : var1 dw 1234h var2 db 1 var3 db 2 mov bh, byte ptr var1 ; bh <- 34h mov al, byte ptr var1 + 1 ; al <- 12h mov ax, word ptr var2 ; ax <- var2 + var3 mov byte ptr [bx], 0 ; 1 byte mémoire (ea = bx) mis à 0 Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 22 mai 2003 Auteur Partager Posté(e) le 22 mai 2003 tout ça m'a l'air extremement intéressant et approprié à ce que je veux faire... je te remercie beaucoup pour ton aide, m'en vais essayer ça de suite ! encore merci !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
eclipz Posté(e) le 22 mai 2003 Auteur Partager Posté(e) le 22 mai 2003 bon je voulais simplement te dire que, ça y est, j'ai fini et c'est vraiment grâce à toi ! encore merci beaucoup pour ton aide, c'est super sympa ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
emerica Posté(e) le 22 mai 2003 Partager Posté(e) le 22 mai 2003 Content de voir que ca marche Lien vers le commentaire Partager sur d’autres sites More sharing options...
steevensson88 Posté(e) le 11 juillet 2016 Partager Posté(e) le 11 juillet 2016 Bonjour, besoin d'aide pour résoudre ce problème. J'ai bien des difficultés. Ecrire un programme en assembleur 6809 compte le nombre de bits à 1 dans un octet se trouvant à l’adresse $1000 lorsque le microprocesseur reçoit une demande d’interruption FIRQ. L’interruption IRQ étant masquée. a) Donner l’organigramme b) Donner le programme Lien vers le commentaire Partager sur d’autres sites More sharing options...
Aloyse57 Posté(e) le 12 juillet 2016 Partager Posté(e) le 12 juillet 2016 Vous devez comparer (AND) votre octet avec une valeur initialisée à 1 sur laquelle vous appliquerez un Shift Left huit fois de suite. Si le résultat du AND et différent de 0, alors vous incrémentez un compteur de bits. Exemple : un octet 11101001 BCL1 11101001 +00000001 ======== =00000001 -> Inc un registre DX par exemple BCL2 11101001 +00000010 ======== =00000000 -> Zéro, on ne fait rien BCL3 11101001 +00000100 ======== =00000000 -> Zéro, on ne fait rien BCL4 11101001 +00001000 ======== =00001000 -> Inc DX etc Je ne détaille pas, c'est votre boulot. Lien vers le commentaire Partager sur d’autres sites More sharing options...
steevensson88 Posté(e) le 12 juillet 2016 Partager Posté(e) le 12 juillet 2016 Merci bien Aloyse57, j'avoue que je comprends mieux l'exercice maintenant. le décalage bit à bit et de compter à chaque fois si le résultat du NAND est 1.Vraiment merci pour le principe. Seulement je n'assimile pas vraiment ce qu'on enttend par interruption FIRQ ou FIRQ. Merci encore. Lien vers le commentaire Partager sur d’autres sites More sharing options...
digital-jedi Posté(e) le 12 juillet 2016 Partager Posté(e) le 12 juillet 2016 Bonjour, FIRQ ou IRQ, normalement ça fait référence à tes cours d'école. Exemple googlé : http://perso.telecom-paristech.fr/~danger/amen_old/interruptions/index.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.