JMP PC+W |
|
Description: | Add W into PC(L), clear bit 8 |
Operation: | PC = ( PC & 0xFEFF ) + W |
Flags affected: | C DC Z |
Registers affected: | PC |
Sources referenced: | W |
Cycles: | 1 |
Opcode: | |
Actually compiles to: | add 2, W |
Microchip PIC syntax: | ADDWF 2,1 |
Notes: |
When executing a jmp PC+W, on the SX 18,28,etc.. no carry of the addition from bit 7 to bit 8 of the PC is performed. This means that relative jumps are restricted to the half page of 256 instructions from which the jump originates.
Despite this not being documented anywhere, adding, or-ing, and-ing, moving, etc... an 8 bit value to the PC (bits 0..7) also results in CLEARING the 9th bit (bit 8) of the PC. So you can only do relative or computed jumps into the first half page of each page. Just like calls.
Affected by the the CF_ bit in FUSEX (DEVICE CARRYX). If the CF bit is set to Zero, the Carry flag will be included in the addition. As a result, if the Carry is set, the destination will be one address higher than ( PC & 0xFEFF ) + W
Comments: