ORA
ORA (short for "Logical OR on Accumulator") is the mnemonic for a machine language instruction which performs a bit-wise boolean "or" between each of the eight bits in the accumulator and their corresponding bits in the memory address specified. The eight resulting bits form a byte, which is stored in the accumulator.
Addressing modes[edit | edit source]
Opcode | Addressing mode |
Assembler format |
Length in bytes |
Number of cycles | |
Dec | Hex | ||||
9 | 09 | Immediate | ORA #nn | 2 | 2 |
13 | 0D | Absolute | ORA nnnn | 3 | 4 |
29 | 1D | Absolute,X | ORA nnnn,X | 3 | 4* |
25 | 19 | Absolute,Y | ORA nnnn,Y | 3 | 4* |
5 | 05 | Zeropage | ORA nn | 2 | 3 |
21 | 15 | Zeropage,X | ORA nn,X | 2 | 4 |
1 | 01 | Indexed-indirect | ORA (nn,X) | 2 | 6 |
17 | 11 | Indirect-indexed | ORA (nn),Y | 2 | 5 |
ORA supports eight different addressing modes, as shown in the table at right.
In the assembler formats listed, nn represents a single-byte (8-bit) figure, and nnnn is a two-byte (16-bit) address.
With some addressing forms (marked with an asterisk, *, in the "Number of cycles" column) the execution time for ORA depends on the circumstances: In cases where the indexing requires the CPU to "reach across" a page boundary from the base address, the execution time is 1 cycle longer than listed here.
CPU flags[edit | edit source]
ORA affects 2 of the CPU's status flags:
- The negative status flag is set if the result is negative, i.e. has its most significant bit set.
- The zero flag is set if the result is zero, or cleared if it is non-zero.