Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

59/121

Programovací jazyky

   1 start:               ; Storojový kód 8051
   2     mov P1, #0ABH    ; 75   90   AB
   3     mov P3, #0CDH    ; 75   B0   CD 
   4     mov P1, r0       ; 88   90
   5 sem:
   6     mov A, R0        ; E8
   7     inc A            ; 4A
   8     inc R2           ; 0A
   9     AJMP sem         ; 01   08  
  10 END 

`--> stáhnout

Můžete porovnat následující program v C a v Assembleru , který řeší stejný problém -- generování náhodného čísla na 7-segmentu

   1 void main(void)
   2 {
   3     char cislo = 1;
   4     while (1) {
   5         if (TLACITKO) {
   6             DISPLAY = 0b01111111;
   7             cislo = cislo < 6 ? cislo + 1 : 1;
   8         } else {
   9             DISPLAY = segment[cislo];
  10         }
  11     }
  12 }

`--> stáhnout

   1 TL bit P1.0
   2 
   3 mov DPTR, #segment
   4 mov R0, #1d
   5 
   6 kostka:
   7     jnb TL, cykluj 
   8     CALL zobrazuj
   9     jmp kostka
  10 
  11 cykluj:
  12     mov P2, #0FFH 
  13     clr P2.7     
  14     inc R0      
  15     cjne R0, #7d, nenuluj 
  16     mov R0, #1d
  17 nenuluj:
  18     jmp kostka
  19    
  20 zobrazuj:
  21     mov A, R0
  22     movc A,@A+DPTR
  23     mov P2, A
  24     RET

`--> stáhnout

Rád bych nabídl ještě jedno porovnání. Tentokrát jde o práci s více-bytovým číslem. Program v C vypadá celkem nevině a jednoduše:

   1 #include <at89x52.h>
   2 
   3 long int i = 0;
   4 void main(void)
   5 {
   6    while (1) {
   7        i++;
   8    }
   9 }

`--> stáhnout

Program v Assembleru je o dost delší. Tento zdrojový kód vznik disassemblováním přeloženého C.

   1  ORG 0h
   2    ljmp    label0
   3 label4:    ljmp    label1
   4 label0:    mov SP, #0Bh
   5    lcall   label2
   6    mov A, DPL
   7    jz  label3
   8    ljmp    label4
   9 label3:    mov R1, #0h
  10    mov A, R1
  11    orl A, #0h
  12    jz  label5
  13    mov R2, #0h
  14    mov DPTR, #084h
  15    mov R0, #0h
  16    mov P2, #0h
  17 label7:    clr A
  18    movc    A, @A+DPTR
  19    movx    @R0, A
  20    inc DPTR
  21    inc R0
  22    cjne    R0, #0h, label6
  23    inc P2
  24 label6:    djnz    R1, label7
  25    djnz    R2, label7
  26    mov P2, #0FFh
  27 label5:    clr A
  28    mov R0, #7Fh
  29 label8:    mov @R0, A
  30    djnz    R0, label8
  31    mov R0, #0h
  32    mov A, R0
  33    orl A, #0h
  34    jz  label9
  35    mov R1, #0h
  36    mov P2, #0h
  37    clr A
  38 label10:
  39    movx    @R1, A
  40    inc R1
  41    djnz    R0, label10
  42 label9:    mov R0, #0h
  43    mov A, R0
  44    orl A, #0h
  45    jz  label11
  46    mov R1, #0h
  47    mov DPTR, #000h
  48    clr A
  49 label12:
  50    movx    @DPTR, A
  51    inc DPTR
  52    djnz    R0, label12
  53    djnz    R1, label12
  54 label11:
  55    clr A
  56    mov 8h, A
  57    mov 9h, A
  58    mov 0Ah, A
  59    mov 0Bh, A
  60    ljmp    label4
  61 label1:    inc 8h
  62    clr A
  63    cjne    A, 8h, label13
  64    inc 9h
  65    cjne    A, 9h, label13
  66    inc 0Ah
  67    cjne    A, 0Ah, label1
  68    inc 0Bh
  69 label13:
  70    sjmp    label1
  71    ret
  72 label2:    mov DPL, #0h
  73    ret
  74 
  75    END

`--> stáhnout

Programovací jazyky vyšší úrovně

Fibonacciho posloupnost v Pythonu:

   1 a, b = 0, 1
   2 while b < n:
   3     print b,
   4     a, b = b, a+b

`--> stáhnout

ByteCode

přehled jazyků

| navigace |

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net