PDP
Реализация языка программирования AssemblerPDP (Programmed Data Processor) — семейство миникомпьютеров, разработанных Digital Equipment Corporation. DEC ориетировалась на компании, которые не могли позволить себе купить большой компьютер. Компания поглощена Compaq.
Примеры:
Hello, World!:
Пример для версий PDP-8/ — комментарии.
/ Hello World на ассемблере для DEC PDP-8
*200
hello, cla cll
tls / tls устанавливает флаг печати.
tad charac / создает индексный регистр
dca ir1 / для получения символов
tad m6 / настроить счетчик для
dca count / ввода символов.
next, tad i ir1 / получить символ.
jms type / его тип.
isz count / сделать что нибудь еще?
jmp next / нет, ввести другой символ
hlt
type, 0 / подпрограмма type
tsf
jmp .-1
tls
cla
jmp i type
charac, . / используется в качестве начального значения ir1.
310 / H
305 / E
314 / L
314 / L
317 / O
254 / ,
240 /
327 / W
317 / O
322 / R
314 / L
304 / D
241 / !
m6, -15
count, 0
ir1 = 10
$
Hello, World!:
Пример для версий PDP-11Программа написана на макроассемблере MACRO-11 Для компиляции и запуска этой программы в ОС RT-11 командуем:
. MACRO HELLO
ERRORS DETECTED: 0
. LINK HELLO -- Линкуем
. RUN HELLO -- Запускаем
Hello, world!
.TITLE HELLO WORLD ; Название
.MCALL .TTYOUT,.EXIT
HELLO:: MOV #MSG,R1 ; Начальный адрес строки
1$: MOVB (R1)+,R0 ; Получаем следующий символ
BEQ DONE ; Если ноль, выходим из цикла
.TTYOUT ; Иначе печатаем символ
BR 1$ ; Повтор цикла
DONE: .EXIT
MSG: .ASCIZ /Hello, world!/ ; Строка Hello, world!
.END HELLO ; Конец программы HELLO
Hello, World!:
Пример для версий PDP-10CHTTYO — весь ввод/вывод осуществляется с помощью каналов ввода/вывода. Лучше всего сделать символические имена для тех каналов, которые вы используете, и начинать их с CH. Определите эти имена с помощью MIDAS оператора == .
.CALL — это символическое обозначение для вызова системного вызова. Его формат: .CALL [SETZ ? SIXBIT/callname/ ? arguments ((SETZ))] .
OPEN открывает канал ввода/вывода для использования. Требует два параметра — номер канала и имя устройства в SIXBIT.
.LOSE %LSFIL — системный вызов, который печатает сообщение об ошибке ввода/вывода, если вдруг она произошла.
.IOT — системный вызов, который фактически занимается вводом/выводом. В качестве параметра нужно указать канал и адрес, содержащий код символа для вывода. Например, “H представляет H .
TITLE PRINTHELLO
A=1
CHTTYO==1 ;Канал для вывода.
START: ;Открытие TTY канала.
.CALL [SETZ ? SIXBIT/OPEN/
[.UAO,,CHTTYO] ? [SIXBIT/TTY/] ((SETZ))]
.LOSE %LSFIL
.IOT CHTTYO,["H] ;Печать HELLO WORLD посимвольно.
.IOT CHTTYO,["E]
.IOT CHTTYO,["L]
.IOT CHTTYO,["L]
.IOT CHTTYO,["O]
.IOT CHTTYO,[^M] ;Символ новой строки
.IOT CHTTYO,["W]
.IOT CHTTYO,["O]
.IOT CHTTYO,["R]
.IOT CHTTYO,["L]
.IOT CHTTYO,["D]
.VALUE ;Программка, остановись :)
END START
Комментарии
]]>blog comments powered by Disqus
]]>