Comments 35
Можно саркастически издеваться конечно, но ИМХО это на тот момент был нормальный вход в микропроцессорную технику. На листочке накидал прогу в ассемблере, перевёл в процессорный шестнадцатеричный код по табличке, ввёл прогу кнопочками, запустил и либо радуешься, либо нет. Где косяк никто не подскажет если что-то не так. И тут как раз могут выделиться студенты знающие об макроассемблерах для РС, об отладчиках и т.д.
Сейчас конечно УМК на пенсию пора, надо сразу приучать к современным МК и IDE
первая версия ALTAIR не имела ни клавиатуры, ни экрана, только панель тумблеров, как на фото
Так ни в какой не было экрана и клавиатуры, не только в первой, как и не было собственно версий, разве нет?
Для компьютеров того периода нормой была работа со внешним терминалом по последовательному порту. Объединение терминала с микрокомпьютером в единую конструкцию произошло где-то во времена Apple I (1976), а в Apple II терминальная прослойка была устранена, и компьютер уже сам занялся опросом клавиатуры и выводом на экран, что сформировало привычный формат последующих домашних микрокомпьютеров 80-х.
Бонусом-фичей оригинальной реализации "стеклянного терминала" на сдвиговых регистрах в Apple I был аппаратный скроллинг. Для "обычной" параллельной видеопамяти IMHO самым удобным было решение в Amstrad PCW — хранить указатели на начало каждой строки. Прекрасно подходит для гладкого попиксельного скроллинга.
А пока изобретал, ему попался в руки 6502 за четверть цены от 8080, и заверте…
Интересно, как тогда обстояло в США со стабильностью электропитания? Во времена Спектрума, если при вбивании страниц хекс-кодов из журнала кончалось электричество, это вызывало печаль-огорчение. А если бы они еще и переключателями забивались…
Даже просто умножить 2 числа, если у процессора нет готовой команды для этого, будет поинтереснее любой задачи про гномиков, не говоря уже про написание кода «на бумажке».Это да, если заниматься любимым занятием — изобретением велосипедов ;)
INTEL 8080 assembly language manual
![](https://habrastorage.org/webt/zv/mt/5u/zvmt5uup0wdtt_aig4thti3-8-4.png)
del
Я все-таки сжульничал и скачал готовый компилятор, взять который можно здесь (полезно также посмотреть пример использования). Но как можно видеть, и на бумажке «скомпилировать» программу вручную вполне реально, хотя конечно, это и заняло бы куда больше времени.
Компиляция и компилятор — это процессы и программы, которые переводят с высокоуровневого языка на язык ассемблера. Эти слова неприменимы к процессу непосредственной сборки машинного кода из инструкций ассемблера.
От определения зависит. В некоторых слова "высокоуровневые" нет и перевод в машинные/бинарные коды.
Да, такие были — например, Small-C, но далеко не все — большинство компиляторов генерировало перемещаемый объектный код, обрабатываемый затем линкером. Меньшинство, которое генерило ассемблерный код, часто использовалось для кросс-компиляции (подготовки на одной системе программ для другой системы).
Что было 20-30 лет назад уже не актуально, наверное, но даже тогда мы говорили "компилируется", поскольку слабо отличались процессы: на входе человекочитаемый текст на языке программирования, на выходе — нечитаемый бинарный код.
Сразу видно, как работают все эти ассемблеры-трансляторы-компиляторы.
Если в двоичный вид перевести опкоды — понятно, как декодер команд работает.
Без абстракций, даже макроассемблеров и символьных имен, более понятно, как процессор обрабатывает данные, куда их надо положыть и откуда забрать по исполнении программы.
И вообще ассемблер должен быть вторым языком у программиста, чтобы уметь думать, как машына.
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
DCR B
JNZ LOOP
И ячейка STEP вместе с регистром C становятся не нужны. Прошу прощения за занудство :)
START:
LDA I
MOV B,A
SUB A
LOOP:
ADD B
DCR B
JNZ LOOP
PEND:
STA SUM
PWAIT:
JMP PWAIT
Ещё раз прошу прощения за занудство :)
Пишем программу для компьютера ALTAIR 8800 1975г выпуска