Come programmare in codice macchina
Ho fatto la mia prima programmazione in codice macchina sul MC6800. Il primo punto è esadecimale è normalmente usato invece di binario come sono facilmente intercambiabili ed è più compatto. Quando vedo 0x86F0 vedo anche 1000 0110 1111 0000.
All'epoca l'esecuzione di un programma in codice macchina aveva tre passi:
- Scrivere il programma su carta.
- Scaricarlo sul computer.
- Eseguire il programma.
Nella scrittura del programma si userà l'esadecimale, non il binario, perché è il modo in cui il produttore documenta il set di istruzioni ed è più veloce da scrivere. Ecco il set completo di istruzioni per l'MC6800, ho memorizzato le più comuni.
Quindi per sommare due numeri scriverei il codice assembler, per esempio un programma per sommare 2+2 e dare il risultato:
LDAA #2
ADDA #2
SWI
Poi cercherei gli opcode e li riempirei per ottenere
86 02 LDAA #2
8B 02 ADDA #2
3F SWI
Quindi ora ho il mio programma 86 02 8B 02 3F.
Il secondo passo è quello di caricarlo. Sono stato fortunato che il sistema che ho costruito aveva un display a LED a 7 segmenti e una tastiera esagonale, così ho potuto inserirlo con la pressione di 12 tasti. Alcune macchine avevano caricatori di base per interruttori binari e questo programma di 5 byte avrebbe avuto bisogno di circa 50 interruttori per essere caricato. Con un caricatore binario leggevi il tuo programma in esadecimale con gli occhi e lo inserivi in binario con le mani perché lo sforzo cerebrale è lo stesso che scrivere in binario ma lo sforzo fisico è molto minore.
L'ultimo passo era eseguirlo, la pressione di un pulsante e hai finito.
Articoli simili
- Quali sono le differenze tra codice macchina, codice byte, codice oggetto e codice sorgente?
- Qual è la differenza tra bytecode, codice nativo, codice macchina e codice assembly?
- Il mio Samsung Galaxy S4 ha un codice paese XSB. Posso aggiornare manualmente il sistema operativo con un diverso codice paese, codice prodotto e CSC?
- Imparare a programmare: Posso ancora imparare a programmare se non sono bravo in matematica?