CPU

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky.)
 
m (Procesor z pohledu SW: Opraven odkaz na Programovací jazyky.)
Řádka 39: Řádka 39:
 
** Programovací jazyk, který vznikne tak, že instrukcím strojového kódu přiřadíme písmenné zkratky a doplníme o vytváření proměnných a návěští pro skok a další nezbytné produkty.
 
** Programovací jazyk, který vznikne tak, že instrukcím strojového kódu přiřadíme písmenné zkratky a doplníme o vytváření proměnných a návěští pro skok a další nezbytné produkty.
 
** Každý typ procesoru má svůj strojový kód a assembler. Některé typy procesorů ale mohou být kompatibilní. Dnes jsou například procesory Intel a AMD z větší části kompatibilní s procesorem Intel 8080 původního počítače IBM PC.
 
** Každý typ procesoru má svůj strojový kód a assembler. Některé typy procesorů ale mohou být kompatibilní. Dnes jsou například procesory Intel a AMD z větší části kompatibilní s procesorem Intel 8080 původního počítače IBM PC.
** Viz také [[Programovací_jazyky#Vy.C5.A1.C5.A1.C3.AD_a_ni.C5.BE.C5.A1.C3.AD_programovac.C3.AD_jazyky]].
+
** Viz také [[Programovací_jazyky#Vyšší_a_nižší_programovací_jazyky|Programovací jazyky]].
  
 
; Typy instrukcí
 
; Typy instrukcí
Řádka 60: Řádka 60:
 
   
 
   
 
  JMP start ; Skok na zacatek kodu. Nasleduje misto pro  
 
  JMP start ; Skok na zacatek kodu. Nasleduje misto pro  
; promenne, to chceme preskocit.  
+
          ; promenne, to chceme preskocit.  
 
   
 
   
 
  ; Promenne:  
 
  ; Promenne:  
 
  konecRady:   DB 7 ; Cislo, kterym aritmeticka rada konci  
 
  konecRady:   DB 7 ; Cislo, kterym aritmeticka rada konci  
  vysledek:    DB 0       ; Sem zapisi vysledek  
+
  vysledek:    DB ; Sem zapisi vysledek  
 
   
 
   
  start: ; Navesti, na ktere skaceme instrukci JMP
+
  start:           ; Navesti, na ktere skaceme instrukci JMP
 
   
 
   
  MOV C, konecRady     ; Ukazatel na promennou konecRady  
+
  MOV C, konecRady  ; Ukazatel na promennou konecRady  
  MOV A, [C] ; Ulozim do registru A hodnotu promenne  
+
  MOV A, [C]       ; Ulozim do registru A hodnotu promenne  
;  (najdu hodnotu na adrese odkazu)  
+
                  ;  (najdu hodnotu na adrese odkazu)  
  MOV B, [C] ; Totez ulozim do B - bude to citac  
+
  MOV B, [C]       ; Totez ulozim do B - bude to citac  
 
   
 
   
 
  .zacatekCyklu:  
 
  .zacatekCyklu:  
  DEC B ; Snizim B (citac) o jednicku  
+
  DEC B             ; Snizim B (citac) o jednicku  
  ADD A, B ; Vynasobim cislo v A cislem v B  
+
  ADD A, B         ; Vynasobim cislo v A cislem v B  
;  Vysledek bude v A  
+
                  ;  Vysledek bude v A  
  CMP B, 0 ; Porovnam B s nulou  
+
  CMP B, 0         ; Porovnam B s nulou  
  JA .zacatekCyklu ; Pokud je B > 0, pokracuji v cyklu  
+
  JA .zacatekCyklu ; Pokud je B > 0, pokracuji v cyklu  
 
   
 
   
  MOV D, vysledek ; Do registru D dam adresu promenne  
+
  MOV D, vysledek   ; Do registru D dam adresu promenne  
 +
                  ;  "vysledek"
 +
MOV [D], A        ; Vysledek do promenne "vysledek"
 
   
 
   
  ;  "vysledek"
+
  MOV D, 232        ; Uloz ukazatel na pamet pro vystup
  MOV [D], A ; Vysledek do promenne "vysledek"
+
                  ;  (graficka karta)
 +
  MOV [D], A       ; Vypisu vysledek na vystup
 
   
 
   
  MOV D, 232 ; Uloz ukazatel na pamet pro vystup
+
  HLT              ; Konec programu
  ;  (graficka karta)
+
MOV [D], A ; Vypisu vysledek na vystup
+
+
 HLT              ; Konec programu
+
 
</div>
 
</div>

Verze z 17. 11. 2016, 21:45


Co je CPU?


Parametry procesoru

Technické parametry
Další parametry

Procesor z pohledu SW

Základní pojmy
Typy instrukcí
Strojový kód (ukázka)

Příklad — Součet aritmetické řady postupným sčítáním

; Vypocita soucet aritmeticke rady 
; --------------------------------
; Vysledek zustane v registru A a bude na prvnim miste v pameti vystupu. 
;  Bylo by lepsi cislo prevest na ASCII tvar, ale to by chtelo dalsi 
;  proceduru... ;) 

JMP start ; Skok na zacatek kodu. Nasleduje misto pro 
          ; promenne, to chceme preskocit. 

; Promenne: 
konecRady:   DB 7 ; Cislo, kterym aritmeticka rada konci 
vysledek:    DB 0 ; Sem zapisi vysledek 

start:            ; Navesti, na ktere skaceme instrukci JMP

MOV C, konecRady  ; Ukazatel na promennou konecRady 
MOV A, [C]        ; Ulozim do registru A hodnotu promenne 
                  ;  (najdu hodnotu na adrese odkazu) 
MOV B, [C]        ; Totez ulozim do B - bude to citac 

.zacatekCyklu: 
DEC B             ; Snizim B (citac) o jednicku 
ADD A, B          ; Vynasobim cislo v A cislem v B 
                  ;  Vysledek bude v A 
CMP B, 0          ; Porovnam B s nulou 
JA .zacatekCyklu  ; Pokud je B > 0, pokracuji v cyklu 

MOV D, vysledek   ; Do registru D dam adresu promenne 
                  ;  "vysledek" 
MOV [D], A        ; Vysledek do promenne "vysledek" 

MOV D, 232        ; Uloz ukazatel na pamet pro vystup 
                  ;  (graficka karta) 
MOV [D], A        ; Vypisu vysledek na vystup

HLT               ; Konec programu
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje