Visualizza una lettera di una stringa

di Anonimizzato21278 il
6 risposte
Ciao, data la stringa "Ciao mamma", volevo visualizzare tramite una printf la lettera 'o'
Ho scritto il programma facendo uso dell'accesso vettore stringa, ma non riesco a capire per quale motivo il programma non funziona. L'ho controllato più volte, ma mi sembra corretto!


#include<stdio.h>

int main(){

	char a[300] = { "Ciao mamma" };
	char *b;
	b = &a[0];
	char c;



	__asm{

		mov ebx, b
		mov esi, 3
		mov eax, byte ptr[ebx + esi * 1]
		mov c, eax




	}

	printf("%c", c);
}



6 Risposte

  • 
    int main() {
    
    	char a[300] = { "Ciao mamma" };
    	char c;
    
    	__asm {
    		lea ebx, a
    		mov esi, 3
    		mov al, byte ptr[ebx + esi]
    		mov c, al
    	}
    
    	printf("%c", c);
    }
    
    La parte che sbagliavi erano le ultime due righe ... un byte non va in eax
  • Ah, in poche parole ho sbagliato il registro. Dovevo mettere il registro AL in questo caso.. Grazie mille!
  • Certo ... e hai capito il perché ?
  • Non sono sicuro della mia risposta, ho pensato che magari il motivo fosse perchè sto lavorando con una stringa, e il registro AL di conseguenza rientra nella categoria di registri non ortogonali, cioè quelli che vengono usati per funzioni particolari. E' per caso cosi?
  • No ... no ...

    Semplicemente con

    byte ptr[ebx + esi]

    accedi ad un byte (perché, in questo caso, la lettera è rappresentata da un byte) e quindi il registro in cui carichi il valore deve essere da 8 bit (quindi AL e non EAX)
  • Ah ora ho capito. Grazie mille @oregon
Devi accedere o registrarti per scrivere nel forum
6 risposte