riccardinofuffolo

Calcolatori elettronici - #305

Jun 7th, 2011
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .MODEL SMALL
  2. .STACK
  3. .DATA
  4.  
  5. BIN DB 01001111B  
  6. MSG DB "# bit a 1: ", "$"
  7.  
  8. .CODE
  9. .STARTUP
  10.  
  11. MOV BL, BIN         ; Così non accedo più in memoria -> più veloce!
  12. MOV CX, 8           ; Passi da eseguire        
  13. MOV BH, 0           ; Accumulatore dei bit a 1
  14.  
  15. CONTA:   SHL BL, 1  ; Perdo volontariamente il MSB, che va nel CF
  16.          ADC BH, 0  ; Se il bit del CF è andato a 1, conto la presenza di un bit a 1
  17.          LOOP CONTA ; Ripeto l'operazione per tutti gli 8 bit
  18.  
  19. LEA DX, MSG         ; Operazione di stampa [nota 1]
  20. MOV AH, 09
  21. INT 21H
  22.  
  23. MOV DL, BH  
  24. ADD DL, 48
  25. MOV AH, 02
  26. INT 21H        
  27.  
  28. .EXIT
  29. END
  30.  
  31. ; [nota 1]: Occhio che le INT21H hanno anche un ritorno, che è bene guardare prima di
  32. ; impostare tutto il programma. Ad esempio, se avessi usato AL come accumulatore dei
  33. ; bit a 1, questo sarebbe stato sovrascritto da 24H dopo la stampa della stringa.
Advertisement
Add Comment
Please, Sign In to add comment