สมมติว่าเรามีคอมพิวเตอร์ word-addressable 64- บิตและเราต้องการตั้งโปรแกรมให้แสดงผลตัวอักษร 5x7 ที่จัดเก็บเป็นบิตแมปอิมเมจไบนารี (เช่นด้านล่าง) ไปยังหน่วยความจำที่แมป
เนื่องจากเรามี 5 x 7 = 35 พิกเซลต่อตัวอักษรเราจึงสามารถเก็บตัวอักษรโดยใช้ 35 บิตในคำเดียว ด้วยบิตที่มีนัยสำคัญน้อยที่สุดที่เริ่มต้นที่ด้านซ้ายของคำและแต่ละพิกเซลในรูปภาพที่แสดงด้วยบิตที่nดังที่แสดงไว้ด้านบนหมายเลข "3" ด้านบนจะถูกเก็บไว้ในหน่วยความจำดังนี้: 011101000100001001100000110000001111101010 บิตตั้งค่าเป็น 0
นี่เป็นวิธีที่ / ถูกเก็บไว้ในคอมพิวเตอร์เก่า / ทันสมัยหรือไม่? หรือพวกเขาใช้ไบต์เดียว / คำต่อพิกเซลแทน?
ถ้ามันถูกเก็บไว้ในลักษณะนี้สิ่งที่รูทีนในแอสเซมบลี / เครื่องรหัส (ใช้อะไรมากไปกว่าคำแนะนำเบื้องต้นเช่นการดำเนินการบิตบิตเลขคณิตและการส่งข้อมูลจาก Instruction Set Architecture ของคอมพิวเตอร์) ที่ใช้ในการแปลงข้อมูลนี้เป็นรูปภาพบน จอแสดงผลเป็นอย่างไร มันจะเป็นเช่น:
- จัดเก็บพิกัดการแสดงผล x และ y เพื่อให้พิกเซลปัจจุบันได้รับการปรับปรุงในการลงทะเบียนที่แน่นอน
- เก็บค่า RGB ที่เลือกสองค่า (ในกรณีนี้คือ 0,255,0 สำหรับสีเขียวและสีดำ 0,0,0 สำหรับ 0,0) ในการลงทะเบียนอีกสองแบบแยกกัน
- ให้รีจิสเตอร์เพิ่มเติมสองตัวทำหน้าที่เป็นตัวนับเริ่มต้นเป็น 5 และ 7 เพื่อติดตามแถวและคอลัมน์ปัจจุบันของอิมเมจที่ถูกเรนเดอร์
- ทดสอบว่าการลงทะเบียนคอลัมน์ไม่ใช่ 0 หรือไม่ถ้าไม่ใช่ให้ทดสอบว่า LSB ของบิตแมปถูกตั้งค่าเป็น 1 จากนั้นและการลงทะเบียนค่า RGB ที่เกี่ยวข้องกับการลงทะเบียนพิกัด x และ y ขึ้นอยู่กับผลลัพธ์แล้ว MOV ที่เป็นผลลัพธ์ เพื่อลงทะเบียนเอาต์พุตการแสดงผล
- ลดการลงทะเบียนตัวนับแถวลง 1 ทดสอบเพื่อดูว่าเป็น 0 หรือไม่ถ้าใช่ให้ตั้งค่ากลับเป็น 5 และเพิ่มพิกัด y เป็น 1 และเพิ่มตัวนับคอลัมน์ที่ 1 ลง
- เลื่อนรีจิสเตอร์ที่ถือบิตแมป 1 บิตไปทางซ้าย
- JMP ถึงคำสั่ง 4
มีวิธีที่ง่ายขึ้นหรือมีประสิทธิภาพมากขึ้นในการทำเช่นนี้? ดูเหมือนว่าแม้จะเป็นอะไรที่เรียบง่ายเหมือนกับการเรนเดอร์ตัวอักษรขนาดเล็กเพียงตัวเดียว แต่ก็มีการใช้งานจำนวนมากและอาจใช้เวลาประมาณ 200 รอบ CPU
ท้ายที่สุดมีหนังสือหรือแหล่งข้อมูลที่ดีเกี่ยวกับรหัสระดับเครื่องสำหรับการแสดงภาพตั้งแต่เริ่มต้นเพราะฉันไม่สามารถหาสิ่งใดได้เนื่องจากพวกมันส่องแสงเหนือหัวเรื่องนี้หรือรหัสนั้นเขียนด้วยภาษาระดับสูงหรือ แอสเซมเบลอร์ที่ใช้มาโครซึ่งทั้งหมดเป็น "การโกง" และไม่อธิบายสิ่งที่เกิดขึ้นโดยพื้นฐานในระดับต่ำสุด