Adc - Snes

A soma é feita junto com a flag carry para permitir soma de números longos (maiores que 16 bits).

É muito comum aparecer uma instrução “clc” antes do “adc”, para que a flag carry não influencie na soma.

Sbc - Snes

A lógica da flag carry aqui é invertida. Se a carry for 1 isso indica que não teve empréstimo e a subtração ocorre de forma “normal”. Se a flag carry for 0 então houve empréstimo e é subtraído 1 do resultado.

É feito assim por na Cpu do Snes só existe circuito pra soma. Então pra subtrair tem que ser feito uma soma com o complemento de 2 do número. Como a cpu considera o carry pra fazer com de multi precisão, a cpu faz o “not” do valor, transformando ele em complemento de 1, o que seria o complemento de 2 menos 1. Por isso que temo que usar a “sec” antes da subtração, pois isso deixaria o número em complemento de 2 e a soma seria “normal”, caso contrário a soma seria com o complemento de 1, o que iria subtrair o 1 que veio de empréstimo. Confuso pra quem está começando, eu sei.

Subtração

Inc/Dec - Snes

Incrementa o A ou uma variável na memória.

O “inc” sem parâmetros incrementa o A. Com parâmetro incrementa o dado na memória.

inx/iny/dex/dey - Snes

Incrementa ou decrementa o X/Y.