n---------m n--m n-|7------>0|->|CY| | v^--------u v--u | | r v--u
SRA
r
| b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | |
|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | $CB |
| 0 | 0 | 1 | 0 | 1 | r | |||
An arithmetic shift right 1 bit position is performed on the contents of register r. The contents of bit 0 are copied to the Carry flag and the previous contents of bit 7 remain unchanged. Bit 0 is the least-significant bit. In the assembled object code, operand r is specified as follows:
| Register | r | Hex |
|---|---|---|
| A | 111 | $2F |
| B | 000 | $28 |
| C | 001 | $29 |
| D | 010 | $2A |
| E | 011 | $2B |
| H | 100 | $2C |
| L | 101 | $2D |
| S | is set if result is negative, otherwise it is reset. |
| Z | is set if result is 0, otherwise it is reset. |
| H | is reset. |
| P/V | is set if parity even, otherwise it is reset |
| N | is reset. |
| C | is data from bit 0. |
Register E contains the following data:
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
Upon the execution of
SRA E
register E and the Carry Flag now contain:
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | C | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |