Mari Bermain Dengan PEP/7
Pendahuluan
PEP/7 adalah sebuah mesin virtual yang digunakan kalangan akademisi untuk menjelaskan dan menyederhanakan bahasa komputasi terendah (baca: machine language). Sesuai namanya, PEP/7 memiliki 7 buah register.
Register-register dalam PEP/7 adalah:
- Status bits (NZVC)
- Index Register
- Program Counter
- Instruction Register
- Accumulator
- Base Register
- Stack Pointer
Berikut gambar simulator PEP/7
Format Instruksi
Sebuah instruksi dalam PEP/7 memiliki 2 bagian:
- 8 bit instruction specifier
- 16 bit operand specifier
Berikut penjelasan dalam gambar
Instruction Specifier disusun dalam 3 bagian:
- Kode Operasi (Baca: Operation Code atau Opcode)
- Register Specifier. Register ini bernilai 0 jika register A (Accumulator) sedang dilibatkan dalam sebuah operasi dan bernilai 1 jika register X (indeX register) sedang dilibatkan.
- Addressing-mode Specifier. 2-bit addressing-mode specifier menjelaskan bagaimana menterjemahkan bagian operand part dari sebuah instruksi. Misal 00 untuk Immediate Addressing dan 01 untuk Direct Addressing.
Mari kita coba:
Kita akan menulis kata Hello pada layar.
Berikut instruksinya:
Keterangan
Instruksi 1:
Menulis huruf H. Pada table Opcode, charakter output dikodekan sebagai 11100 (5 bit pertama dari instruction specifier). Bit ke 6 (yang berwarna hitam) berisi 0 artinya operand yang akan diambil adalah akumulator. Bit ke 7 dan 8 menunjukkan mode pengalamatan. Tertulis 00 yang berarti Immediate Addressing. Sehingga format lengkap dari instruction spesifier adalah 11100000 biner (atau E0 dalam hexa)
Operand Specifier berisi data yang akan ditampilkan. Karena kita akan menulis "H" (dalam ascii H dikodekan dengan 48) maka kita tulis 0048.
Begitu seterusnya sehingga kita mendapat data lengkap di memory adalah:
Sekarang saatnya kita tulis memory tersebut pada simulator PEP7. (Simulator dapat dicoba di http://www.rsu.edu/faculty/pmacpherson/programs/pep7.html).
Untuk memudahkan pembacaan, klik view hex sehingga bukan dalam format biner.
- Klik edit memory pada simulator
- Isikan Address (Hex) pada memory editor dengan 00 (kita menulis data pada alamat 00 di memory) dan Value (Hex) dengan E0
- Klik Set memory
- Ganti Address dengan 01 dan Value 00 (jangan lupa set memory)
- Ganti Address dengan 02 dengan 48 (jangan lupa set memory).
- Begitu seterusnya hingga
Eksekusi
Untuk menjalankan rangkaian perintah yang telah kita masukkan dalam prosesor, kita bisa mengklik tombol paling kiri (saya tidak bisa bilang Fetch karena tombol ini akan berubah-rubah sesuai tahapan siklus instruksi).
Nah disinilah kita bisa melihat tahapan-tahapan siklus instruksi dalam sebuah prosesor. Siklus instruksi dalam sebuah prosesor adalah sebagai berikut:
- Tahapan pengambilan (Fetch).
- Tahapan Penterjemahan instruksi (Decode).
- Tahap Increment. (Klik saja).
- Tahap Eksekusi (Execute).
- Terus ulangi hingga seluruh rangkaian perintah selesai dijalankan dan output akhirnya adalah sebagai berikut:
Selamat mencoba.