aide pour assembleur

aide pour assembleur - ASM - Programmation

Marsh Posté le 06-11-2010 à 13:15:42    

bonjour,
j'ai écrit un code assembleur pour saisir une chaine de caractere qui se termine par # et puis calculer sa taille et l'afficher mais en assemblant j'ai eu des erreurs que j'ignore la façon de corriger.toute aide sera la bienvenue :)  
les erreurs obtenues sont
<1> unkonwn character
<2> unkonwn character
<3> segment name is superfluous
<3> extra characters on line
<48> unexpected end of file encountered
et le code écrit est le suivant:
.386
.model small
.stack 200h
.data
commande db 10,13,"saisir une chaine$"
msg db 10,13,"la taille  est$"
tab db 20 dup (0)
.code
main proc  
mov ax,@data
mov ds, ax
mov si,offset tab
mov cx, 16
mov bx,0
saisie:  
mov dx,offset commande
mov ah,9
int 21h
mov ah, 1
int 21h
mov BYTE PTR[si], al
cmp al,35
JE affiche
add si,type word  
inc bx  
loop saisie
Jmp affiche
affiche:
mov dx,offset msg
    mov ah,9
    int 21h
    mov ax,bx  
    mov dl, al
    Add dl, 48
    mov ah, 2
    int 21h    
main endp
 
end main

Reply

Marsh Posté le 06-11-2010 à 13:15:42   

Reply

Marsh Posté le 07-11-2010 à 19:19:23    

bon j'ai résolu les erreurs que j'avais en faisant une modification sur le code mais il en reste une qui est "unexpected end of file encoutered".
quelles sont les raisons de son apparition et les solutions?.mercii

Reply

Marsh Posté le 07-11-2010 à 22:29:00    

Habituellement, ce message "unexpected end of file encountered" se rencontre quand l'assembleur attend une fin de quelque chose, mais il voit la fin de fichier à la place.
Une fin de quelque chose, cela peut-être un crochant fermant, s'il y a eu un crochet ouvrant avant, ou une parenthèse fermante, ou un guillemet fermant, ou une apostrophe fermante, etc. Peut-être qu'il faut une apostrophe au lieu d'un guillemet pour entourer les chaines de caractères. Dans le code qui est montré, rien ne semble oublié, mais il doit y avoir quelque chose. Voici, à titre d'exemple, un programme assembleur qui marche, mais qui est pour un vieil assembleur :

;   .MODEL small
;   .STACK 100h
;   .CODE
 
_TEXT SEGMENT WORD PUBLIC 'CODE'
main:
   mov  ax,_DATA
   mov  ds,ax                  ;set DS to point to the data segment
   mov  ah,9                   ;DOS print string function
   mov  dx,OFFSET HelloMessage ;point to "Hello, world"
   int  21h                    ;display "Hello, world"
   mov  ax,10
   mov  ah,4ch                 ;DOS terminate program function
   int  21h                    ;terminate the program
_TEXT ENDS
 
_DATA SEGMENT WORD PUBLIC 'DATA'
HelloMessage DB 'Hello, world',13,10,'$'
_DATA ENDS
 
_STACK SEGMENT PARA STACK 'STACK'
    DB 128 dup (?)
_STACK ENDS
 
   END main


Message édité par olivthill le 07-11-2010 à 22:30:55
Reply

Marsh Posté le 07-11-2010 à 23:23:04    

j'ai essayé de mettre des apostrophes au lieu des guillemet mais ça ne marche pas!!!! je ne sais plus quoi faiiiiiiiire :'(

Reply

Marsh Posté le 08-11-2010 à 08:07:02    

Citation :

add si,type word

Je viens de voir ça ! What is it? ¿qué es? Che cosa? Was ist das ? Chto eta ? Nan dess ka ? Mā Hw؟ ?  Kesako ? Quid est ? Il manque quelque chose. Un chiffre pour dire de combien il faut incrémenter si ? Voilà peut-être ce que le compilateur attend.

Reply

Marsh Posté le 08-11-2010 à 13:39:01    

A l'époque ou je faisais de l'assembleur, l'indentation avait une signification... ça doit dépendre de ton compilateur, t'utilise quoi?

 

Edit: Je trouve aussi bizarre que tu aies deux end à la fin.


Message édité par h3bus le 08-11-2010 à 13:49:20

---------------
sheep++
Reply

Marsh Posté le 08-11-2010 à 13:54:28    

olivthill a écrit :

Citation :

add si,type word

Je viens de voir ça ! What is it? ¿qué es? Che cosa? Was ist das ? Chto eta ? Nan dess ka ? Mā Hw؟ ?  Kesako ? Quid est ? Il manque quelque chose. Un chiffre pour dire de combien il faut incrémenter si ? Voilà peut-être ce que le compilateur attend.


Non, "add si, type word" va ajouter la taille d'un word à si.
Ca serait bien que l'auteur du post nous dise quel assembleur il utilise, car son message est plus une erreur syntaxique, donc fortement liée à l'assembleur utilisé.


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

Marsh Posté le 08-11-2010 à 14:26:53    

Ce serait plus simple de faire add si,1 ou inc si, et ca serait compatible avec plus d'assembleurs.

Reply

Marsh Posté le 08-11-2010 à 17:24:07    

j'utilise tasm

Reply

Sujets relatifs:

Leave a Replay

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