Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [assemblyx86] Sostituzione caratteri nella stringa

    Salve a tutti non riesco a trovare l'errore in questo programma che dovrebbe prendere in input una stringa e sostituire il carattere da me scelto con degli 1
    codice:
    .MODEL TINY			; direttiva di segmento per il modello di memoria desiderato
    .CODE
    NULL EQU 0
    
    ORG 100h
    MAIN:
    		jmp INIZIO                               ;salto area dati
    		
    
    ACAPO PROC
    	mov ah,2
    	mov dl,0ah
    	int 21h
    	mov dl,0dh
    	int 21h
    	ret
    ENDP	
    	
    STAMPA PROC
    STAMPA:
    	mov ah,2
    	mov dl,[bx]
    	cmp dl,NULL
    	je FINESTAMPA
    	int 21h
    	inc bx
    	jmp STAMPA
    FINESTAMPA:
    	ret
    endp
    ; AREA DATI
    ;///////////////////////////////////////
    TITOLO DB "STRSUB DI XXX",0ah,0dh,0ah,0dh
    STAMPASTRINGA1: DB "Immettere una stringa (max 20 caratteri): ",NULL
    CARDAS: DB 0,NULL
    STRINGA1: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NULL
    INIZIO:
    		lea bx,TITOLO
    		call STAMPA
    ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>INPUT STRINGA DA MODIFICARE<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    
    INPUT:
    		mov ah,1
    		int 21h
    		cmp al,0dh
    		je FINEINPUT
    		mov [bx],al
    		inc bx
    		jmp INPUT
    FINEINPUT:
    		call ACAPO
    		
    		
    		
    		lea bx,CARDAS
    		mov ah,1
    		int 21h
    		mov [bx],al
    		
    		lea bx,STRINGA1
    		lea si,CARDAS
    S_SUB:
    		mov ax,[bx]
    		cmp ax,NULL
    		je END_S_SUB
    		cmp ax,[si]
    		jne INCBX
    		mov [bx],31h
    		inc bx
    		jmp S_SUB
    INCBX:
    		inc bx
    		jmp S_SUB
    END_S_SUB:	
    
    		call ACAPO
    		lea bx,STRINGA1
    		call STAMPA
    		int 20h
    end MAIN
    non so se inserisco mississipi e poi la s mi da in output mi1 invece di mi11i11ipi
    grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Nel ciclo di controllo dei caratteri usi sempre una word

    mov ax,[bx]
    cmp ax,NULL

    ...

    cmp ax,[si]

    ...

    mov [bx],31h

    ma i caratteri sono byte non word ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    quindi invece di ax dovrei utilizzare un semiregistro?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perdonami ma se non hai capito, come hai fatto a scrivere quel codice?

    Conosci la differenza tra

    mov ax,[bx]

    e

    mov al,[bx]

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    be in mov ax,[bx] metto quello che si trova nelli'indirizzo di bx in ax mentre nell'altro in al, credo

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    E quindi ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    quindi al è metà del registro ax

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ed è a 8 bit, come i caratteri inseriti da tastiera. Non a 16 bit come ax ...

    Capito questo, apporta le correzioni al codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    quindi diventa così il controllo?
    codice:
    		lea bx,STRINGA1
    		lea si,CARDAS
    S_SUB:
    		mov al,[bx]
    		cmp al,NULL
    		je END_S_SUB
    		cmp al,[si]
    		jne INCBX
    		mov [bx],31h
    		inc bx
    		jmp S_SUB
    INCBX:
    		inc bx
    		jmp S_SUB
    END_S_SUB:
    perdona la mia indecisione ma è da poco che uso questo linguaggio

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Questo

    mov [bx],31h

    serve a scrivere un '1' al posto del carattere trovato, ma è bene indicare che si tratta di un byte .... quindi

    mov byte ptr [bx],31h
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.