Voir les messages
|
Pages: [1] 2 3 ... 6
|
2
|
Programmation / Langages compilés / Re : Une erreur d'assembleur ?
|
le: 08 Août 2012 à 21:42:03
|
YEA ! Bon, le secteur de boot, problème réglé, il s'assemble et j'obtiens mon fichier bin de 512 mo Alors, la correction : mov eax, 0x00007c00 mov ds, eax mov es, eax mov eax, 0x80000 mov ss, eax mov esp, 0x8F000 ; stack de 0x8F000 -> 0x80000 ; affiche un msg mov si, msgDebut call afficher end: jmp end ;--- Variables --- msgDebut db "Hello world !", 13, 10, 0 ;----------------- ;--------------------------------------------------------- ; Synopsis: Affiche une chaine de caracteres se terminant par 0x0 ; Entree: DS:SI -> pointe sur la chaine a afficher ;--------------------------------------------------------- afficher: push ax push bx .debut: lodsb ; ds:si -> al cmp al, 0 ; fin chaine ? jz .fin mov ah, 0x0E ; appel au service 0x0e, int 0x10 du bios mov bx, 0x07 ; bx -> attribut, al -> caractere ascii int 0x10 jmp .debut .fin: pop bx pop ax ret ;--- NOP jusqu'a 510 --- times 510-($-$$) db 144 dw 0xAA55
Lorsque je le compilais, nasm me faisait remarquer un problème d'espace pour les données, donc j'ai remplacé les registres 16b par des 32 (e-), et cela a résolu mon problème
|
|
|
3
|
Programmation / Langages compilés / Re : Une erreur d'assembleur ?
|
le: 08 Août 2012 à 17:10:14
|
Alors, j'ai décidé de retourner aux sources, et quelque chose de curieux est apparu : mon process de test fonctionne, je le vois dans le gestionnaire des tâches, mais la console n'apparait pas sur mon écran .. Par exemple : .386 .model flat, stdcall option casemap : none
include C:\masm32\include\masm32rt.inc
.code
salut :
print "Essai d'affichage de texte", 13, 10 inkey "Appuyer sur une touche pour continuer..." exit
end salut
La console avec mon print n'apparait pas, mais dans mes processus, il apparait..
|
|
|
4
|
Programmation / Langages compilés / Re : Une erreur d'assembleur ?
|
le: 07 Août 2012 à 22:48:24
|
Alors, j'ai lu -dans le tas de doc, ça va me revenir- qu'un bootloader commence avec un décalage 100h, donc j'ai mis :
ORG 100h (BITS n'est apparemment pas essentiel) Depuis, je n'ai plus d'erreur. Il n'empêche qu'à priori, les segments sont pas au bon endroit.. Donc je continue à enfiler la doc, et les bootloader d'autres programmeurs afin de cerner mon erreur
|
|
|
6
|
Programmation / Langages compilés / Re : Une erreur d'assembleur ?
|
le: 07 Août 2012 à 18:29:55
|
Bien, tu as raison J'ai un fichier "boot" de 1 ko .. Après utilisation de la ligne de commande que tu m'as conseillé C:\Users\Ackermann Q\Desktop\ASM\boot sector\boot.asm(1) : error A2008: syntax error : BITS Donc, à priori, cela me cause une erreur. Je ne comprends pas, j'ai essayé avec [], sans, avec ""... Bizarre
|
|
|
7
|
Programmation / Langages compilés / Re : Une erreur d'assembleur ?
|
le: 07 Août 2012 à 16:59:02
|
Je compile avec RadAsm, plus simple, car je ne peux plus voir de lignes de commande -.-, et c'est lui qui me sort ces erreurs, en réponse à harvey. De plus, avec ta commande, il ne se passe .. Rien..
Je ne sais pas par rapport à ta remarque. Je sais juste qu'il me sort une jolie erreur.
("BITS 16") : Ce serait pas juste une chaine de caractère, identifiée par les guillemets ?
Geo : Merci pour la correction, la coquille n'était pas intentionnelle. Je pense que tu as raison. Aurais-tu les restes de docs t'ayant servie il y a quelques mois ?
|
|
|
8
|
Programmation / Langages compilés / Une erreur d'assembleur ?
|
le: 07 Août 2012 à 12:16:38
|
Bonjour à tous. Depuis peu, l'assembleur et moi vivons des choses .. Extrêmement désagréables. Je m'explique : Je cherche à faire un secteur boot, donc en asm. Cependant, n'étant que débutant, je m'inspire d'un site : a.michelizza.free.fr/pmwiki.php?n=TutoOS.BootsectVoici le code : [BITS 16] ; indique a nasm que l'on travaille en 16 bits [ORG 0x0]
; initialisation des segments en 0x07C00 mov ax, 0x07C0 mov ds, ax mov es, ax mov ax, 0x8000 mov ss, ax mov sp, 0xf000 ; stack de 0x8F000 -> 0x80000
; affiche un msg mov si, msgDebut call afficher
end: jmp end
;--- Variables --- msgDebut db "Hello world !", 13, 10, 0 ;-----------------
;--------------------------------------------------------- ; Synopsis: Affiche une chaine de caracteres se terminant par 0x0 ; Entree: DS:SI -> pointe sur la chaine a afficher ;--------------------------------------------------------- afficher: push ax push bx .debut: lodsb ; ds:si -> al cmp al, 0 ; fin chaine ? jz .fin mov ah, 0x0E ; appel au service 0x0e, int 0x10 du bios mov bx, 0x07 ; bx -> attribut, al -> caractere ascii int 0x10 jmp .debut
.fin: pop bx pop ax ret
;--- NOP jusqu'a 510 --- times 510-($-$$) db 144 dw 0xAA55
Bon, pour : [BITS 16] ; indique a nasm que l'on travaille en 16 bits [ORG 0x0] Vu que ce doit être une spécificité de nasm, on peut retirer la première ligne. Je lance avec RadAsm, et il me sort .. Une multitude d'erreurs : [ est une balise non-reconnue, et les lignes : 3, 4, 5, 6, 7, 8, 9, 10, et 11 "must be in segment block." Ligne 15 : missing operand after unary operator Donc, outre résoudre ces problèmes, j'ai une autre question : ; initialisation des segments en 0x07C00 mov ax, 0x07C0 mov ds, ax mov es, ax mov ax, 0x8000 mov ss, ax.. etc Pourquoi initialise t'on les segments en 0x07C00 ? C'est aléatoire ? Y'a une raison précise ? Comment choisit-on l'adresse d'initialisation ? Merci à vous !
|
|
|
9
|
Programmation / Langages compilés / Re : Python
|
le: 21 Mai 2012 à 21:49:36
|
Mon code est de la forme : >>> a = 10 >>> if ( a > 5 ): ... print "a supérieur à 5" ... else: ... print "a est inférieur à 5" ... a supérieur à 5 Normalement, je crois que c'est sensé fonctionner ..
|
|
|
10
|
Programmation / Langages compilés / Re : Python
|
le: 16 Mai 2012 à 12:01:24
|
Bon. Bah je vais chercher un peu. Mais comme je l'ai dit, les syntaxes peuvent changer avec les évolutions de version de python. Ce qui fonctionne chez toi ne fonctionnera peut-être pas chez moi.
|
|
|
11
|
Programmation / Langages compilés / Re : Python
|
le: 16 Mai 2012 à 11:54:33
|
Pourquoi ne pas poser la question sur le site du zéro ? Et surtout, surtout : pourquoi ne pas poster un bout de script qui montre le problème et le message d'erreur associé ?
Navré, ma première référence reste NewbieContest, il est vrai que j'aurai dû poster sur le site du zéro en premier. Effectivement, c'est ma faute : a = 5 if a > 0: print("a est supérieur à 0.") else: print("a est inférieur ou égal à 0.")
Voici un exemple de code me retournant "syntaxe error" en surlignant le else :]
|
|
|
12
|
Programmation / Langages compilés / Python
|
le: 15 Mai 2012 à 21:33:22
|
Bonsoir à tous ! N'ayant pas trouvé de section "Langage interprétés" à côté de langage compilé, j'ai préféré mettre ce sujet ici.
Je débute dans python à l'aide des cours du site du zéro. J'ai un problème : lorsque je veux entrer la commande else ou elif, l’interpréteur me renvoie une erreur de syntaxe qui ne semble pas être présente dans les exemples du site. Ainsi, j'en ai déduis que les syntaxes on dû évoluer dans les versions supérieures à celle présentée sur le site. Donc, je demande de l'aide : toutes les syntaxes connues sont-elles à délaisser ? Pouvez-vous me donner les nouvelles syntaxes ? Merci aux développeurs python qui passeront par ici pour donner un coup de main ! :]]
|
|
|
|