Advertisement
Guest User

Untitled

a guest
Oct 6th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; multi-segment executable file template.
  2.  
  3. data segment
  4.    
  5.     ; inserire qui i dati!
  6.     dato1 db 0
  7.     dato2 db 0
  8.    
  9.     ;non toccare questi paramertri!
  10.     rissomma db 0
  11.     rissottrazione db 0
  12.     rismoltiplicazione db 0
  13.     risdivisione db 0
  14.    
  15.     ;selezionare l'operazione:
  16.     ;0= Uscire
  17.     ;1= Sommare
  18.     ;2= Sottrarre
  19.     ;3= Moltiplicare
  20.     ;4= Dividere
  21.     selezione db 0
  22.     pkey db "press any key...$"
  23. ends
  24.  
  25. stack segment
  26.     dw   128  dup(0)
  27. ends
  28.  
  29. code segment
  30. start:
  31. ; set segment registers:
  32.     mov ax, data
  33.     mov ds, ax
  34.     mov es, ax
  35.            
  36. ;zona di selezione e lancio operazioni            
  37.  
  38.     mov al, selezione
  39.     cmp al, 0   ;caso0: chiusura
  40.     jz fine  
  41.    
  42.     cmp al, 1   ;caso1: somma
  43.     jz somma
  44.    
  45.     cmp al, 2   ;caso2: sottrae
  46.     jz sottrazione
  47.    
  48.     cmp al, 3   ;caso3: moltiplica
  49.     jz moltiplicazione
  50.    
  51.     cmp al, 4   ;caso4: divide
  52.     jz divisione  
  53.  
  54.     ;somma
  55. somma:
  56.     ;importa i dati
  57.     mov al, dato1
  58.     mov ah, dato2
  59.    
  60.     add al, ah ;somma i due registri con i dati
  61.    
  62.     mov rissomma, al ;trasporta il risultato nella variabile "risomma"
  63.     jmp fine ;chiude il programma
  64.    
  65.     ;sottrazione
  66. sottrazione:
  67.     ;importa i dati
  68.     mov al, dato1
  69.     mov ah, dato2
  70.    
  71.     sub al, ah ;sottrae i due registri con i dati
  72.    
  73.     mov rissottrazione, al ;trasporta il risultato nella variabile "rissottrazione"
  74.     jmp fine
  75.    
  76.     ;divisione
  77. divisione:
  78.     mov al, dato1
  79.     mov ah, dato2
  80.     mov ah, bh
  81. risottrai:    
  82.     sub ah, bh
  83.     dec al
  84.     jz inserimento
  85.     jmp risottrai
  86. inserimento:  
  87.     mov risdivisione, ah
  88.     jmp fine
  89.              
  90.     ;moltiplicazione
  91. moltiplicazione:
  92.     mov al, dato1
  93.     mov ah, dato2
  94.     mov ah, bh
  95.    
  96. riaddiziona:    
  97.     add ah, bh
  98.     dec al
  99.     jz inserimento
  100.     jmp riaddiziona  
  101.    
  102. inserimento:
  103.     mov rismoltiplicazione, ah
  104.     jmp fine  
  105.  
  106. ; fine lavori
  107. fine: nop
  108. ;chiusura programma    
  109.     lea dx, pkey
  110.     mov ah, 9
  111.     int 21h        ; output string at ds:dx
  112.    
  113.     ; wait for any key....    
  114.     mov ah, 1
  115.     int 21h
  116.    
  117.     mov ax, 4c00h ; exit to operating system.
  118.     int 21h    
  119. ends
  120.  
  121. end start ; set entry point and stop the assembler.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement