VMX51C900
_______________________________________________________________________________________________
www.ramtron.com page 6 of 55
Instruction Set
The following tables describe the instruction set of the
VMX51C900. The instructions are function and binary code
compatible with industry standard 8051s.
TABLE 4: LEGEND FOR INSTRUCTION SET TABLE
Symbol Function
A Accumulator
Rn Register R0-R7
Direct Internal register address
@Ri Internal register pointed to by R0 or R1 (except MOVX)
rel Two's complement offset byte
bit Direct bit address
#data 8-bit constant
#data 16 16-bit constant
addr 16 16-bit destination address
addr 11 11-bit destination address
TABLE 5: VRS570/VRS580 INSTRUCTION SET
Mnemonic Description Size
(bytes)
Instr.
Cycles Op-
Code
Arithmetic instructions
ADD A, Rn Add register to A 1 1 28h-2Fh
ADD A, direct Add direct byte to A 2 1 25h
ADD A, @Ri Add data memory to A 1 1 26h,27h
ADD A, #data Add immediate to A 2 1 24h
ADDC A, Rn Add register to A with carry 1 1 38h-3Fh
ADDC A, direct Add direct byte to A with carry 2 1 35h
ADDC A, @Ri Add data memory to A with carry 1 1 36h,37h
ADDC A, #data Add immediate to A with carry 2 1 34h
SUBB A, Rn Subtract register from A with borrow 1 1 98h-9Fh
SUBB A, direct Subtract direct byte from A with borrow 2 1 95h
SUBB A, @Ri Subtract data mem from A with borrow 1 1 96h-97h
SUBB A, #data Subtract immediate from A with borrow 2 1 94h
INC A Increment A 1 1 04h
INC Rn Increment register 1 1 08h-0Fh
INC direct Increment direct byte 2 1 05h
INC @Ri Increment data memory 1 1 06h, 07h
DEC A Decrement A 1 1 14h
DEC Rn Decrement register 1 1 18h-1Fh
DEC direct Decrement direct byte 2 1 15h
DEC @Ri Decrement data memory 1 1 16h,17h
INC DPTR Increment data pointer 1 2 A3h
MUL AB Multiply A by B 1 4 A4h
DIV AB Divide A by B 1 4 84h
DA A Decimal adjust A 1 1 D4h
Logical Instructions
ANL A, Rn AND register to A 1 1 58h-5Fh
ANL A, direct AND direct byte to A 2 1 55h
ANL A, @Ri AND data memory to A 1 1 56-57h
ANL A, #data AND immediate to A 2 1 54h
ANL direct, A AND A to direct byte 2 1 52h
ANL direct, #data AND immediate data to direct byte 3 2 53h
ORL A, Rn OR register to A 1 1 48h-4Fh
ORL A, direct OR direct byte to A 2 1 45h
ORL A, @Ri OR data memory to A 1 1 46h,47h
ORL A, #data OR immediate to A 2 1 44h
ORL direct, A OR A to direct byte 2 1 42h
ORL direct, #data OR immediate data to direct byte 3 2 43h
XRL A, Rn Exclusive-OR register to A 1 1 68h-6Fh
XRL A, direct Exclusive-OR direct byte to A 2 1 65h
XRL A, @Ri Exclusive-OR data memory to A 1 1 66h,67h
XRL A, #data Exclusive-OR immediate to A 2 1 64h
XRL direct, A Exclusive-OR A to direct byte 2 1 62h
XRL direct, #data Exclusive-OR immediate to direct byte 3 2 63h
CLR A Clear A 1 1 E4h
CPL A Compliment A 1 1 F4h
SWAP A Swap nibbles of A 1 1 C4h
RL A Rotate A left 1 1 23h
RLC A Rotate A left through carry 1 1 33h
RR A Rotate A right 1 1 03h
RRC A Rotate A right through carry 1 1 13h
Mnemonic Description Size
(bytes)
Instr.
Cycles Op
Code
Boolean Instruction
CLR C Clear Carry bit 1 1 C3h
CLR bit Clear bit 2 1 C2h
SETB C Set Carry bit to 1 1 1 D3h
SETB bit Set bit to 1 2 1 D2h
CPL C Complement Carry bit 1 1 B3h
CPL bit Complement bit 2 1 B2h
ANL C,bit Logical AND between Carry and bit 2 2 82h
ANL C,#bit Logical AND between Carry and not bit 2 2 A0h,B0h
ORL C,bit Logical ORL between Carry and bit 2 2 72h
ORL C,#bit Logical ORL between Carry and not bit 2 2 A0h
MOV C,bit Copy bit value into Carry 2 1 A2h
MOV bit,C Copy Carry value into Bit 2 2 92h
Data Transfer Instructions
MOV A, Rn Move register to A 1 1 E8h-Efh
MOV A, direct Move direct byte to A 2 1 E5h
MOV A, @Ri Move data memory to A 1 1 E6h,E7h
MOV A, #data Move immediate to A 2 1 74h
MOV Rn, A Move A to register 1 1 F8h-FFh
MOV Rn, direct Move direct byte to register 2 2 A8h-AFh
MOV Rn, #data Move immediate to register 2 1 78h-7Fh
MOV direct, A Move A to direct byte 2 1 F5h
MOV direct, Rn Move register to direct byte 2 2 88h-8Fh
MOV direct, direct
Move direct byte to direct byte 3 2 85h
MOV direct, @Ri Move data memory to direct byte 2 2 86h,87h
MOV direct, #data
Move immediate to direct byte 3 2 75h
MOV @Ri, A Move A to data memory 1 1 F6h,F7h
MOV @Ri, direct Move direct byte to data memory 2 2 A6h,A7h
MOV @Ri, #data Move immediate to data memory 2 1 76h-77h
MOV DPTR, #data
Move immediate to data pointer 3 2 90h
MOVC A, @A+DPTR Move code byte relative DPTR to A 1 2 93h
MOVC A, @A+PC Move code byte relative PC to A 1 2 83h
MOVX A, @Ri Move external data (A8) to A 1 2 E2h,E3h
MOVX A, @DPTR Move external data (A16) to A 1 2 E0h
MOVX @Ri, A Move A to external data (A8) 1 2 F2h,F3h
MOVX @DPTR, A Move A to external data (A16) 1 2 F0h
PUSH direct Push direct byte onto stack 2 2 C0h
POP direct Pop direct byte from stack 2 2 D0h
XCH A, Rn Exchange A and register 1 1 C8h-CFh
XCH A, direct Exchange A and direct byte 2 1 C5h
XCH A, @Ri Exchange A and data memory 1 1 C6h,C7h
XCHD A, @Ri Exchange A and data memory nibble 1 1 D6h,D7h
Branching Instructions
ACALL addr 11 Absolute call to subroutine 2 2
11h,31h,
51h,71h,
91h,B1h,
D1h,F1h
LCALL addr 16 Long call to subroutine 3 2 12h
RET Return from subroutine 1 2 22h
RETI Return from interrupt 1 2 32h
AJMP addr 11 Absolute jump unconditional 2 2
01h,21h,
41h,61h,
81h,A1h,
C1h,E1h
LJMP addr 16 Long jump unconditional 3 2 02h
SJMP rel Short jump (relative address) 2 2 80h
JC rel Jump on carry = 1 2 2 40h
JNC rel Jump on carry = 0 2 2 50h
JB bit, rel Jump on direct bit = 1 3 2 20h
JNB bit, rel Jump on direct bit = 0 3 2 30h
JBC bit,rel Jump on direct bit = 1 and clear 3 2 10h
JMP @A+DPTR Jump indirect relative DPTR 1 2 73h
JZ rel Jump on accumulator = 0 2 2 60h
JNZ rel Jump on accumulator 1= 0 2 2 70h
CJNE A, direct, rel Compare A, direct JNE relative 3 2 B5h
CJNE A, #d, rel Compare A, immediate JNE relative 3 2 B4h
CJNE Rn, #d, rel Compare reg, immediate JNE relative 3 2 B8h-BFh
CJNE @Ri, #d, rel
Compare ind, immediate JNE relative 3 2 B6h,B7h
DJNZ Rn, rel Decrement register, JNZ relative 2 2 D8h-DFh
DJNZ direct, rel Decrement direct byte, JNZ relative 3 2 D5h
Miscellaneous Instruction
NOP No operation 1 1 00h,A5h
Rn: Any of the register R0 to R7
@Ri: Indirect addressing using Register R0 or R1
#data: immediate Data provided with Instruction
#data16: Immediate data included with instruction
bit: address at the bit level
rel: relative address to Program counter from +127 to –128
Addr11: 11-bit address range
Addr16: 16-bit address range
#d: Immediate Data supplied with instruction