Lucas Pinheiro
Address Range | Size | Device |
---|---|---|
$0000-$07FF | $0800 | 2KB internal RAM |
$0800-$1FFF | $1800 | Mirrors of $0000-$07FF |
$2000-$2007 | $0008 | NES PPU registers |
$4000-$4017 | $0018 | NES APU and I/O registers |
$4020-$FFFF | $BFE0 | Cartridge space: PRG ROM, PRG RAM, and mapper registers (See Note) |
Fonte: http://wiki.nesdev.com/w/index.php/CPU_memory_map
Fonte: http://kevtris.org/mappers/mmc1/NES_SLROM.jpg
Register | Size | Desc |
---|---|---|
A | 8 bits | Accumlator |
X | 8 bits | General Purpose Register |
Y | 8 bits | General Purpose Register |
Flag | 8 bits | Overflow, Negative, Interrupt [...] |
SP | 16 bits | Stack Segment Register |
PC | 16 bits | Program Counter |
Instrução | Exemplo | Descrição |
---|---|---|
LDA | LDA #$1C | A = $1C |
STA | STA $35 | mem[$25] = A |
AND | AND #$25 | A = A & 25 |
CMP | CMP #3 | Compara valor em A com 3 |
BEQ | BEQ _endereço_ | Desvia se o resultado do CMP for igual por exemplo |
PC | 16 bits | Endereço da próxima instrução |
Mais informações: http://e-tradition.net/bytes/6502/6502_instruction_set.html
if (a == 0x25) {
/** do something 1 *//
} else {
a = 0x0;
}
Ferramentas utilizadas
Oh wait!
Análise Estática vs Análise Dinâmica
Vamos a prática !
Dúvidas ?