Démarrage en ASM - ASM - Programmation
Marsh Posté le 15-04-2006 à 12:58:46
bon, je suis désolé, mais je ne répondrai plus aux topics assembleur qui contiennent du code 16 bits ! je ne le dirais jamais assez : EN 2006, ON PROGRAMME EN FLAT, 32 BITS ET ON S'EMMERDE PLUS AVEC LES SEGMENTS ET AUTRES SEIZEBITERIES !!!!
donc, tu vas ici :
http://www.masm32.com/
tu récupères ainsi un assembleur moderne et contemporain, full 32 bits
ensuite tu peux éventuellement aller ici :
http://www.radasm.com/
pour récupérer un IDE vraiment bien foutu
et enfin, si tu veux faire de l'assembleur Windows (le DOS et ses interruptions, c'est dépassé hein), ce tutorial incoutournable :
http://win32assembly.online.fr/tutorials.html
voila ! et ainsi tu dégages les ASSUME, ORG, SEGMENT et toutes les seizebiteries imbuvables
Marsh Posté le 15-04-2006 à 13:28:52
Si si au contraire c'est important que tu répondes. Il y a de tout en programmation et c'est pas évident de démarrer seul.
En tout cas je te remercie et je pars sur les nouvelles bases que tu donnes. Les prochaines questions porteront sur ton tuto et les logiciels indiqués
Marsh Posté le 15-04-2006 à 13:38:06
bon, et ben voila ! je viens de gagner des points pour mon karma
Marsh Posté le 08-09-2006 à 14:48:37
sauf ton respect harkonnen, je pense que coder en 16bit est encore bien util. pour ma par, je travail sur un projet
tres interressant consistant a lancer un programme en mode reel sur une becanne sans passer par aucun OS.
pour ce fair je dois reprogrammer le bootsector de ma partition fat16.
la programmation en assembleur 16bit m'est donc indispenssable.
pour en venir au sujet de mon poste,je debute en ASM et j'aurais voulu avoir kelke info sur l'operateur 'offset'.
donne-t-il bien la distance entre le debut du segment memoire stocker dans le registre DS et le label post-nommer?
ou fais-je totalement fausse route?
merci!
Marsh Posté le 11-09-2006 à 13:19:41
Bonjour
Je ne pense pas que de nos jours, on construise encore des machines à base de 8086 - 80286, donc il y a moyen de faire du 32 bits.
Faire tourner un vieux programme 16 bits sans utiliser MS-DOS n'a un intéret que purement académique; le bios n'offrant pas de fonction disque, il faut recoder pratiquement un OS autant le faire en 32 bits.
Qualifier de très interessant un projet pour retourner 15 ans en arrière est curieux sauf pour un archéologue.
Conclusion :
faire du pur 16 bits de nos jour est démodé.
Il est impossible de faire tourner un programme sans OS ou alors il est unique et on se tourne vers des microcontroleurs.
Pour faire du pur propriétaire non copiable, il vaut mieux refaire un OS limité et intégré au programme ce qui peut se faire en 32 bits.
Personellement je préfère l'orthographe archaïque avec une programmation 32 bits à une orthographe jeune avec une programmation archaïque.
Pour retirer la quintescence de l'assembleur, il faut lire le fichier "list" produit par ce dernier. La plupart des questions qu'on se pose y trouvent là leur réponse.
Marsh Posté le 11-09-2006 à 14:18:44
Harko, t'aurais pas un tuto "reference" pour l'asm sous linux ? Parceque j'ai un bouquin d'asm mais uniquement orienté DOS et du coups j'ai assez vite laché prise ...
Marsh Posté le 11-09-2006 à 14:29:38
y'a le tuto de Robin Miyagi, pas trop mal
http://database.sarang.net/study/l [...] ux-asm.txt
Marsh Posté le 11-09-2006 à 15:05:09
Les appels systèmes linux sont là :
http://www.lxhp.in-berlin.de/lhpsyscal.html
Je pense ne pas être le seul à penser qu'un bon tuto est en français.
Marsh Posté le 11-09-2006 à 15:27:17
db__ a écrit : Bonjour |
db_
ton avis sur la question n'a pas beaucoup d'interet pour moi.
en ce qui concerne le qualificatif "interessant" de mon precedant post,
il ce trouve que justement l'entreprise pour la quelle je travail a developper
un systeme baser sur une archi pc utilisant un processeur type x86,
lequel sera embarquer dans un helicoptere.
pour en revenir au bois qui n'aurait pas de fonction disque, l'interuption 13h , ax=201h
m'est tres util dans mon travail.
certaines entreprise d'equipement embarquer ce sont deja penches sur la question
du lancement de programme sans OS, il est vrai que la solution ce rapproche du recodage
d'OS, mais je parlerais plus de 'loader'. (mais ce n'est que mon avis car il n'y aura aucune interface utlisateur)
de plus je debute en assembleur, un peu d'indulgence ne serais pas de refus.
quelqu'un aurait-il une vrai reponse SVP?
Marsh Posté le 11-09-2006 à 15:43:30
OFFSET retourne l'adresse de début d'une variable par rapport au début du segment dans lequel cette variable se trouve.
exemple :
Code :
|
Marsh Posté le 11-09-2006 à 15:53:54
merci beaucoup harkonnen
je ne suis k'en stage et l'on m'as charger de la recherche dans ce projet.
ils n'en savent pas plus ke moi ici.... c'est pas toujours facile.
Marsh Posté le 11-09-2006 à 18:18:06
db__ a écrit : Les appels systèmes linux sont là : |
En tous cas moi je ne le pense pas. Si le tuto a été écrit dans une langue que je connais, je le lit dans sa langue d'origine ... Parceque les traducteurs ne sont pas infaillibles et donc ça risque de me compliquer encore l'apprentissage
Marsh Posté le 12-09-2006 à 12:00:08
derniere question ... svp (avant la prochaine! lol)
(desole Harkonnen! )
je c deja ke mon programme sera charger en memoire en 0000:7c00 (ou en 07c0:0000 , au choix)
(car c la que le MBR charge les programmes de secteur de boot en memoire)
si je stock 07c0h dans DS, "offset mon_label" me donnera-t-il la distance entre 07c00h[adressage reel] et mon_label? ou 00000h[adressage reel] (1er segment de memoire) etant donner que 07c00h[adressage reel] en fait partie ?
je passerais peut etre pour un boulet mais j'ai du apprendre l'ASM en moin d'un mois et (ca doit ce voir!)
g encore pas mal de lacunes... un ptit coup de main ne serais pas de refus
merci d'avance!
Marsh Posté le 15-04-2006 à 12:33:26
Pas trop de blabla juste les faits :
Le programme :
".386
code segment use16
assume cs:code, ds:code, ss:code
org 100h ;offset décalés de 100h=256
debut :
mov ah, 09h ;fonction n°9 : écrire une chaîne à l'écran
mov dx, offset message ;mettre l'offset de la chaîne dans DX
int 21h ;écrire la chaîne à l'écran en appelant l'interruption 21h
ret ;rendre la main au DOS
message db "Bonjour, monde !",'$' ;définition du message
code ends
end debut"
Les messages TASM :
"C:\Assembleur\Tasm\Tasm essai.asm
TASM Assembler. Version 3.2 September, 2001.
Copyright (C) 2001 Squak Valley Software
tasm: pass 1 complete.
essai.asm line 0001: unrecognized directive. (.386)
essai.asm line 0003: Label not found: (code)
essai.asm line 0003: label value misalligned. (code)
essai.asm line 0003: unrecognized instruction. (code)
essai.asm line 0005: Label not found: (assume)
essai.asm line 0005: label value misalligned. (assume)
essai.asm line 0005: unrecognized instruction. (assume)
essai.asm line 0007: Label not found: (org)
essai.asm line 0007: label value misalligned. (org)
essai.asm line 0007: unrecognized instruction. (org)
essai.asm line 0011: Label not found: (mov)
essai.asm line 0011: label value misalligned. (mov)
essai.asm line 0011: unrecognized instruction. (mov)
essai.asm line 0012: Label not found: (mov)
essai.asm line 0012: label value misalligned. (mov)
essai.asm line 0012: unrecognized instruction. (mov)
essai.asm line 0013: Label not found: (int)
essai.asm line 0013: label value misalligned. (int)
essai.asm line 0013: unrecognized instruction. (int)
essai.asm line 0017: Label not found: (message)
essai.asm line 0017: label value misalligned. (message)
essai.asm line 0017: unrecognized instruction. (message)
essai.asm line 0019: Label not found: (code)
essai.asm line 0019: label value misalligned. (code)
essai.asm line 0019: unrecognized instruction. (code)
essai.asm line 0021: Label not found: (end)
essai.asm line 0021: label value misalligned. (end)
essai.asm line 0021: unrecognized instruction. (end)
line 0021: No END directive before EOF.
tasm: pass 2 complete.
tasm: Number of errors = 29"
J'utilise XP Pro, j'ai enregistré le programme avec le bloc note au format assembleur, je tape juste tasm monprog.asm.
Bien conscient qu'une fois que j'aurais réussi ma première compil je serai plus à l'aise je sollicite votre aide Le guide que j'ai trouvé ici est-il toujours d'actualité ? Que dois je modifier ? Les aliens sont ils parmi nous ?