kaka83185
Messages postés10Date d'inscriptionjeudi 9 avril 2009StatutMembreDernière intervention22 avril 2009
-
9 avril 2009 à 12:40
kaka83185
Messages postés10Date d'inscriptionjeudi 9 avril 2009StatutMembreDernière intervention22 avril 2009
-
16 avril 2009 à 16:56
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
A voir également:
Unknown opcode skipped: 65 not 8086 instruction - not supported yet.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 9 avril 2009 à 18:46
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.
kaka83185
Messages postés10Date d'inscriptionjeudi 9 avril 2009StatutMembreDernière intervention22 avril 2009 9 avril 2009 à 19:15
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.
kaka83185
Messages postés10Date d'inscriptionjeudi 9 avril 2009StatutMembreDernière intervention22 avril 2009 9 avril 2009 à 19:36
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...
kaka83185
Messages postés10Date d'inscriptionjeudi 9 avril 2009StatutMembreDernière intervention22 avril 2009 9 avril 2009 à 19:42
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...
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 9 avril 2009 à 20:44
<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>
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 20142 14 avril 2009 à 15:27
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.
kaka83185
Messages postés10Date d'inscriptionjeudi 9 avril 2009StatutMembreDernière intervention22 avril 2009 16 avril 2009 à 16:56
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...