Список команд ассемблера PDP-11 - Contrib - Каталог статей - Возрождение Электроники-60
PDP-11 , Электроника-60, СМ-1420 и им подобные
Главная | Каталог статей | Регистрация | Вход
Приветствую Вас Гость | RSS

Дорогие посетители.Убедительно просим Вас Загружать имеющуюся у Вас информацию (Файлы образов дисков, Исходники, Книги и т.д.) касающуюся ПЭВМ с архитектурой PDP-11.

Меню сайта
  • Создание сайтов в Усть-каменогорске
  • Люди на сайте
    Друзья Нравится
    Google
    Форма входа
    Категории раздела
    Contrib [88]
    Статьи, взятые из разных источников.
    My atticle [2]
    Статьи,написаные лично мною
    Forex [22]
    Всё о заработке на рынке FOREX
    Поиск
    Облако тэгов
    RT-11 LSI-11 PDP-11 Последняя версия RT-11 БК ДВК бк-0010 приставка Бортника сопроцессор Кроскомпилятор Схема ANDOS БК-0011 КНГМД RADIX-50 Rtty БК0010 радиосвязь сеть УКНЦ 11/70 11/83 11/93 RSX-11
    Прогноз Forex
    Котировки от Forex4You
    Открыть реальный счет
    Статистика
    Счетчик тИЦ, PR и обратных ссылок Resurs.kz: сайты Казахстана и раскрутка сайта
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Поиск
    Главная » Статьи » Contrib

    Список команд ассемблера PDP-11
    Мнемоника
    Код
    NZVC Description Notes
    ADCb d B055DD
    ****
    Add Carry d=d+C
    ADD s,d 06SSDD
    ****
    Add d=s+d
    ASH s,r 072RSS
    ****
    Arithmetic Shift r=r*2^s(EIS)#
    ASHC s,r 073RSS
    ****
    Arithmetic Shift Combined (EIS)#
    ASLb d B063DD
    ****
    Arithmetic Shift Left d=d*2
    ASRb d B062DD
    ****
    Arithmetic Shift Right d=d/2
    BCC a 1030XX ---- Branch if Carry Clear If C=0
    BCS a 1034XX ---- Branch if Carry Set If C=1
    BEQ a 0014XX ---- Branch if Equal If Z=1
    BGE a 0020XX ---- Branch if Greater or Equal If NxV?=0
    BGT a 0030XX ---- Branch if Greater Than If Zv{NxV}=0
    BICb s,d B4SSDD **0- Bit Clear d=d&{~s}
    BISb s,d B5SSDD **0- Bit Set (OR) d=dvs
    BITb s,d B3SSDD **0- Bit Test (AND) d&s
    BHI a 1010XX ---- Branch if Higher If CvZ?=0
    BHIS a 1030XX ---- Branch if Higher or Same If C=0
    BLE a 0034XX ---- Branch if Less or Equal If Zv{NxV}=1
    BLT a 0024XX ---- Branch if Less Than If NxV?=1
    BLO a 1034XX ---- Branch if Lower If C=1
    BLOS a 1014XX ---- Branch if Lower or Same If CvZ?=1
    BMI a 1004XX ---- Branch if Minus If N=1
    BNE a 0010XX ---- Branch if Not Equal If Z=0
    BPL a 1000XX ---- Branch if Plus If N=0
    BR a 0004XX ---- Branch PC=PC+2*XX
    BVC a 1020XX ---- Branch if Overflow Clear If V=0
    BVS a 1024XX ---- Branch if Overflow Set If V=1
    CALL d 0047DD ---- Call subroutine (= JSR PC,d)
    CCC 000257 0000 Clear all Condition Codes {C,N,V,Z}=0
    CLC 000241 ---0 Clear Carry C=0
    CLN 000250 0--- Clear Negative N=0
    CLRb d B050DD 0100 Clear d=0
    CLV 000242 --0- Clear Overflow V=0
    CLZ 000244 -0-- Clear Zero Z=0
    CMPb s,d B2SSDD
    ****
    Compare s-d
    COMb d B051DD **01 Complement d=~d
    DECb d B053DD
    ***-
    Decrement d=d-1
    HALT 000000 ---- Halt  
    INCb d B052DD ***- Increment d=d+1
    JMP d 0001DD ---- Jump PC=d
    JSR r,d 004RDD ---- Jump to Subroutine r=PC,PC=d
    MOVb s,d B1SSDD **0- Move d=s
    NEGb d B054DD
    ****
    Negate d=-d
    NOP 000240 ---- No Operation  
    RESET 000005 ---- Reset external bus  
    RETURN 000207 ---- Return from subroutine (= RTS PC)
    ROLb d B061DD
    ****
    Rotate Left d={C,d}<- </td>
    RORb d B060DD
    ****
    Rotate Right d=->{C,d}
    RTS r 00020R ---- Return from Subroutine PC=r,r=(SP)+
    SBCb d B056DD
    ****
    Subtract Carry d=d-C
    SCC 000277 1111 Set all Condition Codes {C,N,V,Z}=0
    SEC 000261 ---1 Set Carry C=1
    SEN 000270 1--- Set Negative N=1
    SEV 000262 --1- Set Overflow V=1
    SEZ 000264 -1-- Set Zero Z=1
    SOB r,a 077RNN ---- Subtract One and Branch PC=PC-2*NN #
    SUB s,d 16SSDD
    ****
    Subtract d=d-s
    SWAB d 0003DD **00 Swap Bytes  
    SXT d 0067DD -*0- Sign Extend d=0 or -1 #
    TSTb d B057DD **00 Test d
    XOR r,d 074RDD **0- Exclusive OR d=dxr #

    CmdLegend?

    Обозначение Что значит
    B 0 for word, 1 for byte (1 bit)
    DD Destination field (6 bits)
    N Number (3 bits)
    NN Number (6 bits)
    R Register (3 bits, R0-5/SP/PC)
    SS Source field (6 bits)
    TT Number (8 bits)
    XX Offset (8 bits, -128 to +127)

    Обозначения  
    Rn General purpose Register (16-bit, n=0-5)
    SP Stack Pointer (16-bit, R6)
    PC Program Counter (16-bit, R7)
    PS Processor Status (16-bit)
    описания  
    a Relative address
    b Blank or B for word or byte operand(s)
    d s Destination/source
    n Register number (0 to 5)
    nn 16-bit expression (0 to 65535)
    r Register (Rn,SP,PC)
    t Trap number (0 to 255)
    + - * / ^ Add/subtract/multiply/divide/power
    & ~ v x Logical AND/NOT, inclusive/exclusive OR
    <- -> Rotate left/right
    { } < : > Combination of operands/bit range
    # Not applicable to all PDP-11s

    Не обязательные к реализации на эмуляторе команды:

    BPT 000003 ---- Breakpoint Trap Vector at 14
    DIV s,r 071RSS ** Divide (см. ниже) r=r/s (EIS)

    DIV

    Команды MUL и DIV Приведенное ранее описание этих команд дает о них упрощенное представление. Если в команде MUL MEM,R используется нечетный регистр R, то все верно. Если же используется четный, то произведение в виде тридцатидвухразрядного числа заносится в регистр R и регистр со следующим номером. Рассмотрим такой пример: MOV #1100,R2 MUL #1000,R2 Результат, если его рассматривать как тридцатидвухразрядное число, содержит 1 в битах 15 и 18 и нули в остальных. Младшие шестнадцать битов запоминаются в R3, а старшие — в R2. Таким образом, в данном случае после выполнения команды MUL третий регистр содержит число 100000, а второй 4:

    0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    31 16 15 0

    В команде MUL операнды считаются целыми двоичными числами со знаком, а результат формируется в виде тридцатидвухразрядного числа, 15-й бит старшего слова которого является знаковым. Нужно заметить, что результат умножения всегда корректен, потому что произведение двух шестнадцатиразрядных чисел не выходит за пределы двойного слова. Команда DIV выполняет деление целого числа в форме двойного слова, расположенного в регистре с четным номером и следующим за ним: MOV #1,R0 MOV #100007,R1 DIV #400,R0 В этом примере две первые команды загружают число 300007 в регистры R0 и R1. Команда DIV частное (600) запишет в R0, а остаток (7) — в R1. Если бы первой шла команда MOV #1000,R0, то результат от деления не поместился бы в одно слово. Действительно, при делении числа 200100007 на 400 получается 400200. При подобных попытках выполнение команды прерывается и устанавливается бит V.

    DIV - совсем на пальцах

    Пусть в регистре R1 находится число восемнадцать, которое мы хотим разделить на десять и сохранить остаток. Для этого подходит команда DIV: DIV #12,R0 ; четный регистр! Обратите внимание, что сначала мы пишем число (в восьмеричной системе счисления), на которое хотим разделить. Число, которое мы собираемся делить, должно быть занесено в регистр. Кроме того, это должен быть регистр с нечетным номером, а в команде DIV должен быть указан регистр с предыдущим номером; в этот регистр нужно предварительно поместить нуль (например, с помощью команды «очистки» CLR): CLR R0 DIV #12,R0 Команда DIV сохранит частное в регистре с предыдущим номером (в данном примере — R0), а остаток— в регистре, который использовался для хранения делимого (R1). Итак, в данном случае в R0 будет 1 и 8 — в R1
    Категория: Contrib | Добавил: un7jks (07.08.2012)
    Просмотров: 302 | Рейтинг: 0.0/0 |

    Хостинг от uCoz