def load_button(self, w): tb = self.textEditor.get_buffer() string = tb.get_text(tb.get_start_iter(), tb.get_end_iter(), False) asm = Assembler() try: asm.Lex(string) try: addr = int(self.loadaddr.get_text(), 16) except: addr = 0 asm.Parse(addr) for byte_list in asm.bytes_list: ad = byte_list["address"] i = 0 for byte in byte_list["bytes"]: ram.Write(ad + i, byte) i += 1 strlbl = "" for lbl in asm.labels: strlbl += "\n" + lbl + " : " + hex(asm.labels[lbl]) self.lblLabel.set_text(strlbl) self.Clear() print("Assembled and loaded succesfully") return True except Exception as ex: self.lblLabel.set_text("") self.Clear() print("Assembling Error: ") print("=======") print(ex) print("at line: \n\t" + asm.line + "\nline no.: " + str(asm.line_no)) return False
def Export(self, filename, withAsm=False): fp = open(filename, 'w') tb = self.textEditor.get_buffer() string = tb.get_text(tb.get_start_iter(), tb.get_end_iter(), False) asm = Assembler() try: asm.Lex(string) try: addr = int(self.loadaddr.get_text(), 16) except: addr = 0 asm.Parse(addr) for byte_list in asm.bytes_list: ad = byte_list["address"] i = 0 if withAsm: fp.write(byte_list["asm"] + "\t;") else: fp.write('{:04x}'.format(ad) + ": ") for byte in byte_list["bytes"]: fp.write('{:02x}'.format(byte) + " ") i += 1 if not withAsm: fp.write("\t\t;" + byte_list["asm"]) fp.write("\n") strlbl = "" for lbl in asm.labels: strlbl += "\n" + lbl + " : " + hex(asm.labels[lbl]) self.lblLabel.set_text(strlbl) self.Clear() print("Assembled and exported succesfully") except Exception as ex: self.lblLabel.set_text("") self.Clear() print("Assembling Error: ") print("=======") print(ex) print("at line: \n\t" + asm.line + "\nline no.: " + str(asm.line_no)) fp.close()
# print("\n") # ppi.Show() ram.ShowRange(parser.labels["TABLE"], parser.labels["TABLE"]+0x63) alu.Show() from Assembler import Assembler parser = Assembler() try: #main() filep = open("samples/testlbl.asm", "r") asm = filep.read() filep.close() parser.Lex(asm) parser.Parse() #filep = open("random.bin", "w") for bytes in parser.bytes_list: print(hex(bytes["address"])) for byte in bytes["bytes"]: print(hex(byte)) # filep.write('{0:02x}'.format(byte) + "\n") #filep.close() #main() except (KeyboardInterrupt, SystemExit): print("") except Exception as ex: