Example #1
0
def SUB(register):
    if not validate.validate_reg(register):
        print "Invalid Register: %s" % register
        exit(1)
    a = int(registers.reg["A"], 16)
    if register == "M":
        b = extras.getPair('H', 'L')
        if extras.chkMemory(b):
            b = int(registers.reg[register], 16)
        else:
            print " Invalid Memory:", b
            exit(1)
    else:
        b = int(registers.reg[register], 16)
    t = a - b
    a = int(extras.getLowerNibble(format(a, '0x')), 2)
    b = int(extras.getLowerNibble(format(b, '0x')), 2)
    if not validate.validate_data(t):
        print "\n////-----UnderFlow Detected----////\n"
        t = format(t, "02x")
        t = set_flags.setCarry(t)
        set_flags.setFlags(a, b, t, isAbnormalFlow=True)
        tmp = {"A": t[1:]}
    else:
        t = format(t, "02x")
        set_flags.setFlags(a, b, t)
        tmp = {"A": t}
        set_flags.setFlags(a, b, t)
    registers.reg.update(tmp)
Example #2
0
def JMP(addr):
    if extras.chkLable(addr):
        return registers.label[addr]
    elif extras.chkMemory(addr):
        return addr
    else:
        print 'pointing to invalid memory:', addr
        exit(1)
Example #3
0
def prnt(addr):
    try:
        if validate.validate_reg(addr):
            print registers.reg[addr]

        elif extras.chkMemory(addr):
            print registers.memory[addr]

        else:
            print " Invalid Memory or Register!!"
    except:
        print "invalid command type help for list of commands!!"
Example #4
0
def INR(register):
    if validate.validate_reg(register):
        if register == 'M':
            a = extras.getPair('H', 'L')
            if extras.chkMemory(a):
                b = int(registers.memory[a], 16) + 1
                if b > 255:
                    b = 0
                registers.memory[a] = format(b, '0x')
            else:
                print "invalid memory:", a
                exit(1)
        else:
            b = int(registers.reg[register], 16) + 1
            if b > 255:
                b = 0
            registers.reg[register] = format(b, '0x')
Example #5
0
def MOV(reg1, reg2):
    if not validate.validate_reg(reg1):
        print "Invalid Register: %s" % reg1
        exit(1)
    if not validate.validate_reg(reg2):
        print "Invalid Register: %s" % reg2
        exit(1)
    if reg1 == 'M':
        a = extras.getPair('H', 'L')
        if extras.chkMemory(a):
            registers.memory[a] = registers.reg[reg2]
        else:
            print " Invalid Memory:", a

    elif reg2 == 'M':
        a = extras.getPair('H', 'L')
        registers.reg[reg1] = registers.memory[a]
    else:
        registers.reg[reg1] = registers.reg[reg2]
Example #6
0
def LHLD(addr):
    if extras.chkMemory(addr) and extras.chkMemory(str(int(addr) + 1)):
        registers.reg['L'] = registers.memory[addr]
        registers.reg['H'] = registers.memory[str(int(addr) + 1)]
    else:
        print "Pointing Invalid Memory:", addr