Buongiorno a tutti avrei un problemaa con un programma assembly,
dpvrei trovare il maggiore tra due numeri inseriti da tastiera ma mi visualizza sempre il primo valore inserito
Posto il codice:
Dati Segment ;inizio del segmento Dati, in cui sono dichiarate le variabili che verranno utilizzate
msgacq DB "INSERISCI IL 1 CARATTERE$" ;Dichiarazione della prima stringa che verrà stampata a video
msgacq2 DB "INSERISCI IL 2 CARATTERE$"
msgvis DB "Il maggiore e': $" ;Dichiarazione della seconda stringa che verrà stampata a video
car1 DB (?) ;dichiarazzione della variabile di appoggio
car2 DB (?)
Dati Ends ;fine del segmento Dati
Pila Segment Stack ;inizio del segmento di stack
DW 100 Dup (?) ;riserviamo 100 allocazioni in memoria che serviranno per l'esecuzione del programma
Top LABEL WORD
Pila Ends ;fine del segmento di stack
Codice Segment ;inizio del segmento di codice
ASSUME CS: Codice, SS: Pila, DS: Dati, ES: Dati
Inizio:
MOV AX, Pila
MOV SS, AX
LEA AX, Top
MOV SP, AX
MOV AX, Dati
MOV DS, AX
MOV ES, AX
;inizio del programma
LEA DX, msgacq ;--------------------------------------------------------------------------------------------------
MOV AH, 09h ;---ISTRUZIONI PER LA STAMPA A VIDEO DELLA PRIMA STRINGA-------
INT 21h ;--------------------------------------------------------------------------------------------------
MOV DL, 10d ;Insieme di sei istuzioni per l'andata a capo
MOV AH, 02h
INT 21h
MOV DL, 13d ;ISTRUZIONI PER L'ANDATA A INIZIO RIGA
MOV AH, 02h
INT 21h
MOV AH, 01h ;Acqisizione dato con eco
INT 21h
MOV car1, AL ;Spostamento del carattere memorizzato in AL dentro la variabile "car"
MOV DL, 10d ;Insieme di sei istuzioni per l'andata a capo
MOV AH, 02h
INT 21h
MOV DL, 13d ;ISTRUZIONI PER L'ANDATA A INIZIO RIGA
MOV AH, 02h
INT 21h
LEA DX, msgacq2 ;--------------------------------------------------------------------------------------------------
MOV AH, 09h ;---ISTRUZIONI PER LA STAMPA A VIDEO DELLA SECONDA STRINGA-------
INT 21h ;--------------------------------------------------------------------------------------------------
MOV DL, 10d ;Insieme di sei istuzioni per l'andata a capo
MOV AH, 02h
INT 21h
MOV DL, 13d ;ISTRUZIONI PER L'ANDATA A INIZIO RIGA
MOV AH, 02h
INT 21h
MOV AH, 01h ;Acqisizione dato con eco
INT 21h
mov al, ax
CMP car1, car2
JG VIS
VIS:
MOV DL, 10d
MOV AH, 02h ;ANDATA ALLA RIGA SUCCESSIVA
INT 21h
MOV DL, 13d
MOV AH, 02h ;ISTRUZIONI PER L'ANDATA A INIZIO RIGA
INT 21h
LEA DX, msgvis
MOV AH, 09h
INT 21h
MOV DL, 10d
MOV AH, 02h ;ANDATA ALLA RIGA SUCCESSIVA
INT 21h
MOV DL, 13d
MOV AH, 02h ;ISTRUZIONI PER L'ANDATA A INIZIO RIGA
INT 21h
MOV DL, car1
MOV AH, 02h ;STAMPA A VIDEO DEL CARATTERE INSERITO
int 21h
MOV DL, 10d
MOV AH, 02h ;ANDATA ALLA RIGA SUCCESSIVA
INT 21h
MOV DL, 13d
MOV AH, 02h ;ISTRUZIONI PER L'ANDATA A INIZIO RIGA
INT 21h
MOV DL, car2
MOV AH, 02h ;STAMPA A VIDEO DEL CARATTERE INSERITO
int 21h
;ritorno al sistema operativo
MOV AL, 00h
MOV AH, 4Ch
INT 21h
Codice Ends
END Inizio