Table of Contents

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]