Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1413 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  Veut pas assembler !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Veut pas assembler !!

n°991728
Sinus
Posté le 23-02-2005 à 19:30:14  profilanswer
 

Bonjour à tous !
Tasm veut pas assembler ça il dit qu'il y a une erreur aux lignes en rouge...
Pourquoi ??????
(Je débute en ASM à la fac, le programme suivant à pour but de copier le 9 qui est en début de DS, et de mettre aux emplacements suivants du DS en l'incrémentant à chaque fois) (ici il boucle 10 fois)
 
Merci d'avance.
 

Citation :

assume ds:data, cs:code
 
data    segment
nombre  db 9
data    ends
 
code    segment
debut:  mov ax,data
        mov ds,ax
        mov cx,10
        lea ax,nombre
        mov bx,[ax]
boucle: inc bx
        inc ax
        mov [ax],bx
        loop boucle
        mov ah,4Ch
        int 21h
code    ends
        end debut

mood
Publicité
Posté le 23-02-2005 à 19:30:14  profilanswer
 

n°991750
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-02-2005 à 19:44:19  profilanswer
 

je suppose que le message que tu obtiens est un truc du genre "must be index or base register" ?
 
la raison est que tu utilises le registre AX comme un registre d'adresse (ce que tu fais en chargeant l'adresse du nombre 9 via ton "LEA" ), ce qui est interdit
 
pour arriver à tes fins, tu dois remplacer AX par un des registres suivants (je te les fournis avec leur registre de segment par défaut) :
 
SS:[BP]
DS:[BX]
DS:[SI]
DS:[EI]


Message édité par Harkonnen le 23-02-2005 à 19:48:41

---------------
J'ai un string dans l'array (Paris Hilton)
n°991763
Sinus
Posté le 23-02-2005 à 19:53:29  profilanswer
 

Magnifique ça fonctionne !!
Merci, je pensais que les registres AX, BX, CX, DX étaient des registres 'à tout faire' qui permettaient aussi l'adressage.
 
Mais pourquoi ça marchait pas ? les 16 bits de AX ça suffit pas pour adresser une donnée ?
 
Sinon l'assembleur me sortait 'Illegal Operation', pas très explicite...

n°991796
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-02-2005 à 20:25:59  profilanswer
 

Citation :

Magnifique ça fonctionne !!
Merci, je pensais que les registres AX, BX, CX, DX étaient des registres 'à tout faire' qui permettaient aussi l'adressage.


AX est l'accumulateur, BX est utilisé pour indexer, CX sert de compteur pour les boucles, etc...
 

Citation :


Mais pourquoi ça marchait pas ? les 16 bits de AX ça suffit pas pour adresser une donnée ?


Rien à voir. Ca marchait pas parce que tu ne peux pas utiliser AX comme registre pour adresser la mémoire. Faut demander pourquoi aux gens d'Intel :spamafote:
 

Citation :


Sinon l'assembleur me sortait 'Illegal Operation', pas très explicite...


Vire TASM, et utilise un vrai assembleur (MASM ou MASM32)
 
Question : l'assembleur 16 bits vous est imposé ou c'est ton choix ? Parce que c'est une merde sans nom à programmer, et c'est désormais totalement inutilisé


Message édité par Harkonnen le 23-02-2005 à 20:34:07

---------------
J'ai un string dans l'array (Paris Hilton)
n°991873
Sinus
Posté le 23-02-2005 à 21:24:52  profilanswer
 

Bah à la fac on utilise Tasm pour assembler, Tlink pour linker, et Td pour débugger.
Comme je connaissais rien d'autre c'est aussi ceux que j'utilise chez moi.
(Bien que je peux aussi utiliser Tasm32, si le 32 bits apporte vraiment quelque chose).
 
Mais ces choix sont peut être en rapport avec le fait qu'on est sensés apprendre à programmer un 8086, donc on utilise pas toutes les possibilités des processeurs récent.
 

n°991879
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-02-2005 à 21:29:30  profilanswer
 

Sinus a écrit :


Mais ces choix sont peut être en rapport avec le fait qu'on est sensés apprendre à programmer un 8086, donc on utilise pas toutes les possibilités des processeurs récent.


quel est l'intéret d'apprendre à programmer une architecture qui n'existe plus ? en 32 bits, on ne se fait plus chier avec les "assume", les segments et autres merdes sorties des 16 bits ! la mémoire est adressée d'un bloc et c'est bien plus pratique.
personnellement, je trouve ça complètement con, surtout à l'heure où les 64 bits commencent à se démocratiser :sarcastic:


Message édité par Harkonnen le 23-02-2005 à 21:29:52

