PDA

Visualizza la versione completa : Assembly x86: Append di una stringa in coda ad un'altra


Kaylee87
25-07-2017, 15:12
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:)

Loading