Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    3

    Problemi con i puntatori

    Ciao a tutti. Sto facendo un programmino assembly, e mi manca poco alla conclusione. Tuttavia non capisco bene dove sbaglio con i puntatori. Mi spiego meglio.
    Io ho memorizzato una stringa di parole qui:
    SUB_STR1 DB MAX_LUNGH_STR DUP(?)
    Ho memorizzato la lunghezza di questa stringa qui:
    LUNGH_SSTR1 DB ?
    E memorizzo una lettera che mi serve per poi fare un controllo dopo qui: LETTERA_PREC DB ?


    Quello che mi interessa è prendere da SUB_STR1, che contiene ad esempio la stringa ‘abc’, la lettera ‘b’ e memorizzarla in LETTERA_PREC.

    Io ho fatto uno cosa di questo tipo:

    SUB [LUNGH_SSTR1],1

    PUSH AX

    PUSH DX

    MOV DX,[LUNGH_SSTR1]

    SUB DX,1

    MOV SI,DX

    MOV AX,SUB_STR1[SI]

    MOV [LETTERA_PREC],AX

    POP DX

    POP AX

    Ma non funziona; il compilatore dice ‘Operand types do not match’ alle righe delle istruzioni:
    'MOV DX,[LUNGH_SSTR1]'
    'MOV AX,SUB_STR1[SI]'
    'MOV [LETTERA_PREC],AX'

    Grazie a tutti coloro che prenderanno in considerazione il mio problema.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perche' usi dei registri a 16 bit

    DX

    AX

    AX

    quando stai trattando quantita' che sono ad 8 bit (come i caratteri e la lunghezza della stringa) ...?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    3
    Anche con i registri a 8 bit non funziona... Tu come faresti?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    MOV DH,0
    MOV DL,[LUNGH_SSTR1]

    MOV AL,SUB_STR1[SI]

    MOV [LETTERA_PREC],AL
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Come non funziona? Cosa hai scritto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    3
    Ok ho tutto risolto.. Si trattava di un errore di distrazione... Questa è la procedura corretta:
    SUB [LUNGH_SSTR1],1
    PUSH AX
    PUSH DX
    MOV DH,0
    MOV DL,[LUNGH_SSTR1]
    SUB DL,1
    MOV SI,DX
    MOV AL,SUB_STR1[SI]
    MOV [LETTERA_PREC],AL
    POP DX
    POP AX
    Grazie ancora per l'aiuto.. Buona serata..

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.