tanszek:oktatas:szamitastechnika:8_bit_cpu_simulator
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:szamitastechnika:8_bit_cpu_simulator [2025/09/20 06:29] – knehez | tanszek: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:// | https:// | ||
| - | 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**, |
| - | <sxh c> | + | ---- |
| - | JMP start: | + | |
| + | ==== 1. példa – Karakter kiírása a képernyőre ==== | ||
| + | |||
| + | A legegyszerűbb program: egy betű megjelenítése. | ||
| + | |||
| + | <code c> | ||
| + | JMP start | ||
| + | |||
| + | start: | ||
| + | MOV D, 232 ; a képernyő címe | ||
| + | MOV [D], ' | ||
| + | HLT ; állítsuk le a programot | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | 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] | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 2. példa – Egyszerű számolás ==== | ||
| + | |||
| + | Töltsünk be egy számot a regiszterbe, | ||
| + | |||
| + | <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], ' | ||
| + | HLT | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | 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 ' | ||
| + | E --> F[HLT] | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 3. példa – Ciklus használata ==== | ||
| + | |||
| + | Írjunk ki egymás után több karaktert (pl. 5 db ' | ||
| + | |||
| + | <code c> | ||
| + | JMP start | ||
| + | |||
| + | start: | ||
| + | MOV D, 232 ; képernyő kezdőcím | ||
| + | MOV B, 5 ; ismétlések száma | ||
| + | |||
| + | loop: | ||
| + | MOV [D], ' | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | flowchart TD | ||
| + | A[Start] --> B[D = 232, B = 5] | ||
| + | B --> C[Kiírunk ' | ||
| + | C --> D[D = D + 1] | ||
| + | D --> E[B = B - 1] | ||
| + | E --> F{B != 0?} | ||
| + | F --> | ||
| + | F -->|Nem| G[HLT] | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== 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 B, 0 | + | MOV B, 0 |
| next: | next: | ||
| - | SHL A, 1 | + | |
| - | JC print_1 | + | JC print_1 |
| - | MOV [D], ' | + | MOV [D], ' |
| - | JMP next2 | + | JMP next2 |
| print_1: | print_1: | ||
| - | MOV [D], ' | + | |
| next2: | next2: | ||
| - | INC D | + | |
| - | INC B | + | INC B |
| - | CMP B, 8 | + | CMP B, 8 |
| - | JNZ next | + | JNZ next |
| - | RET | + | RET |
| start: | start: | ||
| - | | + | |
| - | CALL display_binary | + | CALL display_binary |
| - | </sxh> | + | HLT |
| + | </code> | ||
| + | |||
| + | < | ||
| + | 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 --> | ||
| + | E --> | ||
| + | F --> H[D++, B++] | ||
| + | G --> H[D++, B++] | ||
| + | H --> I{B < 8?} | ||
| + | I --> | ||
| + | I -->|Nem| J[RET → vissza start-ba] | ||
| + | J --> K[HLT] | ||
| + | </ | ||
tanszek/oktatas/szamitastechnika/8_bit_cpu_simulator.1758349775.txt.gz · Last modified: 2025/09/20 06:29 by knehez
