CPU

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Procesor z pohledu SW: Opraven odkaz na Programovací jazyky.)
m (Procesor z pohledu SW: Opraveno Strojový kód -> Assembler u ukázky. Přidán odkaz na související stránky.)
Řádka 27: Řádka 27:
  
 
== Procesor z pohledu SW ==
 
== Procesor z pohledu SW ==
; Základní pojmy
+
=== Základní pojmy ===
* Registry
+
; Registry
** Paměťové buňky, do kterých se ukládají operandy (hodnoty), se kterými procesor právě počítá.
+
* Paměťové buňky, do kterých se ukládají operandy (hodnoty), se kterými procesor právě počítá.
** Velikost v řádu desítek byte (typicky stejné, jako šířka datové sběrnice nebo kratší).
+
* Velikost v řádu desítek byte (typicky stejné, jako šířka datové sběrnice nebo kratší).
** Některé mají speciální funkci, jiné obecné.
+
* Některé mají speciální funkci, jiné obecné.
* Instrukční sada
+
; Instrukční sada
** Jaké instrukce umí procesor zpracovat a jaké binární kódy (posloupnosti nul a jedniček) tyto instrukce označují.
+
* Jaké instrukce umí procesor zpracovat a jaké binární kódy (posloupnosti nul a jedniček) tyto instrukce označují.
* Strojový kód
+
; Strojový kód
** Instrukce procesoru a přiřazené kódy
+
* Instrukce procesoru a přiřazené kódy
* Assembler
+
; Assembler
** 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šší_a_nižší_programovací_jazyky|Programovací jazyky]].
+
* Viz také [[Programovací_jazyky#Vyšší_a_nižší_programovací_jazyky|Programovací jazyky]].
  
; Typy instrukcí
+
=== Typy instrukcí ===
*Přesuny
+
* Přesuny
*Aritmetické operace
+
* Aritmetické operace
*Logické operace
+
* Logické operace
*Podmínky
+
* Podmínky
*Skok
+
* Skok
  
; Strojový kód (ukázka):
+
=== Assembler — ukázka ===
* Ukázku programování v assembleru jednoduchého procesoru si můžete vyzkoušet na: [https://schweigi.github.io/assembler-simulator/ Schweigi.github.io → Assembler Simulator].
+
* Programování v assembleru jednoduchého procesoru si můžete vyzkoušet na: <br />[https://schweigi.github.io/assembler-simulator/ Schweigi.github.io &rarr; Assembler Simulator].
  
 
<div class="Priklad">
 
<div class="Priklad">
Řádka 90: Řádka 90:
 
  HLT               ; Konec programu
 
  HLT               ; Konec programu
 
</div>
 
</div>
 +
 +
 +
== Související stránky ==
 +
* [[Programovací jazyky]]

Verze z 17. 11. 2016, 22:05


Obsah

Co je CPU?


Parametry procesoru

Technické parametry
Další parametry

Procesor z pohledu SW

Základní pojmy

Registry
Instrukční sada
Strojový kód
Assembler

Typy instrukcí

Assembler — 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


Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje