Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Assembleur sous linux(C)
Envoyé par: Melle Linux

Bonjour;
je vous remercie infiniment de ce vous m'avez expliquer ;en fait je suis une etudiante de genie electrique qui prepare son projet de fin d'etude en linux sachant que j'ai fait une auto formation la dessus .Mon objectif c'est de piloter un peripherique via le port parallele à l'aide du C(la fonction ioperm);pour cela j'ai voulu refleter l'état du peripherique en temps reel en d'autre terme je veux profiter de l'assembleur ds ce cas ;dont voila le code d'asm que je veux inserer :

**************curseur off$$$$$
mov ah,3
mov bh,1
int 10h
mov cursL,cl
mov cursh,ch
mov cx ,$2000
int 10h
*************curseur on
mov ah,1
mov ch,cursH
mov cl,cursL
int 10h

j'attend vraimend votre aide
merci d'avance.:-)


Poste le Wednesday 7 June 2006 12:12:11
Répondre     Citer    
Re: Assembleur sous linux(C)
Envoyé par: abgech

Où as-tu récupérer ce code ? Dans un vieux bouquin ?

Il pourrait fonctionner (avec pas mal de retouches) sous DOS et architecture 8x86, mais il est totalement inutilisable sous Linux (et même sous windows ) !

Ces "modules" font appel directement au BIOS original par le biais de l'interruption 10h (interruption carte vidéo). Linux interdit, pour des raisons, entre autres, de multi-tâches d'accéder au BIOS. D'autant plus inutilisable que Linux, lors du boot, remplace le BIOS original, qui n'est pas réentrant et donc ne peut pas être utilisé pour gérer le multi-tâche, par un "BIOS" (on va dire ça comme ça), spécifique. D'autre part, Linux, toujours pour des raisons de partage des ressources en multi-tâche t'interdit d'accéder au matériel si tu n'es pas en mode superviseur, non pas root, mais superviseur, c'est à dire en mode noyau.

Analyse de ton code:
**************curseur off$$$$$
mov ah,3 ; SELECTION DE LA FONCTION LECTURE DE LA POSITION DU CURSEUR
mov bh,1 ; NUMERO DE LA PAGE ÉCRAN, VIEUX TRUC ENCORE DISPONIBLE SUR CARTES ACTUELLES ?
int 10h  ; APPEL DE L'INTERRUPTION CARTE VIDEO 
mov cursL,cl ; REPRISE DANS cursL DE LA LIGNE FIN DU CURSEUR CLIGNOTANT.
mov cursh,ch ; REPRISE DANS cursh DE LA LIGNE DEPART DU CURSEUR CLIGNOTANT.

; ICI , IL MANQUE CERTAINEMENT QUELQUE CHOSE, NOTAMMENT UN mov ah,fonction_à_effectuer
mov cx ,$2000 ; ??????????? EN PRINCIPE NOMBRE DE CARACTÈRES À AFFICHER !
int 10h  ; APPEL DE L'INTERRUPTION CARTE VIDEO, MAIS POUR QUELLE FONCTION ?


*************curseur on
mov ah,1   ; SELECTION DE LA FONCTION DEFINITION LE L'APPARENCE DU CURSEUR.
mov ch,cursH ; lIGNE DE DEPART DU CURSEUR CLIGNOTANT
mov cl,cursL ; LIGNE DE FIN DU CURSEUR CLIGNOTANT
int 10h   ; APPEL DE L'INTERRUPTION CARTE VIDEO

Comme tu peux le voir, ton code est non seulement inutilisable sous Linux (ou windows) mais en plus totalement "bogué". Autre chose, lorsqu'on écrit en assembler, chaque ligne doit, obligatoirement, être "commentarisée".

Si, comme je le suppose, tu veux simplement changer l'aspect de ton curseur, je te conseille vivement d'utiliser ncurses (ou curses, c'est pareil). Non seulement tu pourras modifier l'aspect de ton curseur de façon portable sous Linux, xBSD, Unix, Aix, HP/UX, etc, mais en plus, si, contrairement à moi, tu as un certain sens artistique, tu pourras écrire un joli interface utilisateur en mode caractère.

Poste le Wednesday 7 June 2006 15:48:19
Répondre     Citer    
Re: Assembleur sous linux(C)

Juste une remarque pour Mlle Linux. Si elle avait dit dès le départ qu'elle voulait bouger le curseur, ça aurait été plus vite pour elle comme pour les nombreux contributeurs du débat (fort intéressant).

Donc, à l'attention des novices, quand vous posez une question technique, n'oubliez pas d'indiquer succintement le contexte et vos motivations et connaissances.

Poste le Wednesday 7 June 2006 18:16:50
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Assembleur sous linux(C)
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons