Beispiel #1
0
        void MOV(MemoryAddress address, eRegister16 x)
        {
            switch (x)
            {
                case eRegister16.AX:
                    MOV(address, AX);
                    break;
                case eRegister16.BX:
                    MOV(address, BX);
                    break;
                case eRegister16.CX:
                    MOV(address, CX);
                    break;
                case eRegister16.DX:
                    MOV(address, DX);
                    break;
                case eRegister16.DI:
                    MOV(address, DI);
                    break;
                case eRegister16.SI:
                    MOV(address, SI);
                    break;
                case eRegister16.BP:
                    MOV(address, BP);
                    break;
                case eRegister16.SP:
                    MOV(address, SP);
                    break;
                case eRegister16.DS:
                    MOV(address, DS);
                    break;
                case eRegister16.SS:
                    MOV(address, SS);
                    break;
                case eRegister16.ES:
                    MOV(address, ES);
                    break;
                case eRegister16.CS:
                    MOV(address, CS);
                    break;

                default:
                    throw new InvalidOperationException();
            }
        }
Beispiel #2
0
 void MOV(eRegister16 a ,MemoryAddress address)
 {
     MOV(a, this.machine.RAM.GetWord(address));
 }
Beispiel #3
0
 void MOV(eRegister16 a, ushort b)
 {
     switch (a)
     {
         case eRegister16.AX:
             AX = b;
             break;
         case eRegister16.BX:
             BX = b;
             break;
         case eRegister16.CX:
             CX = b;
             break;
         case eRegister16.DX:
             DX = b;
             break;
         case eRegister16.DI:
             DI = b;
             break;
         case eRegister16.SI:
             SI = b;
             break;
         case eRegister16.BP:
             BP = b;
             break;
         case eRegister16.SP:
             SP = b;
             break;
         case eRegister16.DS:
             DS = b;
             break;
         case eRegister16.ES:
             ES = b;
             break;
         case eRegister16.SS:
             SS = b;
             break;
         default:
             throw new InvalidOperationException();
     }
 }
Beispiel #4
0
        void MOV(eRegister16 x, eRegister16 y)
        {
            switch (y)
            {
                case eRegister16.AX:
                    MOV(x, AX);
                    break;
                case eRegister16.BX:
                    MOV(x, BX);
                    break;
                case eRegister16.CX:
                    MOV(x, CX);
                    break;
                case eRegister16.DX:
                    MOV(x, DX);
                    break;
                case eRegister16.DI:
                    MOV(x, DI);
                    break;
                case eRegister16.SI:
                    MOV(x, SI);
                    break;
                case eRegister16.BP:
                    MOV(x, BP);
                    break;
                case eRegister16.SP:
                    MOV(x, SP);
                    break;
                case eRegister16.DS:
                    MOV(x, DS);
                    break;
                case eRegister16.SS:
                    MOV(x, SS);
                    break;
                case eRegister16.ES:
                    MOV(x, ES);
                    break;
                case eRegister16.CS:
                    MOV(x, CS);
                    break;

                default:
                    throw new InvalidOperationException();
            }
        }
Beispiel #5
0
 MemoryAddress GetRamAddress(eRegister16 a, int b)
 {
     switch (a)
     {
         case eRegister16.SI:
             return GetRamAddress(SI + b);
         case eRegister16.DI:
             return GetRamAddress(DI + b);
         case eRegister16.BP:
             return GetRamAddress(BP + b);
         case eRegister16.BX:
             return GetRamAddress(SI + b);
         default:
             throw new InvalidOperationException();
     }
 }
Beispiel #6
0
 MemoryAddress GetRamAddress(eRegister16 a) => GetRamAddress(a, 0);
Beispiel #7
0
 MemoryAddress GetRamAddress(eRegister16 a, eRegister16 b, ushort c)
 {
     switch (a)
     {
         case eRegister16.BX:
             switch (b)
             {
                 case eRegister16.SI:
                     return GetRamAddress(BX + SI + c);
                 case eRegister16.DI:
                     return GetRamAddress(BX + DI + c);
                 default:
                     throw new InvalidOperationException();
             }
         case eRegister16.BP:
             switch (b)
             {
                 case eRegister16.SI:
                     return GetRamAddress(BP + SI + c);
                 case eRegister16.DI:
                     return GetRamAddress(BP + DI + c);
                 default:
                     throw new InvalidOperationException();
             }
         default:
             throw new InvalidOperationException();
     }
 }
Beispiel #8
0
 MemoryAddress GetRamAddress(eRegister16 a, eRegister16 b, byte c) => GetRamAddress(a, b, c);
Beispiel #9
0
 MemoryAddress GetRamAddress(eRegister16 a, eRegister16 b) => GetRamAddress(a, b, 0);