LDP (HL),HL
LDP (IX),HL
LDP (IY),HL
Load Physical
Rabbit 2000/3000/4000 Instruction
|
|
ED 64
|
LDP (HL),HL
|
|
(HL) = L; (HL + 1) = H. (Addr[19:16] =
A[3:0])
|
|
DD 64
|
LDP (IX),HL
|
|
(IX) = L; (IX + 1) = H. (Addr[19:16] =
A[3:0])
|
|
FD 64
|
LDP (IY),HL
|
|
(IY) = L; (IY + 1) = H. (Addr[19:16] =
A[3:0])
|
Description
These instructions are used to access 20-bit addresses. In all cases, the four most significant bits of the 20-
bit address (bits 19 through 16) are defined as the four least significant bits of A (bits 3 though 0). The
LDP instructions bypass the MMU's address translation unit for direct access to the 20-bit memory
address space.
-
LDP (HL),HL: Loads the memory location whose 16 least significant bits of its 20-bit address are the data in HL with the data in L, and then loads the following 20-bit address with the data in H.
-
LDP (IX),HL: Loads the memory location whose 16 least significant bits of its 20-bit address are the data in IX with the data in L, and then loads the following 20-bit address with the data in H.
-
LDP (IY),HL: Loads the memory location whose 16 least significant bits of its 20-bit address are the data in IY with the data in L, and then loads the following 20-bit address with the data in H.
Note that the LDP instructions wrap around on a 64K page boundary. Since the LDP instruction operates
on two-byte values, the second byte will wrap around and be written at the start of the page if you try to
read or write across a page boundary. Thus, if you fetch or store at address 0xn,0xFFFF, you will get the
bytes located at 0xn, 0xFFFF and 0xn,0x0000 instead of 0xn,0xFFFF and 0x(n+1),0x0000 as you might
expect. Therefore, do not use LDP at any physical address ending in 0xFFFF.