User Tools

Site Tools


tanszek:oktatas:szamitastechnika:8_bit_cpu_simulator

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tanszek:oktatas:szamitastechnika:8_bit_cpu_simulator [2025/09/20 06:29] kneheztanszek:oktatas:szamitastechnika:8_bit_cpu_simulator [2025/09/24 06:24] (current) – [1. példa – Karakter kiírása a képernyőre] knehez
Line 1: Line 1:
-===== CPU Szimulátor =====+===== 8 bites CPU Szimulátor =====
  
 +A szimulátor itt érhető el:  
 https://schweigi.github.io/assembler-simulator/ https://schweigi.github.io/assembler-simulator/
  
-A regiszterbe töltött érték kiíratása a képernyőre bináris formában.+Ez egy **egyszerű oktatási célú 8 bites CPU szimulátor**, amely lehetővé teszi, hogy az assembly programozás alapjait biztonságosan, interaktív módon gyakoroljuk. 
 + 
 +---- 
 + 
 +==== 1. példa – Karakter kiírása a képernyőre ==== 
 + 
 +A legegyszerűbb program: egy betű megjelenítése.
  
 <code c> <code c>
- JMP start:+    JMP start 
 + 
 +start: 
 +    MOV D, 232    ; a képernyő címe 
 +    MOV [D], 'A'  ; írjunk ki egy 'A' betűt 
 +    HLT           ; állítsuk le a programot 
 +</code> 
 + 
 +<mermaid> 
 +flowchart TD 
 +    A[Start] --> B[Beállítjuk a D címet: 232] 
 +    B --> C[Képernyő memóriába írjuk az A-t] 
 +    C --> D[Program leáll: HLT] 
 +</mermaid> 
 + 
 +---- 
 + 
 +==== 2. példa – Egyszerű számolás ==== 
 + 
 +Töltsünk be egy számot a regiszterbe, adjunk hozzá és írjuk ki. 
 + 
 +<code c> 
 +    JMP start 
 + 
 +start: 
 +    MOV A, 5      ; töltsünk be egy értéket A-ba 
 +    ADD A, 3      ; adjunk hozzá 3-at (A = 8) 
 +    MOV D, 232 
 +    MOV [D], '0' + A   ; írjuk ki a szám ASCII kódját 
 +    HLT 
 +</code> 
 + 
 +<mermaid> 
 +flowchart TD 
 +    A[Start] --> B[Regiszter A = 5] 
 +    B --> C[A = A + 3 → 8] 
 +    C --> D[Képernyő cím: 232] 
 +    D --> E[Képernyőre írjuk '8'-at] 
 +    E --> F[HLT] 
 +</mermaid> 
 + 
 +---- 
 + 
 +==== 3. példa – Ciklus használata ==== 
 + 
 +Írjunk ki egymás után több karaktert (pl. 5 db 'X'). 
 + 
 +<code c> 
 +    JMP start 
 + 
 +start: 
 +    MOV D, 232    ; képernyő kezdőcím 
 +    MOV B, 5      ; ismétlések száma 
 + 
 +loop: 
 +    MOV [D], 'X'  ; írjunk ki egy 'X'-et 
 +    INC D         ; lépjünk a következő helyre 
 +    DEC B         ; csökkentsük a számlálót 
 +    JNZ loop      ; ha nem nulla, folytassuk 
 +    HLT 
 +</code> 
 + 
 +<mermaid> 
 +flowchart TD 
 +    A[Start] --> B[D = 232, B = 5] 
 +    B --> C[Kiírunk 'X'-et] 
 +    C --> D[D = D + 1] 
 +    D --> E[B = B - 1] 
 +    E --> F{B != 0?} 
 +    F -->|Igen| C 
 +    F -->|Nem| G[HLT] 
 +</mermaid> 
 + 
 +---- 
 + 
 +==== 4. példa – Szám bináris kiírása ==== 
 + 
 +Ez már egy összetettebb program: egy regiszterben tárolt számot írunk ki binárisan. 
 + 
 +<code c> 
 +    JMP start
  
 display_binary: display_binary:
- MOV D, 232 +    MOV D, 232 
- MOV B, 0+    MOV B, 0
 next: next:
- SHL A, 1 +    SHL A, 1 
- JC print_1 +    JC print_1 
- MOV [D], '0' +    MOV [D], '0' 
-        JMP next2+    JMP next2
 print_1: print_1:
- MOV [D], '1'+    MOV [D], '1'
 next2: next2:
- INC D +    INC D 
- INC B +    INC B 
- CMP B, 8 +    CMP B, 8 
-        JNZ next +    JNZ next 
- RET+    RET
  
 start: start:
-      MOV A, 54 ; irjuk az 54-et binárisan +    MOV A, 54    írjuk ki a 54-et binárisan 
-      CALL display_binary+    CALL display_binary 
 +    HLT
 </code> </code>
 +
 +<mermaid>
 +flowchart TD
 +    A[Start] --> B[A = 54]
 +    B --> C[Hívjuk: display_binary]
 +    C --> D[B = 0, D = 232]
 +    D --> E[SHL A, 1 → Carry?]
 +    E -->|Carry=0| F[Kiírunk '0']
 +    E -->|Carry=1| G[Kiírunk '1']
 +    F --> H[D++, B++]
 +    G --> H[D++, B++]
 +    H --> I{B < 8?}
 +    I -->|Igen| D
 +    I -->|Nem| J[RET → vissza start-ba]
 +    J --> K[HLT]
 +</mermaid>
 +
tanszek/oktatas/szamitastechnika/8_bit_cpu_simulator.1758349787.txt.gz · Last modified: 2025/09/20 06:29 by knehez