Max Willich
Max Willich

Reputation: 93

GameBoy 16-bit load into 8-bit memory

I have begun programming an emulator for the Gameboy classic, my next project after a successful Chip 8 Emulator.

As a reference I use the GameBoy CPU Manual.

Now on page 66 it says:

LD  A,(HL)  7E  8

Basically, load the value HL into register A.

However, as I understand this, this would load the 16-bit value HL into the 8-bit register A. Which of course doesnt fit.

Do you have any idea how this is meant? All other references are just simple tables without explaination, but say the same thing.

Thanks for your answers!

Upvotes: 8

Views: 934

Answers (2)

user5743777
user5743777

Reputation: 11

I think LD A,(HL) is a synonym for something more widely written as LD a,[hl] based on the documentation for a similar instruction on page 71.

  1. LDD A,(HL) Description: Put value at address HL into A. Decrement HL. Same as: LD A,(HL) - DEC HL

Therefore, LD A,(HL) means "Put value at address HL into A." HL is a 16 bit value, but the address it references is 8 bit, so it fits into A.

Upvotes: 1

theonly112
theonly112

Reputation: 151

With this instruction the value pointed to by (HL) is loaded into A not the value of HL itself. For example if HL has the value 0xABCD and the value of the memory at address 0xABCD is 0x50 then 0x50 is loaded into register A.

Pseudo implementation

register.A = memory.ReadByte(register.HL);

Upvotes: 9

Related Questions