Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .MODEL small
  2. .STACK
  3. .DATA
  4.  
  5.     frequenza0 DW 0
  6.     frequenza1 DW 0
  7.  
  8.     numero DW 512
  9.     mem DW ?
  10.  
  11. .CODE
  12. .STARTUP
  13.  
  14.     MOV AX, numero
  15.     AND AX, 1
  16.     MOV BX, AX ; Contiene il bit da controllare.
  17.    
  18.     MOV CX, 0 ; Tiene conto di quanti bit abbiamo fatto lo shift.
  19.     MOV DX, 0 ; Frequenza.
  20.  
  21.     ciclo:
  22.        
  23.         CMP CX, 16
  24.         JB esci ; Quando è 16 sono stati controllati tutti i bit.
  25.        
  26.         MOV AX, numero
  27.         MOV mem, CX ; Memorizzo il contatore.
  28.        
  29.         shift:
  30.            
  31.             SHR AX, 1
  32.             LOOP shift
  33.             MOV CX, mem
  34.        
  35.         AND AX, 1
  36.         CMP AX, BX
  37.        
  38.         JE incrementa ; Abbiamo trovato un altro bit di frequenza.
  39.        
  40.             CMP BX,1
  41.             JE frequ_1 ;se si sta controllando una frequenza di 1.
  42.                 ; altrimenti si confronta la frequenza di 0.
  43.                 CMP DX, frequenza_0 ; se la frquenza contata è maggiore di quella memorizzata va aggiornata quella memorizzata
  44.                 JA frequenza_0_maggiore
  45.                 JMP reset
  46.                 frequenza_0_maggiore:
  47.                
  48.                     MOV frequenza_0, DX
  49.                     JMP reset
  50.                    
  51.                 frequ_1: CMP DX,frequenza_1
  52.                
  53.                     JA frequenza_1_maggiore
  54.                     JMP reset ; altrimenti si resetta.
  55.                    
  56.                     frequenza_1_maggiore:
  57.                        
  58.                         MOV frequenza_1,DX
  59.                         JMP reset
  60.  
  61.             reset:
  62.                
  63.                 MOV BX, AX ; Si mette nel bit di controllo il bit trovato.
  64.                 MOV CX, mem ; Si ripristina il contatore di shift.
  65.                 MOV DX, 0 ; Si inizializza la frquenza a 0 e non a uno perché si ricontrolla lo stesso bit.
  66.                 JMP ciclo ; Si ripete il ciclo
  67.  
  68.         incrementa:
  69.  
  70.             INC DX ; Incrementa la frequenza.
  71.             MOV CX, mem;
  72.             INC CX
  73.             JMP ciclo
  74.         esci:
  75.  
  76.             INT 21h
  77. .EXIT
  78. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement