Advertisement
Guest User

Untitled

a guest
Nov 29th, 2015
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;*******************************************************************
  2. ;* Digitális technika VIMIAA01 HF2 megoldás                        *
  3. ;* Adatvektor aktív egyes bitjeinek megszámolása,                  *
  4. ;* eredmény kijelzése a LED periférián                             *
  5. ;*******************************************************************
  6.  
  7. DEF LD  0x80                 ; LED adatregiszter (írható/olvasható).
  8.  
  9. DATA
  10.  
  11. ;*******************************************************************
  12. ;* Az adatvektor tárolása a memóriában                             *
  13. ;*******************************************************************
  14.  
  15. DIGIT_CODE:
  16.     DB 0x29, 0x7A, 0x37, 0x45, 0x16, 0x5B, 0x60 ; Digit kód: 2734156
  17.  
  18. ;*******************************************************************
  19. ;* A HF2: Adatvektor 1 értékű bitjeinek megszámolása               *
  20. ;* Regiszter használat: r0 = Adatpointer,                          *
  21. ;*                      r1 = Adatelem számláló,                    *
  22. ;*                      r2 = Bitszámláló                           *
  23. ;*                      r8 - r15 = Munkaregiszterek                *
  24. ;*******************************************************************
  25.  
  26. CODE
  27.  
  28. start:
  29.     MOV r0, #DIGIT_CODE            ; Az adatvektor mutató betöltése.
  30.     MOV r1, #0x07                         ; Adatvektor bájtok száma.
  31.     MOV r2, #0x00                      ; A bitszámláló előkészítése.
  32.  
  33. read:
  34.     MOV r8, (r0)           ; Aktuális adatelem betöltése memóriából.
  35.     ADD r0, #0x01                     ; Adatvektor mutató léptetése.
  36.    
  37. bit_loop:
  38.     SL0 r8                     ; Shiftelés balra, nulla behozásával.
  39.     ADC r2, #0x00            ; Átvitel hozzáadása a bájtszámlálóhoz.
  40.     CMP r8, #0x00 ; Nincs további teendő, ha az akutális elem nulla.
  41.     JNZ bit_loop     ; Ha nem nulla, akkor folyatatjuk a shiftelést.
  42.     SUB r1, #0x01               ; Adatvektor bájtjainak csökkentése.
  43.     JNZ read      ; Ha nem nulla, akkor még van feldolgozatlan elem.
  44.     MOV LD, r2                        ; Eredmény kiírása a LED-ekre.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement