Nijkstral

.MODEL SMALL
.STACK 100h
.DATA
NUM1 DB ?
NUM2 DB ?
 
DOM1 DB 'Inserire il primo numero: $' ;numeri 13,10 per andare a capo $ è il tappo della stringha
DOM2 DB '',13,10,' Inserire il secondo numero: $' ;numeri 13,10 per andare a capo $ è il tappo della stringha
SUCCMSG   DB '',13,10,'Il risultato della operazione e:',13,10,'$'
SYSTOP DB '',13,10,' Premere un tasto qualunque ',13,10,'$' ;numeri 13,10 per andare a capo $ è il tappo della stringha
GREATMSG DB '',13,10,'Il primo numero e piu grande del secondo',13,10,'$'
MINORMSG DB '',13,10,'Il primo numero e piu piccolo del secondo',13,10,'$'
DISTACCO DB '',13,10,'--------------------------------------------',13,10,'$'
RIS DB ?
CAMB DB ?
.CODE
GRAPH PROC NEAR
MOV AH,09H ;codice che mostra il contenuto di DX
MOV DX,OFFSET DISTACCO ;prende l'offset della frase
INT 21H ;esegue il codice
 
RET
GRAPH ENDP
 
 
.STARTUP
MOV AX,@DATA  ;sposto l'indero .DATA in AX
MOV DS,AX     ;Poi spoto tutto in DS, Utilizzo queste due istruzioni dato che il computer è l'imitato
MOV AX,0000
 
MOV AH,09H ;tutte le istruzioni input output AH,CODICE ISTRUZIONE 09H è il codice che permette di visualizzare una variabile stringa in DX
MOV DX,OFFSET DOM1 ;offset indirizzo metto l'indirizzo di NOM1 dentro DX cosi prendendo la stringa (prendedndo l'indirezzo della stringa)
INT 21H ;per visualizzare la stringa DOM1
 
;INSERISCO IL PRIMO NUMERO
MOV AH,01H ;codice che pernette di inserire un numero in AL
INT 21H ;esegui
MOV NUM1,AL ;
 
MOV AH,09H ;
MOV DX,OFFSET DOM2 ;
INT 21H ;per visualizzare la stringa
 
;INSERISCO IL SECONDO NUMERO
MOV AH,01H ;codice che pernette di inserire  in AL
INT 21H ;esegui
MOV NUM2,AL ;
 
CALL GRAPH
 
;PROGRAMMA
MOV AL,NUM1
 
MOV AH,09H ;codice che mostra il contenuto di DX
;COMPARO I DUE NUMERI
;ESEGUE UNA SCELTA
CMP NUM2,AL
JG SENNO
    MOV DX,OFFSET GREATMSG ;prende l'offset della frase
    JMP CYCLEND
 
SENNO:
    MOV DX,OFFSET MINORMSG ;prende l'offset della frase
CYCLEND:
INT 21H ;esegue il codice
 
CALL GRAPH
 
LEA DX,SUCCMSG ;prende l'offset della frase e lo inseisce in dx
INT 21H ;esegue il codice
 
ADD AL,NUM2
SUB AL,30h ;Corregge il risultato (i numeri inseriti saranno 3X+3X se non modificati)
MOV RIS,AL ;COPIO IL RISULTATO IN RIS
 
MOV AH,02H ;MOSTRA CONTUNTO DL
MOV DL,RIS
INT 21H
 
MOV AH,09H ;mostra il contenuto di DX
MOV DX,OFFSET SYSTOP ;messaggio fine programma
INT 21H ;esegue il codice
 
MOV AH,01H ;codice che pernette di inserire  in AL
INT 21H ;esegui
MOV NUM2,AL ;
 
;RESTITUISCO IL CONTROLLO ALLA MACCHINA
MOV AH,4CH
INT 21H
END