---------------------------------------------------------------- | | | | | Digital Equipment Corporation | | | | PPPPPP DDDDD PPPPPP 1 1 | | P P D D P P 11 11 | | P P D D P P 1 1 | | PPPPPP D D PPPPPP XXX 1 1 | | P D D P 1 1 | | P D D P 1 1 | | P DDDDD P 111 111 | | | | PDP-11 Minicomputer Instruction Set Summary | | | | | | | | | | | | | | | | | | | | | | | | | | | |XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX| |XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX| |XXXXX X XXX XXX XXXXXXXX XXX XXX XX XXXX XXXXXXXX XXX XXX| |XXXXX X XXXXXXXX XXXXXXXX XXXXXXXX XX XXXX XXXXXXXX XXX XXX| |XX X XXX XXX XX XX XXX XXX X XXX XX XX XXX XXX| |X XX X XXX XXX X XX X XXX XXX XX XXXX XXXXX X XXX XXX| |X XX X XXX XXX X XX X XXX XXX XX XXXX XX X XXX XXX| |X XX X XXX XXX X XX X XXX XXX XX XXXX X XX X XXX XXX| |XX X XXX XXX XX X XXX XXX XXX XX XX X XXX XXX| |XXXXXXXX XXXXXXXX XXXXX X XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX| |XXXXXXXX XXXXXXXX XX XX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX| |XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |Written by Jonathan Bowen | | Programming Research Group | | Oxford University Computing Laboratory | | 8-11 Keble Road | | Oxford OX1 3QD | | England | | | | Tel +44-865-273840 | | | |Created March 1982 | |Updated April 1985 | |Issue 1.2 Copyright (C) J.P.Bowen 1985| ---------------------------------------------------------------- ---------------------------------------------------------------- |Mnemonic |Opcode|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=0 | |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=1 | |BPL a |1000XX|----|Branch if Plus |If N=0 | |BPT |000003|----|Breakpoint Trap |Vector at 14 | |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 | |DIV s,r |071RSS|****|Divide |r=r/s (EIS)#| |EMT t |1040TT|----|Emulator Trap |Vector at 30 | |FADD r |07500R|**00|Floating Add | (FIS)#| |FDIV r |07503R|**00|Floating Divide | (FIS)#| |FMUL r |07502R|**00|Floating Multiply | (FIS)#| |FSUB r |07501R|**00|Floating Subtract | (FIS)#| |HALT |000000|----|Halt | | |INCb d |B052DD|***-|Increment |d=d+1 | |IOT |000004|----|Input/Output Trap |Vector at 20 | |JMP d |0001DD|----|Jump |PC=d | |JSR r,d |004RDD|----|Jump to Subroutine |r=PC,PC=d | |MARK n |0064NN|----|Mark stack |RTS aid #| |MFPD s |1065SS|**0-|Move From Previous Data | #| |MFPI s |0065SS|**0-|Move From Previous Instr. | #| |MFPS d |1067DD|**0-|Move From Processor Status|d=PS<7:0> #| |MOVb s,d |B1SSDD|**0-|Move |d=s | |MTPD d |1066DD|**0-|Move To Previous Data | #| |MTPI d |0066DD|**0-|Move To Previous Instr. | #| |MTPS s |1064SS|****|Move To Processor Status |PS<7:0>=s #| |MUL s,r |070RSS|**0*|Multiply |r=r*s (EIS)#| |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}<- | |RORb d |B060DD|****|Rotate Right |d=->{C,d} | |RTI |000002|----|Return from Interrupt |{PC,PS}=(SP)+| |RTS r |00020R|----|Return from Subroutine |PC=r,r=(SP)+ | |RTT |000006|----|Return from Trace trap |No T trap #| |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 #| |SPL n |00023N|----|Set Priority Level |PS<7:5>=N #| |SUB s,d |16SSDD|****|Subtract |d=d-s | |SWAB d |0003DD|**00|Swap Bytes | | ---------------------------------------------------------------- ---------------------------------------------------------------- |Mnemonic |Opcode|NZVC|Description |Notes | |---------+------+----+--------------------------+-------------| |SXT d |0067DD|-*0-|Sign Extend |d=0 or -1 #| |TRAP t |1044TT|----|Trap |Vector at 34 | |TSTb d |B055DD|**00|Test |d | |WAIT |000001|----|Wait for interrupt | | |XOR r,d |074RDD|**0-|Exclusive OR |d=dxr #| |---------+------+----+----------------------------------------| | | 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) | |----------------+----+----------------------------------------| | PSW |-*01|Flag unaffected/affected/reset/set | | | |Current mode (Bits 15 to 14) | | | |Previous mode (Bits 13 to 12) | | | |General register set (Bit 11) | | | |Priority level (Bits 7 to 5) | | T | |Trace trap (Bit 4) | | N |N |Negative (Bit 3) | | Z | Z |Zero (Bit 2) | | V | V |Overflow (Bit 1) | | C | C|Carry (Bit 0) | |---------------------+----------------------------------------| | r |Register (mode 0) | | (r) |Register deferred (mode 1) | | @r | ditto | | (r)+ |Auto-increment (mode 2) | | @(r)+ |Auto-increment deferred (mode 3) | | -(r) |Auto-decrement (mode 4) | | @-(r) |Auto-decrement deferred (mode 5) | | nn(r) |Index (mode 6) | | @nn(r) |Index deferred (mode 7) | | #nn |Immediate (mode 2, r=PC) | | @#nn |Absolute (mode 3, r=PC) | | nn |Relative (mode 6, r=PC) | | @nn |Relative deferred (mode 7, r=PC) | |---------------------+----------------------------------------| | 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 | |---------------------+----------------------------------------| | DEC |Digital Equipment Corporation | | EIS |Extended fixed point Instruction Set | | FIS |Floating point Instruction Set | | PDP |Programmed Data Processor | | PSW |Processor Status Word | |---------------------+----------------------------------------| | 000 |Reserved vector | | 004 |Time-out/system error vector | | 010 |Illegal and reserved instruction vector | | 014 |BPT instruction vector | | 020 |IOT instruction vector | | 024 |Power fail vector | | 030 |EMT instruction vector | | 034 |TRAP instruction vector | | 060 |Console input device vector | | 064 |Console output device vector | | 100 |External event line interrupt vector | | 160000-177776 |Device addresses | ----------------------------------------------------------------