Hallo Habr.
In der Geschichte des Rechnens gibt es bestimmte Ereignisse, die den Lauf der Geschichte beeinflusst haben. Eines davon war die Entstehung des ersten in Serie gefertigten Personalcomputers.
In jenen Jahren wurden Computer nur von Wissenschaftlern und Ingenieuren in großen Unternehmen verwendet. Und dann erscheint ein Computer, den jeder kaufen kann. Der Altair 8800 enthielt einen 8080-Prozessor, 256 Byte Speicher in der ersten Version und lag unter 1000 US-Dollar - es war der erste erfolgreiche PC, der verkauft wurde. Dies war derselbe Computer, für den Bill Gates und Paul Allen die BASIC-Sprache entwickelten, dank derer Hunderte und Tausende begeisterter Schüler und Schüler in die Welt des Programmierens kamen.
Natürlich hatte die Billigkeit ihren Preis - die erste Version von ALTAIR hatte weder eine Tastatur noch einen Bildschirm, nur eine Kippschalttafel, wie auf dem Foto. Es wurde interessant herauszufinden, wie man ein Programm auf einem solchen PC schreibt und ausführt. Für diejenigen, die wissen wollen, wie es funktioniert, die Fortsetzung unter dem Schnitt.
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, :
, .
Wie immer viel Glück an alle.