こんにちは、Habr。
コンピューティングの歴史には、歴史の流れに影響を与えた特定のイベントがあります。そのひとつが、最初の量産パソコンの登場です。
当時、コンピューターは大企業の科学者やエンジニアだけが使用していました。そして、誰でも購入できるコンピューターが登場します。Altair 8800は、最初のバージョンで8080プロセッサ、256バイトのメモリを搭載し、価格は1000ドル未満でした。これは、販売された最初の成功したパーソナルコンピュータでした。これは、ビル・ゲイツとポール・アレンがBASIC言語を開発したのと同じコンピューターであり、そのおかげで何百、何千もの熱狂的な学生や学童がプログラミングの世界にやって来ました。
もちろん、安さには代償が伴いました。ALTAIRの最初のバージョンには、キーボードも画面もありませんでした。写真のように、トグルスイッチパネルしかありませんでした。そのようなPCでプログラムを作成して実行する方法を理解することが面白くなりました。それがどのように機能するかを知りたい人のために、カットの下での継続。
コード
. 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, :
, .
いつものように、みんなに頑張ってください。