मैं आपके प्रश्न का शाब्दिक रूप से अध्ययन करूंगा और अधिकांश माइक्रोप्रोसेसरों पर चर्चा करूंगा, सामान्य तौर पर कंप्यूटर नहीं।
सभी कंप्यूटरों में किसी न किसी प्रकार का मशीन कोड होता है। एक निर्देश में एक ओपकोड और एक या अधिक ऑपरेंड होते हैं। उदाहरण के लिए, इंटेल 4004 (बहुत पहले माइक्रोप्रोसेसर) के लिए ADD निर्देश को 1000RRRR के रूप में एन्कोड किया गया था जहाँ 1000 ADD और RRRR के लिए एक कोड संख्या का प्रतिनिधित्व करता है।
बहुत पहले कंप्यूटर प्रोग्राम हाथ से लिखे गए थे, मशीन की भाषा में प्रोग्राम बनाने के लिए 1 और 0 के हैंड-एन्कोडिंग थे। इसके बाद चिप में प्रोग्राम किया जाता है। पहले माइक्रोप्रोसेसरों ने ROM (रीड-ओनली मेमोरी) का उपयोग किया था; इसे बाद में EPROM (Erasable Programmable ROM, जिसे UV लाइट से मिटा दिया गया था) द्वारा बदल दिया गया ; अब प्रोग्राम आमतौर पर EEPROM ( "विद्युत ... - EPROM" में प्रोग्राम किए जाते हैं , जिन्हें चिप पर मिटाया जा सकता है), या विशेष रूप से फ्लैश मेमोरी।
अधिकांश माइक्रोप्रोसेसर अब रैम से बाहर प्रोग्राम चला सकते हैं (यह सब कुछ लेकिन माइक्रोकंट्रोलर के लिए बहुत मानक है), लेकिन पहले स्थान पर प्रोग्राम को रैम में लोड करने का एक तरीका होना चाहिए। जैसा कि जॉबी टाफ़ी ने अपने जवाब में बताया, यह अल्टेयर 8080 के लिए टॉगल स्विच के साथ किया गया था, जो एक इंटेल 8080 (जो 4004 और 8008 के बाद) द्वारा संचालित था। आपके पीसी में, BIOS का एक बिट कहा जाता है, जिसका उपयोग कंप्यूटर को शुरू करने के लिए किया जाता है, और ओएस को रैम में लोड किया जाता है।
मशीनी भाषा में थकाऊ असली तेज़ होता है, इसलिए असेंबलर प्रोग्राम विकसित किए गए थे जो एक एमनेमिक असेंबलर भाषा लेते हैं और इसका अनुवाद करते हैं, आमतौर पर प्रति निर्देश विधानसभा कोड की एक पंक्ति, मशीन कोड में। इसलिए 10000001 के बजाय, कोई भी ADD R1 लिखेगा।
लेकिन पहले कोडांतरक को मशीन कोड में लिखा जाना था। तब इसे अपने कोडांतरक कोड में फिर से लिखा जा सकता था, और मशीन-भाषा संस्करण इसे पहली बार इकट्ठा करने के लिए उपयोग किया गया था। उसके बाद, कार्यक्रम खुद को इकट्ठा कर सकता था। इसे बूटस्ट्रैपिंग कहा जाता है और संकलक के साथ भी किया जाता है - वे आम तौर पर पहले कोडांतरक (या अन्य उच्च-स्तरीय भाषा) में लिखे जाते हैं, और फिर अपनी भाषा में फिर से लिखे जाते हैं और मूल संकलक के साथ संकलित किया जाता है जब तक कि कंपाइलर खुद को संकलित नहीं कर सकता।
चूंकि पहले माइक्रोप्रोसेसर का विकास मेनफ्रेम और मिनिकॉमपॉइंट्स के आसपास लंबे समय के बाद हुआ था, और 4004 वास्तव में वैसे भी असेंबलर चलाने के लिए अनुकूल नहीं थे, इंटेल ने शायद एक क्रॉस-एसेम्बलर लिखा था जो अपने बड़े कंप्यूटरों में से एक पर चला, और असेंबली कोड का अनुवाद किया। 4004 एक बाइनरी इमेज में जिसे ROM में प्रोग्राम किया जा सकता है। एक बार फिर, यह एक आम तकनीक है जिसका उपयोग कंपाइलरों को एक नए प्लेटफॉर्म (जिसे क्रॉस-संकलन कहा जाता है ) में पोर्ट करने के लिए किया जाता है ।