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