Misalkan kita memiliki komputer 64-bit word-addressable dan kami ingin memprogramnya untuk menghasilkan karakter 5x7 yang disimpan sebagai bitmap gambar biner (seperti yang di bawah) ke tampilan yang dipetakan di memori.
Karena kita memiliki 5 x 7 = 35 piksel per karakter, kita dapat menyimpan karakter menggunakan 35 bit dalam satu kata. Dengan bit paling signifikan yang dimulai di sisi kiri kata dan dengan setiap piksel dalam gambar diwakili oleh bit ke- n seperti yang ditunjukkan di atas, angka "3" di atas akan disimpan dalam memori sebagai: 01110100010000100110000011000101110, diikuti oleh 29 yang tidak digunakan bit diatur ke 0.
Apakah ini bagaimana karakter disimpan / disimpan di komputer lama / modern? Atau apakah mereka menggunakan byte / kata tunggal per piksel saja?
Jika mereka disimpan dengan cara ini, apa yang akan menjadi rutin dalam kode perakitan / mesin (menggunakan tidak lebih dari instruksi dasar seperti bitwise, aritmatika dan operasi transportasi data dari Arsitektur Set Instruksi komputer) yang digunakan untuk mengubah data ini menjadi gambar pada tampilan seperti? Apakah akan seperti:
- Simpan koordinat tampilan x dan y agar piksel saat ini diperbarui dalam register tertentu.
- Simpan dua nilai RGB yang dipilih (dalam hal ini 0,255,0 untuk hijau dan 0,0,0 untuk hitam) di dua register terpisah lainnya.
- Minta dua register lebih lanjut berfungsi sebagai penghitung yang diinisialisasi ke 5 dan 7 untuk melacak baris dan kolom saat ini dari gambar yang sedang dirender.
- Tes jika register kolom bukan 0. Jika tidak, uji apakah LSB bitmap diatur ke 1, lalu DAN masing-masing register nilai RGB dengan register koordinat x dan y tergantung pada hasilnya, maka MOV yang menghasilkan ke register output display.
- Kurangi register penghitung baris oleh 1, uji untuk melihat apakah itu 0. Jika itu, kemudian atur kembali ke 5 dan tambah koordinat y dengan 1 dan kurangi penghitung kolom dengan 1.
- Geser register yang memegang bitmap 1 bit ke kiri.
- JMP untuk instruksi 4.
Apakah ada cara yang lebih sederhana atau lebih efisien untuk melakukan ini? Tampaknya bahkan sesuatu yang sederhana seperti rendering satu karakter teks kecil membutuhkan cukup banyak operasi dan akan memakan waktu sekitar 200 siklus CPU.
Akhirnya, apakah ada buku atau sumber daya yang bagus tentang kode tingkat mesin untuk menampilkan gambar dari awal, karena saya belum dapat menemukannya karena mereka mengabaikan topik khusus ini atau kode tersebut ditulis dalam bahasa tingkat tinggi atau assembler menggunakan makro, yang semuanya "curang" dan tidak menjelaskan apa yang secara fundamental terjadi di tingkat terendah.