Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > x86 16-bits
x86 16-bits Architecture x86 16 bits et ses outils (assembleurs, debuggers, émulateurs...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/04/2012, 14h19   #1
zadrov_nicolai
 
Homme
Inscription : février 2012
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : février 2012
Messages : 7
Points : -1
Points : -1
Par défaut on ne peut pas faire mov SI, Al ?

bonjour tout le monde,
je travail en assembleur x86 , j'ai fais les instructions suivante :
Code :
1
2
3
4
5
 
mov al, 5
mov SI, chaine ; j'ai mis l'adresse d'une chaine de caractère dans SI
add SI, 2
mov SI, al
et le problème est dans cette ligne

quand au code d'erreur :
Code :
invalid combination of opcode and operands
Pourquoi il a accepté d'ajouter 2 a SI, mais il ne l'a pas accepté pour AL, pourtant al contient 5, sa reviens a dire : "mov SI, 5" n'est ce pas ?

merci
zadrov_nicolai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 14h32   #2
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Hoe,

Non, ce n'est pas la même chose, car il a interprété ton 5 comme une valeur sur 2 octets (les valeurs dites "immédiates", comme le 5 dans ton cas, sont toujours interprétées dans le type correspondant à la destination).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 14h58   #3
edfed
Membre chevronné
 
Avatar de edfed
 
être humain
Inscription : décembre 2007
Messages : 471
Détails du profil
Informations professionnelles :
Activité : être humain

Informations forums :
Inscription : décembre 2007
Messages : 471
Points : 619
Points : 619
soit tu veux copier la valeur de al dans la chaine POINTEE par si, alors il faut "faire":
ou alors tu veux copier la valeur du registre al dans le registre si (ce qui est presque un non sens), là, il faut utiliser une instruction de copie avec conversion de "type":
Code :
1
2
3
4
 
movzx si,al ;pour une valeur non signée
;ou
movsx si,al;opur une valeur signée
voilà.
__________________
http://www.pending.me.uk/nmc/bla_1356091200.png
Vivement 21/12/2012
edfed est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/04/2012, 15h08   #4
touirik
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 25
Points : 5
Points : 5
Citation:
Envoyé par droggo Voir le message
Hoe,

Non, ce n'est pas la même chose, car il a interprété ton 5 comme une valeur sur 2 octets (les valeurs dites "immédiates", comme le 5 dans ton cas, sont toujours interprétées dans le type correspondant à la destination).
ah oui, car SI est sur 2 bytes, et Al est sur 1 byte. merci
touirik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 15h10   #5
touirik
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 25
Points : 5
Points : 5
Code :
1
2
3
4
 
movzx si,al ;pour une valeur non signée
;ou
movsx si,al;opur une valeur signée
[/QUOTE]

intéressante cette instruction, merci
touirik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 15h34   #6
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Voa,
Citation:
Envoyé par touirik Voir le message
intéressante cette instruction, merci
Si tu tiens à faire de l'assembleur, il faut te procurer la liste d'instructions disponibles (facile à trouver sur le site Intel).

Et une fois que tu l'as, au moins jeter un coup d'œil sur les instructions disponibles, même si ce n'est pas en détail, mais avoir une idée de ce qu'elles font (ça évite de parfois se casser la tête pour obtenir un résultat qu'une instruction sait faire).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2012, 16h41   #7
touirik
Invité régulier
 
Homme
Inscription : avril 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 25
Points : 5
Points : 5
oui c'est vrai, je dois m'habituer à lire des documentations en anglais
touirik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h22.


 
 
 
 
Partenaires

Hébergement Web