我正在为6502写一个模拟器,基本上,有一些指令,其中一个寄存器(主要是X和Y)保存偏移量,我想知道,因为分支指令使用带符号的8位整数,寄存器的值是否保持为8位?这意味着:6502使用带符号或无符号8位寄存器(JAVA)吗?
switch(opcode) {
//Bunch of opcodes
case 0xD5:
//Read the memory area with final address being address + x offset
int rempResult = a - readMemory(address + x);
//Comparing some things, setting/disabling flags
//Incrementing program counter and cycles/ticks
break;
//More opcodes
}
假设在这种情况下x = 0xEE。在普通的二进制中,这意味着x = 238.然而,在6502中,分支指令使用带符号的偏移量跳转到内存地址,所以我想知道,在这种情况下是238解释为-18还是仅仅常规无符号8位值?
寄存器保存8位数据。它既不签名也不签名。每个教学都要决定如何解释它。相对跳转将其解释为已签名。 –
这不是真正的“相对跳跃”。这是一个零页面,X“比较累加器”指令。它将累加器与一些值进行比较并相应地设置标志。事情是,用Zero Page,X(或任何...,X指令),它们被解释为有符号还是无符号?而“他们”是指寄存器。 – ZimZim