मान लें कि हमारे पास 64-बिट शब्द-पता करने योग्य कंप्यूटर है और हम इसे मेमोरी-मैप्ड डिस्प्ले के लिए बाइनरी इमेज बिटमैप (जैसे नीचे वाला) के रूप में संग्रहीत 5x7 वर्ण को आउटपुट करने के लिए प्रोग्राम करना चाहते हैं।
चूँकि हमारे पास 5 x 7 = 35 पिक्सेल प्रति वर्ण है, इसलिए हम एक शब्द में 35 बिट्स का उपयोग करके चरित्र को स्टोर कर सकते हैं। कम से कम महत्वपूर्ण बिट शब्द के बाईं ओर से शुरू होता है और छवि में प्रत्येक पिक्सेल के साथ n th बिट द्वारा दर्शाया जा रहा है जैसा कि ऊपर दिखाया गया है, उपरोक्त संख्या "3" को स्मृति में संग्रहीत किया जाएगा: 0111010001000010011000001010101110, इसके बाद 29 अप्रयुक्त बिट्स 0 पर सेट।
क्या यह है कि वर्णों को पुराने / आधुनिक कंप्यूटरों में कैसे संग्रहीत किया जाता है? या क्या वे प्रति पिक्सेल प्रति एक बाइट / शब्द का उपयोग करते हैं?
यदि उन्हें इस तरीके से संग्रहित किया जाता है, तो असेंबली / मशीन-कोड में रूटीन क्या होगा (कंप्यूटर के निर्देश सेट आर्किटेक्चर से प्राथमिक निर्देशों जैसे बिटवाइज़, अंकगणितीय और डेटा ट्रांसपोर्ट संचालन से अधिक कुछ नहीं) का उपयोग इस डेटा को एक छवि में बदलने के लिए किया जाता है। प्रदर्शन कैसा दिखता है? क्या यह कुछ इस तरह होगा:
- एक निश्चित रजिस्टर में अपडेट किए जाने के लिए x और y डिस्प्ले को वर्तमान पिक्सेल के लिए समन्वयित करें।
- दो चुने हुए आरजीबी मूल्यों को स्टोर करें (इस मामले में हरे रंग के लिए 0,255,0 और काले रंग के लिए 0,0,0) दो अन्य अलग रजिस्टरों में।
- दो और रजिस्टरों के रूप में कार्य किया जा रहा है काउंटर 5 और 7 के लिए आरंभिक पंक्ति और छवि के कॉलम का ट्रैक रखने के लिए आरंभीकृत किया गया।
- यदि स्तंभ रजिस्टर 0. नहीं है तो टेस्ट करें। यदि यह नहीं है, तो यदि बिटमैप के LSB को 1 पर सेट किया गया है, तो परीक्षण करें, और परिणाम के आधार पर x और y समन्वय रजिस्टर के साथ संबंधित RGB मान रजिस्टर करें, फिर उस परिणाम का MOV करें प्रदर्शन आउटपुट रजिस्टर करने के लिए।
- पंक्ति काउंटर रजिस्टर को 1 से घटाएं, यह देखने के लिए परीक्षण करें कि क्या यह 0. है। यदि यह है, तो इसे वापस 5 पर सेट करें और 1 से y समन्वय बढ़ाएँ और स्तंभ काउंटर को 1 से घटाएं।
- बिटमैप को बाईं ओर 1 बिट पकड़े हुए रजिस्टर को शिफ्ट करें।
- जेएमपी को निर्देश 4।
क्या ऐसा करने का एक सरल या अधिक कुशल तरीका है? ऐसा लगता है जैसे कि एक छोटे से पाठ के चरित्र को प्रस्तुत करने के लिए भी उतना ही सरल है, काफी बड़ी संख्या में संचालन करता है और लगभग 200 सीपीयू चक्र लेगा।
अंत में, क्या स्क्रैच से चित्र प्रदर्शित करने के लिए मशीन-स्तरीय कोड पर कोई अच्छी किताबें या संसाधन हैं, क्योंकि मुझे कोई भी ऐसा नहीं मिल पाया है क्योंकि वे इस विशेष विषय पर या तो चमकते हैं या कोड एक उच्च स्तरीय भाषा या एक में लिखा जाता है। मैक्रोज़ का उपयोग करने वाले असेंबलर, जिनमें से सभी "धोखा" कर रहे हैं और यह नहीं समझाते कि मौलिक रूप से सबसे निचले स्तर पर क्या हो रहा है।