Donc, je cours _asm avec C++ en utilisant Visual Studio. Donc, je suis novice en programmation d'assemblage, je suis un manuel et je sais que le registre général EAX contient 32 bits et AX est 16 avec AL, AH étant bas/haut.Instruction MOV pour les registres
Alors, comment pourrais-je déplacer plusieurs commandes en utilisant seulement l'instruction MOV. J'ai essayé de faire
MOV AL, 'a', 'c' , 'e'
mais j'obtiens une quantité illégale d'opérandes. Thats seulement 3, donc ne devrait pas être capable de détenir cette valeur?
J'ai essayé après avoir fait
MOV EAX, 0
MOV AL, 'a', 'c' , 'e'
Alors, comment pourrais-je passer trois valeurs différentes, voire plus comme 12 lettres à 8 bits? Est-ce que je ne devrais pas me déplacer 0 à eax effacer à la fois le bas et le haut du bit 8 permettant à ces 3 variables d'être déplacées? Je veux seulement utiliser le registre de 8 bits pour y déplacer plusieurs valeurs, dans ce cas qui est 3. J'aime aussi savoir comment faire plus comme 12 lettres en 8 bits. J'ai lu que vous feriez MOV EAX, 0 mais je n'ai pas eu de chance.
Remarque: Ce n'est pas le programme complet, j'ai seulement inclus le problème avec MOV.
#include "stdafx.h"
#include "stdio.h"
#include <iostream>
using namespace std;
using std::cout;
using std::cin;
int main(void)
{
char test
_asm
{
MOV EAX, 0
MOV AL, 'a', 'c' , 'e'
}
}
Avez-vous essayé 'mov eax, 'ace''? –
Inline asm n'est pas le meilleur choix pour apprendre asm, IMO. Il y a quelques suggestions dans le wiki du tag http://stackoverflow.com/tags/x86/info. 'mov' ne peut pas prendre plusieurs opérandes source. Vous pouvez amener l'assembleur à faire des calculs pour produire une valeur pour un opérande source immédiat, mais la syntaxe ressemble à 'mov eax, ('a' << 16 | 'c' << 8 | 'e')'. (Ou quelque chose comme ça). Notez que c'est une expression unique qui a une valeur entière. Et comment pensez-vous que 12 lettres peuvent tenir dans 8 bits de toute façon? Un caractère ASCII est 8 bits. –
Donc, le déplacement de 0 vers EAX vous permettrait seulement d'insérer 8 lettres maximum dans le registre de 8 bits (hi & low). Je comprends que maintenant, je pensais pour une raison quelconque qu'il y avait un moyen de le faire. Merci pour votre aide, je pense aussi que mov a plusieurs opérandes, – user5894146