Salve a tutti, ho provato a risolvere il seguente problema ma non sono in grado di capire se è giusto. Volevo chiedervi se il mio ragionamento è giusto e, anche per i prossimi programmi che farò, come faccio a verificare la modifica effettiva della stringa. Sto usando EMU8086 e se apro la finestra Vars mi visualizza solo l'inizio della stringa.
PROBLEMA:
Siano date le due stringhe a e b (vettori di caratteri zero-terminati), definite come variabili esterne in un programma. Si scriva una sequenza di istruzioni in assembler che appenda la stringa più corta in coda alla stringa più lunga.
char a[], b[];
Esempio: situazione iniziale: a {'a','a','a','\0'}
b {'b','c','\0'}
situazione finale: a {'a','a','a','b','c','\0'}
MIA SOLUZIONE:
(metto solo la parte di data segment e di codice per non creare confusione)
data segment
a DB 'aaa\0'
b DB 'bc\0'
codice
MOV SI, 0
MOV DI, 0
MOV AX, 0
MOV BX, 0
ciclo:
MOV AH, a[SI]
CMP AH, '\'
JE sostituisci
INC SI
JMP ciclo
sostituisci:
LEA BX, a[SI]
MOV AL, b[DI]
CMP AL, '\'
JE exit
MOV a[BX], AL
INC SI
INC DI
JMP sostituisci
exit: etc..
Grazie in anticipo