Salut, Habr.
Dans l'histoire de l'informatique, certains événements ont influencé le cours de l'histoire. L'un de ceux-ci a été l'émergence du premier ordinateur personnel produit en série.
À l'époque, les ordinateurs n'étaient utilisés que par les scientifiques et les ingénieurs des grandes entreprises. Et puis un ordinateur apparaît, que tout le monde peut acheter. L'Altair 8800 contenait un processeur 8080, 256 octets de mémoire dans la première version et son prix était inférieur à 1000 $ - c'était le premier ordinateur personnel à être vendu. C'était le même ordinateur pour lequel Bill Gates et Paul Allen ont développé le langage BASIC, l'ordinateur grâce auquel des centaines et des milliers d'étudiants et d'écoliers enthousiastes sont venus au monde de la programmation.
Bien sûr, le bon marché avait un prix - la première version d'ALTAIR n'avait ni clavier ni écran, seulement un panneau de commutation à bascule, comme sur la photo. Il est devenu intéressant de comprendre comment écrire et exécuter un programme sur un tel PC. Pour ceux qui veulent savoir comment ça marche, la suite sous la coupe.
Code
. ALTAIR 64 , 8080, 2 .
, , 1 5:
; Code segment:
ORG 0o ; Set Program Counter to address 0
START: LDA I
MOV B,A ; RegB => I (1..N)
LDA STEP
MOV C,A ; RegC => STEP (always 1)
LDA SUM
MOV D,A ; RegD => SUM (result)
LOOP: MOV A,D ; Move value to Accumulator from Register D (SUM)
ADD B ; Add value in Register B to value in Accumulator
MOV D,A ; Save result back to D I
MOV A,B ; Mov B to A and decrement it
SUB C
JZ PEND ; If A is zero, the calculation is complete
MOV B,A ; If not, continue
JMP LOOP
PEND: MOV A,D ; Save result in SUM value
STA SUM
PWAIT: JMP PWAIT ; Nothing to do, infinite loop
; Data segment:
ORG 200o ; Set Program Counter to address 200
I: DB 5o ; Data Byte at address 200 = 5
STEP: DB 1o ; Data Byte at address 201 = 8 (10 octal)
SUM: DB 0o ; Data Byte at address 202 = 0
END ; End
, 3 , I, STEP SUM, 1 5 1. B, C D, . JZ (Jump if Zero) , . SUM. , (data segment) , 200o ("o" octet, 8- ).
, , Python :
s = sum(range(6))
, , - . .
, , . , LDA:
"LDA I", I 200 = 80h, 3A 80 00.
MOV B,A :
01000111b = 47h
3a 80 00 47 3a 81 00 4f
3a 82 00 57 7a 80 57 78
91 ca 18 00 47 c3 0c 00
7a 32 82 00 c3 1c 00
- 38 . MZ, - 0. , , , 40...
ALTAIR 8800, github. :
, ALTAIR . - . , 1 10001000b, DEPOSIT, , DEPOSIT NEXT. , EXAMINE/EXAMINE NEXT. RUN SINGLE STEP.
, DEBUG , hex- . , .
. , 202 = 10000010b, EXAMINE. D7..D0 00001111b = 15, 1 5:
, , . , , , .
1975 BASIC ALTAIR, 1976 "Micro-Soft". IT.
. ALTAIR - , 50 . , . 2 , , , " ".
, ALTAIR . -, "", :
, ALTAIR simh, Linux, :
, .
Comme d'habitude, bonne chance à tous.