Сборка Z80 или 8080, машинный код 21 байт
Предположим, что устройство ввода-вывода с отображенной памятью:
Z80 8080
3A xx xx ld a, (вход) lda вход; получить входной символ
11 0A 20 ld de, 200ah lxi d, 200ah; пробел и перевод строки
21 гггг гг лд гл, выходной лкси ч, выходной; получить выходной адрес
77 л.д. (гл), мов м, а; выходной символ * 3
77 л.д. (гл), мов м, а
77 л.д. (гл), мов м, а
73 л.д. (гл), е мов м, е; вывод новой строки
77 л.д. (гл), мов м, а; выходной символ
72 л.д. (гл), д мов, д; выходное пространство
77 л.д. (гл), мов м, а; выходной символ
73 л.д. (гл), е мов м, е; вывод новой строки
77 л.д. (гл), мов м, а; выходной символ * 3
77 л.д. (гл), мов м, а
77 л.д. (гл), мов м, а
76 остановка HLT; или C9 ret
Переводчик не нужен!
HexDump:
0000: 3A 00 FF 11 0A 20 21 01 FF 77 77 77 73 77 72 77
0010: 73 77 77 77 76
где входной адрес находится в FF00h, а выходной адрес отображается в FF01h. Фактические адреса будут зависеть от фактического оборудования. Конечно, это предполагает, что ввод / вывод отображен в память. Если это отображение ввода / вывода, потребуется несколько дополнительных байтов, потому что инструкции ввода / вывода Z80 и 8080 по два байта каждая. Это также предполагает, что устройство вывода интерпретирует 0Ah как новую строку и не требует CR (0Dh), который добавил бы к программе дополнительные 4 байта.