===== 8 bites CPU Szimulátor =====
A szimulátor itt érhető el:
https://schweigi.github.io/assembler-simulator/
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.
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
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, adjunk hozzá és írjuk ki.
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
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]
----
==== 3. példa – Ciklus használata ====
Írjunk ki egymás után több karaktert (pl. 5 db 'X').
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
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]
----
==== 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.
JMP start
display_binary:
MOV D, 232
MOV B, 0
next:
SHL A, 1
JC print_1
MOV [D], '0'
JMP next2
print_1:
MOV [D], '1'
next2:
INC D
INC B
CMP B, 8
JNZ next
RET
start:
MOV A, 54 ; írjuk ki a 54-et binárisan
CALL display_binary
HLT
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]