64-bit sözcük adresli bir bilgisayarımız olduğunu ve bunu, bellek eşlemeli bir ekrana ikili görüntü bitmap (aşağıda olduğu gibi) olarak depolanan 5x7 karakter çıkacak şekilde programlamak istediğimizi varsayalım.
Karakter başına 5 x 7 = 35 pikselimiz olduğu için, tek bir kelimede 35 bit kullanarak bir karakter depolayabiliriz. Kelimenin sol tarafından başlayan en küçük bit ve görüntüdeki her piksel yukarıda gösterildiği gibi n. Bit ile temsil edilirse, yukarıdaki "3" sayısı bellekte şu şekilde saklanır: 01110100010000100110000011000101110, ardından 29 kullanılmayan bit 0 olarak ayarlanmıştır.
Karakterler eski / modern bilgisayarlarda bu şekilde saklanıyor mu? Yoksa piksel başına tek bir bayt / kelime mi kullanıyorlar?
Bu şekilde saklanırlarsa, bu verileri bir görüntüye dönüştürmek için montaj / makine kodundaki rutin (bilgisayarın talimat kümesi mimarisinin bitsel, aritmetik ve veri taşıma işlemleri gibi temel talimatlardan başka bir şey kullanmadan) ne kullanırdı? ekran nasıl görünüyor? Şöyle bir şey olur mu?
- Belirli bir kayıt defterinde güncellenecek geçerli piksel için x ve y ekran koordinatını saklayın.
- Seçilen iki RGB değerini (bu durumda yeşil için 0,255,0 ve siyah için 0,0,0) diğer iki ayrı kayıt defterinde saklayın.
- Oluşturulan görüntünün geçerli satırını ve sütununu takip etmek için iki kayıt daha 5 ve 7 olarak başlatılan sayaçlar gibi davranır.
- Sütun kaydının 0 olup olmadığını test edin. Değilse, bitmapin LSB'sinin 1 olarak ayarlanıp ayarlanmadığını test edin, ardından sonuca bağlı olarak ilgili RGB değeri x ve y koordinat kaydına kaydedilir, ardından MOV sonucu ekran çıkış yazmacına.
- Satır sayacı kaydını 1 azaltın, 0 olup olmadığını test edin. Öyleyse, 5'e geri ayarlayın ve y koordinatını 1 arttırın ve sütun sayacını 1 azaltın.
- Bitmap'i 1 bit sola tutarak kaydı kaydırın.
- Talimat 4'e JMP.
Bunu yapmanın daha basit veya daha verimli bir yolu var mı? Tek bir küçük metin karakteri oluşturmak kadar basit bir şey bile çok fazla işlem gerektiriyor ve yaklaşık 200 CPU döngüsü gerektiriyor gibi görünüyor.
Son olarak, görüntüleri sıfırdan görüntülemek için makine düzeyinde kodda iyi kitaplar veya kaynaklar var mı, çünkü bu konu üzerinde parlak olduklarından veya kod yüksek düzeyde bir dilde veya hepsi "hile" olan ve temelde en düşük düzeyde neler olup bittiğini açıklamayan makroları kullanan bir derleyici.