Document revision date: 30 March 2001 | |
![]() |
![]() ![]() ![]() ![]() |
![]() |
Previous | Contents | Index |
Decrement
opcode dif.mx
N|| <--- dif LSS 0; | |
Z|| <--- dif EQL 0; | |
V|| <--- {integer overflow}; | |
C|| <--- {borrow into most significant bit}; |
integer overflow
97 | DECB | Decrement Byte |
B7 | DECW | Decrement Word |
D7 | DECL | Decrement Long |
One is subtracted from the difference operand, and the difference operand is replaced by the result.
Divide
2operand: opcode divr.rx, quo.mx3operand: opcode divr.rx, divd.rx, quo.wx
N|| <--- quo LSS 0; | |
Z|| <--- quo EQL 0; | |
V|| <--- {integer overflow} OR {divr EQL 0}; | |
C|| <--- 0; |
integer overflow
divide by zero
86 | DIVB2 | Divide Byte 2 Operand |
87 | DIVB3 | Divide Byte 3 Operand |
A6 | DIVW2 | Divide Word 2 Operand |
A7 | DIVW3 | Divide Word 3 Operand |
C6 | DIVL2 | Divide Long 2 Operand |
C7 | DIVL3 | Divide Long 3 Operand |
In 2 operand format, the quotient operand is divided by the divisor operand, and the quotient operand is replaced by the result. In 3 operand format, the dividend operand is divided by the divisor operand, and the quotient operand is replaced by the result.
Extended Divide
opcode divr.rl, divd.rq, quo.wl, rem.wl
N|| <--- quo LSS 0; | |
Z|| <--- quo EQL 0; | |
V|| <--- {integer overflow} OR {divr EQL 0}; | |
C|| <--- 0; |
integer overflow
divide by zero
7B | EDIV | Extended Divide |
The dividend operand is divided by the divisor operand, the quotient operand is replaced by the quotient, and the remainder operand is replaced by the remainder.
Extended Multiply
opcode mulr.rl, muld.rl, add.rl, prod.wq
N|| <--- prod LSS 0; | |
Z|| <--- prod EQL 0; | |
V|| <--- 0; | |
C|| <--- 0; |
None.
7A | EMUL | Extended Multiply |
The multiplicand operand is multiplied by the multiplier operand, giving a double-length result. The addend operand is sign extended to double length and added to the result. The product operand is replaced by the final result.
Increment
opcode sum.mx
N|| <--- sum LSS 0; | |
Z|| <--- sum EQL 0; | |
V|| <--- {integer overflow}; | |
C|| <--- {carry from most significant bit}; |
integer overflow
96 | INCB | Increment Byte |
B6 | INCW | Increment Word |
D6 | INCL | Increment Long |
One is added to the sum operand and the sum operand is replaced by the result.
Move Complemented
opcode src.rx, dst.wx
N|| <--- dst LSS 0; | |
Z|| <--- dst EQL 0; | |
V|| <--- 0; | |
C|| <--- C; |
None.
92 | MCOMB | Move Complemented Byte |
B2 | MCOMW | Move Complemented Word |
D2 | MCOML | Move Complemented Long |
The destination operand is replaced by the one's complement of the source operand.
Move Negated
opcode src.rx, dst.wx
N|| <--- dst LSS 0; | |
Z|| <--- dst EQL 0; | |
V|| <--- {integer overflow}; | |
C|| <--- dst NEQ 0; |
integer overflow
8E | MNEGB | Move Negated Byte |
AE | MNEGW | Move Negated Word |
CE | MNEGL | Move Negated Long |
The destination operand is replaced by the negative of the source operand.
Integer overflow occurs if the source operand is the largest negative integer (which has no positive counterpart). On overflow, the destination operand is replaced by the source operand.
Move
opcode src.rx, dst.wx
N|| <--- dst LSS 0; | |
Z|| <--- dst EQL 0; | |
V|| <--- 0; | |
C|| <--- C; |
None.
90 | MOVB | Move Byte |
B0 | MOVW | Move Word |
D0 | MOVL | Move Long |
7D | MOVQ | Move Quad |
7DFD | MOVO | Move Octa |
The destination operand is replaced by the source operand.
Move Zero-Extended
opcode src.rx, dst.wy
N|| <--- 0; | |
Z|| <--- dst EQL 0; | |
V|| <--- 0; | |
C|| <--- C; |
None.
9B | MOVZBW | Move Zero-Extended Byte to Word |
9A | MOVZBL | Move Zero-Extended Byte to Long |
3C | MOVZWL | Move Zero-Extended Word to Long |
For MOVZBW, bits 7:0 of the destination operand are replaced by the source operand; bits 15:8 are replaced by zero. For MOVZBL, bits 7:0 of the destination operand are replaced by the source operand; bits 31:8 are replaced by zero. For MOVZWL, bits 15:0 of the destination operand are replaced by the source operand; bits 31:16 are replaced by zero.
Multiply
2operand: opcode mulr.rx, prod.mx3operand: opcode mulr.rx, muld.rx, prod.wx
N|| <--- prod LSS 0; | |
Z|| <--- prod EQL 0; | |
V|| <--- {integer overflow}; | |
C|| <--- 0; |
integer overflow
84 | MULB2 | Multiply Byte 2 Operand |
85 | MULB3 | Multiply Byte 3 Operand |
A4 | MULW2 | Multiply Word 2 Operand |
A5 | MULW3 | Multiply Word 3 Operand |
C4 | MULL2 | Multiply Long 2 Operand |
C5 | MULL3 | Multiply Long 3 Operand |
In 2 operand format, the product operand is multiplied by the multiplier operand, and the product operand is replaced by the low half of the double-length result. In 3 operand format, the multiplicand operand is multiplied by the multiplier operand, and the product operand is replaced by the low half of the double-length result.
Integer overflow occurs if the high half of the double-length result is not equal to the sign extension of the low half of the double-length result.
Push Long
opcode src.rl
N|| <--- src LSS 0; | |
Z|| <--- src EQL 0; | |
V|| <--- 0; | |
C|| <--- C; |
None.
DD | PUSHL | Push Long |
The longword source operand is pushed on the stack.
Rotate Long
opcode cnt.rb, src.rl, dst.wl
N|| <--- dst LSS 0; | |
Z|| <--- dst EQL 0; | |
V|| <--- 0; | |
C|| <--- C; |
None.
9C | ROTL | Rotate Long |
The source operand is rotated logically by the number of bits specified by the count operand, and the destination operand is replaced by the result. The source operand is unaffected. A positive count operand rotates to the left. A negative count operand rotates to the right. A zero count operand replaces the destination operand with the source operand.
Subtract with Carry
opcode sub.rl, dif.ml
N|| <--- dif LSS 0; | |
Z|| <--- dif EQL 0; | |
V|| <--- {integer overflow}; | |
C|| <--- {borrow into most significant bit}; |
integer overflow
D9 | SBWC | Subtract with carry |
The subtrahend operand and the contents of the condition code C-bit are subtracted from the difference operand, and the difference operand is replaced by the result.
Subtract
2operand: opcode sub.rx, dif.mx3operand: opcode sub.rx, min.rx, dif.wx
N|| <--- dif LSS 0; | |
Z|| <--- dif EQL 0; | |
V|| <--- {integer overflow}; | |
C|| <--- {borrow into most significant bit}; |
integer overflow
82 | SUBB2 | Subtract Byte 2 Operand |
83 | SUBB3 | Subtract Byte 3 Operand |
A2 | SUBW2 | Subtract Word 2 Operand |
A3 | SUBW3 | Subtract Word 3 Operand |
C2 | SUBL2 | Subtract Long 2 Operand |
C3 | SUBL3 | Subtract Long 3 Operand |
In 2 operand format, the subtrahend operand is subtracted from the difference operand, and the difference operand is replaced by the result. In 3 operand format, the subtrahend operand is subtracted from the minuend operand, and the difference operand is replaced by the result.
Integer overflow occurs if the input operands to the subtract are of different signs and the sign of the result is the sign of the subtrahend. On overflow, the difference operand is replaced by the low-order bits of the true result.
Previous | Next | Contents | Index |
![]() ![]() ![]() ![]() |
privacy and legal statement | ||
4515PRO_017.HTML |