Advertisement
Jordimario

Programma In Assembly Test

May 17th, 2019
883
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .MODEL SMALL
  2. .STACK 100h
  3. .DATA
  4. NUM1 DB ?
  5. NUM2 DB ?
  6.  
  7. DOM1 DB 'Inserire il primo numero: $' ;numeri 13,10 per andare a capo $ è il tappo della stringha
  8. DOM2 DB '',13,10,' Inserire il secondo numero: $' ;numeri 13,10 per andare a capo $ è il tappo della stringha
  9. SUCCMSG   DB '',13,10,'Il risultato della operazione e:',13,10,'$'
  10. SYSTOP DB '',13,10,' Premere un tasto qualunque ',13,10,'$' ;numeri 13,10 per andare a capo $ è il tappo della stringha
  11. GREATMSG DB '',13,10,'Il primo numero e piu grande del secondo',13,10,'$'
  12. MINORMSG DB '',13,10,'Il primo numero e piu piccolo del secondo',13,10,'$'
  13. DISTACCO DB '',13,10,'--------------------------------------------',13,10,'$'
  14. RIS DB ?
  15. CAMB DB ?
  16. .CODE
  17. GRAPH PROC NEAR
  18. MOV AH,09H ;codice che mostra il contenuto di DX
  19. MOV DX,OFFSET DISTACCO ;prende l'offset della frase
  20. INT 21H ;esegue il codice
  21.  
  22. RET
  23. GRAPH ENDP
  24.  
  25.  
  26. .STARTUP
  27. MOV AX,@DATA  ;sposto l'indero .DATA in AX
  28. MOV DS,AX     ;Poi spoto tutto in DS, Utilizzo queste due istruzioni dato che il computer è l'imitato
  29. MOV AX,0000
  30.  
  31. MOV AH,09H ;tutte le istruzioni input output AH,CODICE ISTRUZIONE 09H è il codice che permette di visualizzare una variabile stringa in DX
  32. MOV DX,OFFSET DOM1 ;offset indirizzo metto l'indirizzo di NOM1 dentro DX cosi prendendo la stringa (prendedndo l'indirezzo della stringa)
  33. INT 21H ;per visualizzare la stringa DOM1
  34.  
  35. ;INSERISCO IL PRIMO NUMERO
  36. MOV AH,01H ;codice che pernette di inserire un numero in AL
  37. INT 21H ;esegui
  38. MOV NUM1,AL ;
  39.  
  40. MOV AH,09H ;
  41. MOV DX,OFFSET DOM2 ;
  42. INT 21H ;per visualizzare la stringa
  43.  
  44. ;INSERISCO IL SECONDO NUMERO
  45. MOV AH,01H ;codice che pernette di inserire  in AL
  46. INT 21H ;esegui
  47. MOV NUM2,AL ;
  48.  
  49. CALL GRAPH
  50.  
  51. ;PROGRAMMA
  52. MOV AL,NUM1
  53.  
  54. MOV AH,09H ;codice che mostra il contenuto di DX
  55. ;COMPARO I DUE NUMERI
  56. ;ESEGUE UNA SCELTA
  57. CMP NUM2,AL
  58. JG SENNO
  59.     MOV DX,OFFSET GREATMSG ;prende l'offset della frase
  60.     JMP CYCLEND
  61.  
  62. SENNO:
  63.     MOV DX,OFFSET MINORMSG ;prende l'offset della frase
  64. CYCLEND:
  65. INT 21H ;esegue il codice
  66.  
  67. CALL GRAPH
  68.  
  69. LEA DX,SUCCMSG ;prende l'offset della frase e lo inseisce in dx
  70. INT 21H ;esegue il codice
  71.  
  72. ADD AL,NUM2
  73. SUB AL,30h ;Corregge il risultato (i numeri inseriti saranno 3X+3X se non modificati)
  74. MOV RIS,AL ;COPIO IL RISULTATO IN RIS
  75.  
  76. MOV AH,02H ;MOSTRA CONTUNTO DL
  77. MOV DL,RIS
  78. INT 21H
  79.  
  80. MOV AH,09H ;mostra il contenuto di DX
  81. MOV DX,OFFSET SYSTOP ;messaggio fine programma
  82. INT 21H ;esegue il codice
  83.  
  84. MOV AH,01H ;codice che pernette di inserire  in AL
  85. INT 21H ;esegui
  86. MOV NUM2,AL ;
  87.  
  88. ;RESTITUISCO IL CONTROLLO ALLA MACCHINA
  89. MOV AH,4CH
  90. INT 21H
  91. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement