26/02/12 23:23
Sì.
Ma in questo caso la cmp è assolutamente superflua (il flag Z esiste da sempre nelle CPU proprio per facilitare queste operazioni).
La CMP è necessaria per confronti con valori diversi da zero.
Non è un errore usarla come hai scritto (e forse il tuo professore lo preferirebbe) ma personalmente lo riterrei un errore (proprio perché dimostri di non avere compreso bene il funzionamento dei flag).
26/02/12 23:28
xMauri
Ho effettuato un tracing però non capisco come alla fine di tutto la stringa3 riesca a contenere le prime due.
aaa
26/02/12 23:29
Guarda che il codice che ti ho suggerito copia la prima stringa ... devi fare tu il resto. Per la seconda stringa, devi operare in maniera simile.
Fra l'altro, anche la prima parte del codice, quella che hai mostrato, deve essere modificata.
Prima di tutto, non serve che tu inserisca il $ alla fine delle stringhe in input, ma soltanto alla fine della stringa di output.
In secondo luogo, sarebbe meglio che scrivessi una sola funzione di print e una sola funzione di input a cui passare i parametri richiesti.
Ultima modifica effettuata da 26/02/12 23:33
27/02/12 0:08
In poche parole, lo farei così
begin:
jmp main
stringa1 db 40, 0, 40 dup (?)
stringa2 db 40, 0, 40 dup (?)
stringa3 db 81 dup (?)
frase1 db 13, 10, 'Inserisci la prima stringa: $'
frase2 db 13, 10, 'Inserisci la seconda stringa: $'
ris db 13, 10, 'Risultato: $'
crlf db 13, 10, '$'
PRINT proc near
mov AH, 09h
int 21h
ret
PRINT endp
INPUT proc near
mov AH, 0Ah
int 21h
ret
INPUT endp
MOVE proc near
loop0:
mov al,[si]
mov [di],al
inc si
inc di
dec cx
jnz loop0
ret
MOVE endp
main:
mov ax,cs
mov ds,ax
mov es,ax
lea DX, frase1
call PRINT
lea DX, stringa1
call INPUT
lea DX, frase2
call PRINT
lea DX, stringa2
call INPUT
lea di,stringa3
lea si,stringa1+2
xor ch,ch
mov cl,stringa1+1
cmp cx,0
jz s2
call MOVE
s2:
lea si,stringa2+2
xor ch,ch
mov cl,stringa2+1
cmp cx,0
jz s3
call MOVE
s3:
mov al,'$'
mov [di],al
lea DX, ris
call PRINT
lea DX, stringa3
call PRINT
lea DX, crlf
call PRINT
mov AH, 4ch
int 21h
end begin
Ultima modifica effettuata da 27/02/12 0:16