Hola, Habr.
En la historia de la informática, hay ciertos eventos que han influido en el curso de la historia. Uno de ellos fue la aparición de la primera computadora personal producida en masa.
En esos años, las computadoras solo eran utilizadas por científicos e ingenieros en grandes empresas. Y luego aparece una computadora, que cualquiera puede comprar. El Altair 8800 contenía un procesador 8080, 256 bytes de memoria en la primera versión y tenía un precio inferior a $ 1000: fue la primera computadora personal exitosa que se vendió. Fue la misma computadora para la que Bill Gates y Paul Allen desarrollaron el lenguaje BASIC, la computadora gracias a la cual cientos y miles de estudiantes y escolares entusiastas llegaron al mundo de la programación.
Por supuesto, lo barato tenía un precio: la primera versión de ALTAIR no tenía ni teclado ni pantalla, solo un panel de interruptores de palanca, como en la foto. Resultó interesante descubrir cómo escribir y ejecutar un programa en tal PC. Para aquellos que quieran saber cómo funciona, la continuación bajo el 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 costumbre, buena suerte a todos.