---------------
J'ai un string dans l'array (Paris Hilton)
n°991882
WhatDe
Posté le 23-02-2005 à 21:34:24  profilanswer
 

Harkonnen a écrit :

quel est l'intéret d'apprendre à programmer une architecture qui n'existe plus ? en 32 bits, on ne se fait plus chier avec les "assume", les segments et autres merdes sorties des 16 bits ! la mémoire est adressée d'un bloc et c'est bien plus pratique.
personnellement, je trouve ça complètement con, surtout à l'heure où les 64 bits commencent à se démocratiser :sarcastic:


Malheureusement certains profs ont l'esprit très fermé...


---------------
[:whatde]
n°992306
db__
spécialiste de l'à peu près
Posté le 24-02-2005 à 13:00:12  profilanswer
 

Bonjour
Il y a une coquille dans la réponse N° 1. Le registre EI n'existe pas il s'agit en fait du registre DI.
Le choix de l'assembleur est une question de goût. J'utilisai TASM il y a 10 ans et je n'ai jamais trouvé quoique ce soit à lui reprocher.
Je n'aime pas la syntaxe AT&T mais je ne dit pas pour autant que c'est nul, je préfère NASM.
Le choix du prof d'utiliser le 16 bits est à mon avis très pertinent car lorsqu'on le maitrise, on maitrise le reste. Jongler avec les segments de 64 Ko est un exercice de style très formateur.
Cordialement

n°993137
leneuf22
Posté le 25-02-2005 à 00:15:59  profilanswer
 

Et puis il me semble que ces vieux procos, c'est utilisé dans les systèmes de feux rouges (pire, je crois que ce sont des 8088)

n°993706
Sinus
Posté le 25-02-2005 à 16:55:54  profilanswer
 

merci à tous pour vos réponses.

mood
Publicité
Posté le 25-02-2005 à 16:55:54  profilanswer
 

n°993962
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 25-02-2005 à 22:38:01  profilanswer
 

db__ a écrit :

Bonjour
Il y a une coquille dans la réponse N° 1. Le registre EI n'existe pas il s'agit en fait du registre DI.


effectivement, j'ai dérapé sur mon clavier :jap: :D
 

db__ a écrit :


Le choix de l'assembleur est une question de goût. J'utilisai TASM il y a 10 ans et je n'ai jamais trouvé quoique ce soit à lui reprocher.


ben voila ce que je lui reproche : des messages d'erreurs peu explicites, ce topic en est la preuve :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
n°994015
NightWare
When dream come true...
Posté le 26-02-2005 à 01:04:27  profilanswer
 

db__ a écrit :

Le choix du prof d'utiliser le 16 bits est à mon avis très pertinent car lorsqu'on le maitrise, on maitrise le reste. Jongler avec les segments de 64 Ko est un exercice de style très formateur.


 :heink:  Et moi, je crois surtout que le choix du prof d'enseigner une programmation 16 bits est dicté par les limites (et l'ancienneté) de sa formation...
Enseigner ça (en supposant que ce soit réellement formateur), c'est justement ce qui fait disparaitre l'asm.
Alors que l'asm 32 bits est beaucoup plus simple, très proche du c.

n°998181
db__
spécialiste de l'à peu près
Posté le 02-03-2005 à 13:09:12  profilanswer
 

Bonjour
En réponse à NightWare, je dirais alors qu'il vaudrait mieux utiliser alors l'assembleur 680x0 plus confortable que celui du x86 voir des assembleurs RISC (je ne connais pas.
Ce qui fait disparaitre l'asm n'est pas son enseignement mais l'ignorance de sa facilité de programmation par de nombreuses personnes, le manque de documentation en français et l'image déastreuse qu'il trimbale.
Dans mon cas, j'irai moins vite à faire un programme de 1000 lignes en ada que son équivalent en assembleur car l'ada ne me convient pas mais au moins j'ai essayé.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  Veut pas assembler !!

 

Sujets relatifs
Pourquoi ne veut-il pas être mon pote?page php ne s'afffiche pas sur le site mais veut se télécharger, why?
Que veut dire "STD" dans "stdout" ?[kmalloc] ... ne veut pas m'allouer plus de 128 ko ???
probleme pour choisir ou l'on veut stocker ce que l'on telecharge[PHPBB] Mettre un smiley ou on veut
/!\ HELP /!\........Ca veut dire quoi ???[MySQL] order by "quoi ?" quand on veut ref1, ref2, ref10, ref11 ...
que veut dire "->" à la place du "=" ?IE ne veut pas créer le cookie
Plus de sujets relatifs à : Veut pas assembler !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR