 			guard let _ = Register(args[1], writing: true) else {
 				return nil
 			}
-			let add = Instruction.parseString("add " + args[1] + ", $zero, $zero", location: location, verbose: false)![0]
+			let add = Instruction.parseString("add \(args[1]), \(zero.name), \(zero.name)", location: location, verbose: false)![0]
 			add.labels = labels
 			add.comment = comment
 			return [add]

			}
			// Decompose into 2 instructions
			// mult	src1, src2
			let mult = Instruction.parseString("mult " + args[2] + ", " + args[3], location: location, verbose: false)![0]
			mult.labels = labels
			mult.comment = comment
			// mflo	dest
			let mflo = Instruction.parseString("mflo " + args[1], location: location + mult.pcIncrement, verbose: false)![0]
			return [mult, mflo]
		case "div" where argCount != 3, "divu":
			// Catches only the real div instruction, which puts $0/$1 in lo, $0%$1 in hi

			guard let _ = Register(args[1], writing: true), _ = Register(args[2], writing: false) else {
				return nil
			}
			let nor = Instruction.parseString("nor \(args[1]), \(args[2]), \(zero.name)", location: location, verbose: false)![0]
			nor.labels = labels
			nor.comment = comment
			return [nor]
