]]> ]]>

PDP

Реализация языка программирования Assembler

PDP (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-10

CHTTYO — весь ввод/вывод осуществляется с помощью каналов ввода/вывода. Лучше всего сделать символические имена для тех каналов, которые вы используете, и начинать их с 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

]]>

Работа программистам