Visualizza una lettera di una stringa

di il
6 risposte

Visualizza una lettera di una stringa

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

  • Re: Visualizza una lettera di una stringa

    
    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
  • Re: Visualizza una lettera di una stringa

    Ah, in poche parole ho sbagliato il registro. Dovevo mettere il registro AL in questo caso.. Grazie mille!
  • Re: Visualizza una lettera di una stringa

    Certo ... e hai capito il perché ?
  • Re: Visualizza una lettera di una stringa

    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?
  • Re: Visualizza una lettera di una stringa

    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)
  • Re: Visualizza una lettera di una stringa

    Ah ora ho capito. Grazie mille @oregon
Devi accedere o registrarti per scrivere nel forum
6 risposte