2016-03-26 5 views
2

Könnte jemand bitte erklären, was der Opcode 0x08 auf dem LR35902 Prozessor tut. Die Gedächtnisstütze ist LD (a16),SP.Gameboy Prozessor LR35902 Opcode 0x08 Bedeutung

Ich bin verwirrt, weil der Stapelzeiger ist ein 16-Bit-Wert, aber (a16) ist eine Adresse zu irgendwo nur in der Lage, 8 Bits zu speichern (denke ich!). Ich könnte vermuten, dass die ersten 8 Bits in (a16) platziert werden und die nächsten werden neben diesen platziert, aber ich möchte Bestätigung.

Antwort

8

Ja, dieser Opcode setzt den SP-Wert auf eine Adresse (a16). So wird es aussehen:

void MemoryWrite(uint16_t addr, uint8_t value); 

MemoryWrite(a16, SP & 0xFF); 
MemoryWrite(a16 + 1, (SP & 0xFF00) >> 8); 

Da es sich um einen Little-Endian-Prozessor handelt, wird zuerst das niedrigstwertige Byte eingegeben.

+0

Danke Creker, geschätzt! – user2674487

+0

MemoryWrite ((a16 + 1) & 0xFFFF, (SP & 0xFF00) >> 8); –

+0

Méga Lag, ich sehe, dass du die Adresse mit 0xFFFF anlegst, was ich glaube, um sicherzustellen, dass es positiv ist, aber ich denke, dass dies durch die Notation a16 impliziert wird. Auch wenn ich zu und mit 0xFFFF sollte sollte ich das nicht machen bevor ich die + 1 mache? – user2674487

Verwandte Themen