Advertisement
Guest User

imb

a guest
Nov 11th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ==============================
  2. ;FONDAMENTALI                |
  3. ==============================
  4.  
  5. h, l;registri 8 bit
  6. dl  ; registro da cui viene preso il valore da stampare
  7. al  ; registro in cui viene salvato il carattere letto da tastiera
  8. cx  ; registro per ciclo contatore
  9.    ;registri : ax,bx,cx,dx
  10. al + ah = ax ;16 bit
  11. A -> a = "+32"  
  12.  
  13.  
  14.  
  15. ==============================
  16. ;TEORIA                      |
  17. ==============================
  18.  
  19. --------------------------------------------------------------------------------
  20. mov cx,10   ;Comando per l'iterazione
  21. myloop:
  22. ;istruzioni da eseguire
  23. ;istruzioni da eseguire
  24. ;istruzioni da eseguire
  25. loop myloop ; salta a 27 tante volte quante cx
  26.  
  27. --------------------------------------------------------------------------------
  28.  
  29. jmp myjmp
  30.  
  31. ;istruzione da saltare
  32.  
  33. myjmp:
  34. ;istruzioni da eseguire  
  35.  
  36. --------------------------------------------------------------------------------
  37.  
  38. cmp cosa1,cosa2 ; compara cosa1 con cosa2
  39. je tagequal ; salta se uguale
  40. jg taggreat ; salta se cosa1 > cosa2
  41. jl tagless ; salta se cosa2 > cosa1
  42.  
  43. ;codice che viene eseguito senza saltare
  44. ;codice che viene eseguito senza saltare
  45.  
  46. tagequal:
  47. ;salta tutti i tag
  48. ;codice che viene eseguito se comparazione risulta uguale
  49.  
  50. taggreat:
  51. ;salta tutti i tag
  52. ;codice che viene eseguito se comparazione risulta maggiore
  53.  
  54. tagless:
  55. ;salta gli altri tag
  56. ;codice che viene eseguito se comparazione risulta minore
  57. --------------------------------------------------------------------------------
  58.  
  59.  
  60. ==================
  61. | CODE SNIPPETS  |
  62. ==================
  63. ;Snippet per stampare una cosa
  64.  
  65. mov dl,cosaDaStampare ;valore in dl verra stampato
  66. mov ah,2 ;indico la funzione da eseguire [2 = stampa]
  67. int 21h ;chiamo funzione per stampare
  68.  
  69. --------------------------------------------------------------------------------
  70. ;Snippet per leggere una cosa
  71.  
  72. mov ah,1 ;indico la funzione da eseguire [1 = input]
  73. int 21h ;chiamo funzione per l'input
  74. mov doveVoglioSalvareIlValore,al ;valore inserito viene salvato in al di default
  75.  
  76.  
  77. --------------------------------------------------------------------------------
  78. ;Programaa che SALVA SERIE di VALORI in MEMORIA [es. 200h, 201h, 202h,...]
  79. mov bl,200h ; scrivo in memoria da [default 200h]
  80. mov cx,10 ; faccio il ciclo di [DEFAULT 10] volte
  81.  
  82. LeggiEsalvaInMemoria:
  83. mov ah,1 ; dico di eseguire la funzione per leggere da tastiera
  84. int 21h ; chiamo la funzione
  85. mov [bl],al ;salvo il dato inserito {il computer lo salva in al} nella cella di memoria con valore bl [200h] in questo caso {1o ciclo}
  86. inc bl ; incrementa la cella di memoria
  87. loop LeggiEsalvaInMemoria ; va all'etichetta e riparte il ciclo
  88.  
  89. --------------------------------------------------------------------------------
  90.  
  91. ;LEGGE serie valori DA MEMORIA
  92.  
  93. mov cx,10   ; ciclo 10 volte default
  94. leggeloop:
  95. mov dl,[bx] ; [bx] rappresenta primo dato di una serie da stampare [es. 200h, 201h, 202h,...]
  96. inc bx
  97.  
  98. ;STARTOF STAMPATURA {per + info vedi [63]}
  99. mov dl,cosaDaStampare ;valore in dl verra stampato
  100. mov ah,2 ;indico la funzione da eseguire [2 = stampa]
  101. int 21h ;chiamo funzione per stampare
  102. ;ENDOF STAMPATURA
  103.  
  104. loop leggeloop
  105.  
  106.  
  107. --------------------------------------------------------------------------------
  108.  
  109.  
  110. ;Programma che CONFRONTA BH,BL e mette MAGGIORE IN BH
  111.  
  112. ;prende i 2 valori se bh maggiore passa, se no inverti
  113. cmp bh,bl
  114. jg pass
  115. ; STARTOF scambia i valori
  116. mov dh,bh
  117. mov dl,bl
  118. mov bh,dl
  119. mov bl,dh
  120. ; ENDOF scambia i valori
  121. pass:
  122. ;dopo controllo (bh > bl)
  123. ;contiua programma....
  124.  
  125. --------------------------------------------------------------------------------
  126.  
  127. ;STAMPA {cosa} SE {input}
  128.  
  129. cmp InputDellUtente,TermineConfronto  ;confronta le 2 cose
  130.  
  131. je seUguale       ;se SI vai a seUguale
  132. jmp Esci          ;Salta alla fine SE confronto ERRATO
  133.  
  134. seUguale: ;Versione SI
  135. ;Codice per comparazione corretta
  136. ;Codice per comparazione corretta
  137.  
  138. Esci:     ;Versione NO
  139. ;Codice per comparazione errata
  140. ;Codice per comparazione errata
  141.  
  142. --------------------------------------------------------------------------------
  143.  
  144. ;Compara 2 input
  145. ;Dice se n1 rispetto a n2 e'
  146. ;|| uguale || maggiore || minore
  147.  
  148. ;Sostituisci codice dentro con cio che ti serve. QUESTO CODICE STAMPA
  149.  
  150. cmp bh,bl   ;bh = n1 || bl = n2
  151. je uguale    ; Caso n1 = n2
  152. jg maggiore  ; Caso n1 > n2
  153. jl minore    ; Caso n1 < n2
  154.  
  155. uguale:      ;Se n1 = n2
  156. mov dl,3Dh   ;Stampa il carattere "="
  157. mov ah,2
  158. int 21h
  159.  
  160. maggiore:    ;Se n1 > n2
  161. mov dl,3Eh   ;Stampa il carattere ">"
  162. mov ah,2
  163. int 21h
  164.  
  165. minore:      ;Se n1 < n2
  166. mov dl,3Ch   ;Stampa il carattere "<"
  167. mov ah,2
  168. int 21h
  169.  
  170. --------------------------------------------------------------------------------
  171.  
  172. ;Inverte input
  173.  
  174. ;vedi 78 per creare la serie
  175.  
  176. mov bx,[CellaUltimoValore] ;Deve partire dalla CELLA dell'ULTIMO VALORE nella SERIE
  177. mov cx,10   ;numero valori, [default 10]
  178.  
  179. leggiSerieAlContrario:
  180. mov dl,[bx] ;preparo il valore dell'ultima cella ad essere stampato [sposto in dl]
  181. mov ah,2    ;vedi 65 per ulteriori info
  182. int 21h
  183. dec bx      ;passa al valore PRECEDENTE della SERIE [es. 210h, 209h, 208h, 207h,...]
  184. loop leggiSerieAlContrario  ; vedi 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement