Salve a tutti!
Oggi ho provato a dare un occhiata alle stringhe in Assembly 8086 e ho scoperto l'istruzione
MOVSB e
MOVSW.
In questo programma ho provato ad eseguire l'istruzione MOVSB con successo, ecco il sorgente:
DATA SEGMENT PUBLIC
STR1 DB "HELLO WORLD",10,13,'$'
DATA ENDS ;FINE DEL SEGMENTO DEI DATI
EXTRA SEGMENT PUBLIC
DIM EQU 15 ;COSTANTE PER DIMENSIONARE ARRAY PER STRINGA
STR2 DB DIM DUP(?) ;ARRAY PER STRINGA
EXTRA ENDS ;FINE DEL SEGMENTO EXTRA DATI
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EXTRA
INIZIO:
;CARICO I DATI
MOV AX,DATA
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
;PULIZIA MONITOR
MOV AX,03H
INT 10H
;CARICO GLI INDIRIZZI IN DI E SI
LEA SI,STR1
LEA DI,STR2
MOV CX,DIM ;METTO IN CX IL VALORE DELLA LUNGHEZZA DELLA STRINGA
CLD ;AZZERO IL VALORE DELLA FLAG DF QUINDI LE OPERAZIONI SULLE STRINGHE SARANNO ESEGUITE IN "AVANTI"
REP MOVSB
MOV AH,09H
LEA DX,STR2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS ;FINE DEL SEGMENTO DEI DATI
END INIZIO ;CHIUSURA ETICHETTA CHE INDICA INIZIO DEL PROGRAMMA
Tuttavia mi è sorto un dubbio:
Con questa istruzione lui copia la prima stringa che trova nella seconda che trova? O usa un'altro meccanismo?
Vorrei avere solo questo chiarimento, grazie