📄 opcodeda.java
字号:
/** * Projet de langage JAVA IFITEP 3 2005 - Simulateur 8051 * <p> * D閒inition de l'instruction DA. * Cf.: * - documentation technique 8051 * - Ouvrage "Microcontroleur 8051 et 8052", edition Dunod * * @author Matthieu SIMON * @version 1.0 du 14/06/05 */public class OpcodeDA extends Opcode { public void execute(CORE_CPU8051 cpu) throws OpcodeException { int a; if(decodeAddressingMode(cpu.getCurrentLine().getOperand(1)) != CORE_CPU8051.ACC) throw new OpcodeException(this, "Bad Addressing Mode"); a = CORE_CPU8051.internalDataMem[CORE_CPU8051.ACC]; byte tmp = (byte)(a&0x0F); if(tmp > 9 || (CORE_CPU8051.internalDataMem[CORE_CPU8051.PSW]&0x40) != 0) // AC flag is set if((tmp = (byte)(tmp + 6)) > 15) CORE_CPU8051.internalDataMem[CORE_CPU8051.PSW] |= 0x80; // set carry flag tmp &= 0x0F; a = ((a>>4)&0x0F) + ((CORE_CPU8051.internalDataMem[CORE_CPU8051.PSW]>>7)&1); if(a > 9 || (CORE_CPU8051.internalDataMem[CORE_CPU8051.PSW]&0x80) != 0) // overflow is set if((a = (a + 6)) > 15) CORE_CPU8051.internalDataMem[CORE_CPU8051.PSW] |= 0x80; // set carry flag a &= 0x0F; CORE_CPU8051.internalDataMem[CORE_CPU8051.ACC] = (byte)(((a<<4)&0xF0) | tmp); cpu.incCyclesCount(1); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -