Saya akan menjawab pertanyaan Anda secara harfiah dan membahas sebagian besar mikroprosesor, bukan komputer pada umumnya.
Semua komputer memiliki semacam kode mesin. Instruksi terdiri dari opcode dan satu atau lebih operan. Sebagai contoh, instruksi ADD untuk Intel 4004 (mikroprosesor pertama) dikodekan sebagai 1000RRRR di mana 1000 adalah opcode untuk ADD dan RRRR mewakili nomor register.
Program komputer pertama ditulis dengan tangan, meng-enkode 1 dan 0 untuk membuat program dalam bahasa mesin. Ini kemudian diprogram ke dalam chip. Mikroprosesor pertama menggunakan ROM (Read-Only Memory); ini kemudian digantikan oleh EPROM (Erasmable Programmable ROM, yang terhapus dengan sinar UV); sekarang program biasanya diprogram ke dalam EEPROM ( "Elektrik ...- EPROM" , yang dapat dihapus pada chip), atau khususnya memori Flash.
Kebanyakan mikroprosesor sekarang dapat menjalankan program dari RAM (ini cukup standar untuk semuanya kecuali mikrokontroler), tetapi harus ada cara memuat program ke dalam RAM di tempat pertama. Seperti yang ditunjukkan Joby Taffey dalam jawabannya, ini dilakukan dengan toggle switches untuk Altair 8080, yang ditenagai oleh Intel 8080 (yang mengikuti 4004 dan 8008). Di PC Anda, ada sedikit ROM yang disebut BIOS yang digunakan untuk menghidupkan komputer, dan memuat OS ke dalam RAM.
Bahasa mesin menjadi sangat cepat membosankan, sehingga program assembler dikembangkan yang mengambil bahasa assembler mnemonik dan menerjemahkannya, biasanya satu baris kode perakitan per instruksi, ke dalam kode mesin. Jadi alih-alih 10000001, orang akan menulis ADD R1.
Tetapi assembler pertama harus ditulis dalam kode mesin. Kemudian bisa ditulis ulang dalam kode assemblernya sendiri, dan versi bahasa mesin yang digunakan untuk merakitnya pertama kali. Setelah itu, program bisa berkumpul sendiri. Ini disebut bootstrap dan dilakukan dengan kompiler juga - mereka biasanya pertama kali ditulis dalam assembler (atau bahasa tingkat tinggi lainnya), dan kemudian ditulis ulang dalam bahasa mereka sendiri dan dikompilasi dengan kompiler asli hingga kompiler dapat mengkompilasi dirinya sendiri.
Karena mikroprosesor pertama dikembangkan lama setelah mainframe dan minicomputer ada, dan 4004 sebenarnya tidak cocok untuk menjalankan assembler, Intel mungkin menulis cross-assembler yang berjalan pada salah satu komputer besarnya, dan menerjemahkan kode assembly untuk 4004 menjadi gambar biner yang dapat diprogram ke dalam ROM. Sekali lagi, ini adalah teknik umum yang digunakan untuk port compiler ke platform baru (disebut cross-compiling ).