per la seconda domanda è semplice...............
E poi altro ex. dati: BP=8086h. SI=8088h.DS=ABCDh.
Il risultato che ottieni è la somma degli indirizzi puntati dal registro si, che serve appunto come puntatore alle stringhe.
praticamente, senza vedere il codice presumo che i calcoli che fai sono le somme degli indirizzi di memoria puntati dal registro si in accopiata con bx
tutto quà.
infatti:
mov[bp-8+si],ds (se stampi si ottieni il numero di locazione di memoria).
per sommare numeri, devi sempre usare, cx come contatore ax per +, - *, e /. e cosa più importante azzera i regustri per non averli sporchi con risultati imprevedibili.
es.:
xor dx,dx
xor bx,bx
xor cx,cx
xor ax,ax
mov cx,4Dh
Giro:
add ax,345h
dec cx
cmp cx,0
je avanti
jmp Giro
avanti: