我正在爲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