Oi, Habr.
Na história da computação, existem certos eventos que influenciaram o curso da história. Um deles foi o surgimento do primeiro computador pessoal produzido em massa.
Naqueles anos, os computadores eram usados apenas por cientistas e engenheiros em grandes empresas. E então aparece um computador, que qualquer pessoa pode comprar. O Altair 8800 continha um processador 8080, 256 bytes de memória na primeira versão e tinha um preço abaixo de US $ 1000 - foi o primeiro computador pessoal de sucesso a ser vendido. Este foi o mesmo computador para o qual Bill Gates e Paul Allen desenvolveram a linguagem BASIC, o computador graças ao qual centenas e milhares de entusiastas estudantes e crianças em idade escolar vieram para o mundo da programação.
Claro, o baixo custo tinha um preço - a primeira versão do ALTAIR não tinha teclado nem tela, apenas um painel de alternância, como na foto. Tornou-se interessante descobrir como escrever e executar um programa nesse PC. Para quem quiser saber como funciona, a continuação sob o corte.
Código
. 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, :
, .
Como de costume, boa sorte a todos.