Message d'erreur

Signaler
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009
-
kaka83185
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009
-
slt a tous,
je suis débutant en langage assembleur,j'essaye de faire mon premier programme en MASM, et c'est en fait l'addition d'un nombre avec un autre nombre se trouvant dans un tableau "tab", j'ai mis l'indice de l'élément du tableau que je veux l'additionner avec une autre valeur est dans SI, mais le compilateur m'affiche le message d'erreur suivant:
Cannot generate a COM file. Remove the stack segment.
et voici mon simple programme
pile segment stack
db 100h dup(?)
pile ends

data segment
msg db "le nombre superieur est","$"
tab db 22h ,03H, 23h, 42h, 1h, 32h, 4h, 32h, 11h, 2h, 4h, 23h, 34h, 23h, 1h
data ends

code segment
assume cs:code, ds:data

code ends
main PROC

mov al,data
mov ds,ax
mov al,5h
mov si,9h
add al,tab[si]
mov dl,al
mov ah,2
int 21h
mov ah,4ch
int 21h

main ENDP
END main

et merci d'avance

14 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Il ne faut pas créer de stack segment au début du programme (dans un .COM, ce qui est ton cas) !
Le .COM est un format binaire "bêtement" copié en mémoire et exécuté : il n'y a pas de segments code, data, stack.
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

Et comment faire donc??,aidez moi à modifier ce programme SVP,car je suis vraiment egale à 0 en ce qui concerne la syntaxe du MASM...
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

j'ai modifié le programme,j'ai remplacer l'expression "segement stack" par "segement",et maintenant au moins j'ai une fenêtre qui s'affiche,je click alors sur "run" et là, je vois que des lignes bleus qui parcourent la fenêtre pour un instant,puis un message d'erreur s'affiche , qui dit :
unknown opcode skipped: 65
not 8086 instruction - not supported yet.

et je suis dsl d'être un vrai casse-tète...
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Quelque chose comme ça, non ?
code  segment
assume cs:code, ds:data

main PROC

                mov al,data
                mov ds,ax
                mov al,5h
                mov si,9h
                add al,tab[si]
                mov dl,al
                mov ah,2
                int 21h
                mov ah,4ch
                int 21h
main ENDP
code ENDS

msg db "le nombre superieur est","$"
tab db   22h ,03H, 23h, 42h, 1h, 32h, 4h, 32h, 11h, 2h, 4h, 23h, 34h, 23h, 1h
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Oups ...
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
main PROC

                mov al,data
                mov ds,ax
                mov al,5h
                mov si,9h
                add al,tab[si]
                mov dl,al
                mov ah,2
                int 21h
                mov ah,4ch
                int 21h
main ENDP
code ENDS

data SEGMENT
msg db "le nombre superieur est","$"
tab db   22h ,03H, 23h, 42h, 1h, 32h, 4h, 32h, 11h, 2h, 4h, 23h, 34h, 23h, 1h
data ENDS
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

merci pour votre réponse, une autre question c'est que le "ret" qui se trouve tt au début du programme,il sert à quoi?,et puis on le met ou dans votre programme?
et merci...
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Je vois pas de RET au tout début du programme ...
Et je n'en vois pas l'intérêt !
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

SI si, je possède le MASM, et quand je clic sur new il m'affiche ça:
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt

org 100h

; add your code here

ret


et il y a qui m'ont dit que je dois mettre le ret apres la declaration ou klk chose de comme ça...
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

et une autre question,lol , est ce que on doit toujours mettre les declarations à la fin du programme?
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

il y a une autre chose,c'est que le programme que vous m'avez donné, n'affiche pas le résultat de l'addition qui est dans DL,et merci...
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
<li>Pas besoin d'un RET, la fonction 4Ch de l'int 21h quitte le programme.</li>
<li>Non, tu pourrais très bien les mettre au début. C'était seulement pour économiser 3 octets (la taille d'un jump near). Mais je trouve que c'est plus pratique comme ça ...
</li>
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

le ret est simplement une instruction processeur qui finit soit une procedure soit une fonction.
call XXh empile l'adresse de retour e(ip) dans la pile et continue l'execution vers la nouvelle adresse XXh.
ret dépile la valeur de la pile vers le registre (e)ip et continue l'execution.
je te conseille vivement de lire la documentation intel.
cherche intel.txt, intel.pdf, ... dans un moteur de recherche.

@++
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Qui, moi ?
Bah ce ret il sert à rien ... DOS stoppe l'exécution du programme avant !
Messages postés
10
Date d'inscription
jeudi 9 avril 2009
Statut
Membre
Dernière intervention
22 avril 2009

oupss,désolé pour une erreur,c'est que je dit qu début que je travaille avec le masm, et ce n'est pas vrai,je travaille avec l'emul8086
en tout cas je te remercie vivement  
[auteur/GHUYSMANS99/549970.aspx ghuysmans99] pour ton aide
,et monsieur patatala aussi...