Démarrage en ASM

Démarrage en ASM - ASM - Programmation

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"  :bounce:  
 
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"  :kaola:  
 
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 ?

Reply

Marsh Posté le 15-04-2006 à 12:33:26   

Reply

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


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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  :hello:

Reply

Marsh Posté le 15-04-2006 à 13:38:06    

bon, et ben voila ! je viens de gagner des points pour mon karma [:kbchris]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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!  :pt1cable:  :pt1cable:

Reply

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.

Reply

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 ...

Reply

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


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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.

Reply

Marsh Posté le 11-09-2006 à 15:27:17    

db__ a écrit :

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.


 
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?
 

Reply

Marsh Posté le 11-09-2006 à 15:27:17   

Reply

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 :
  1. .DATA
  2. msg       db 'kikoo asv ?','$'
  3.  
  4. .CODE
  5. start:      mov ax,@data ; adresse de début du segment DATA dans AX
  6.            mov ds,ax ; on définit ainsi le segment de données dans DS
  7.            mov ah,9h
  8.            mov dx,OFFSET msg ; adresse du message dans DX
  9.            int 21h ; on imprime le message
  10.            mov ax, 4c00h ; et on se casse
  11.            int 21h
  12. END start


Message édité par Harkonnen le 11-09-2006 à 15:44:05

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 11-09-2006 à 15:53:54    

merci beaucoup harkonnen    :ange:  
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.

Reply

Marsh Posté le 11-09-2006 à 18:18:06    

db__ a écrit :

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.


 
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


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 12-09-2006 à 12:00:08    

derniere question ... svp  (avant la prochaine! lol)
(desole Harkonnen! :sweat: )
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!  
 :pt1cable:  :pt1cable:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed