diff --git a/src/simudator/gui/gui.py b/src/simudator/gui/gui.py
index baec07a7241f9d018a6a382add85a8572af63546..9910e33cd463cf6db9b11446f75fa3c772a6f07f 100644
--- a/src/simudator/gui/gui.py
+++ b/src/simudator/gui/gui.py
@@ -310,14 +310,14 @@ class GUI(QMainWindow):
         backward_arrow_icon = self.style().standardIcon(QStyle.SP_MediaSeekBackward)
         self.undo_asm_action = QAction(backward_arrow_icon, "Undo Asm", self)
         self.undo_asm_action.setStatusTip("Undo the last assembler instruction")
-        self.undo_asm_action.triggered.connect(self.undoToolBarButtonClick)
+        self.undo_asm_action.triggered.connect(self.undoAsmToolBarButtonClick)
         toolbar.addAction(self.undo_asm_action)
 
         # Add step button on toolbar
         forward_arrow_icon = self.style().standardIcon(QStyle.SP_MediaSeekForward)
         self.step_asm_action = QAction(forward_arrow_icon, "Step Asm", self)
         self.step_asm_action.setStatusTip("Run one assembler instruction")
-        self.step_asm_action.triggered.connect(self.stepToolBarButtonClick)
+        self.step_asm_action.triggered.connect(self.stepAsmToolBarButtonClick)
         toolbar.addAction(self.step_asm_action)
 
         # Add box for jump value
@@ -502,7 +502,7 @@ class GUI(QMainWindow):
         steps = self.jump_value_box.value()
         self.cpu_running = True
         self.setDisabledWhenRunning(True)
-        simulation_thread = RunThread(self.cpu, self.cpu_tick_signal, self.update_delay, False, steps)
+        simulation_thread = RunThread(self.cpu, self.cpu_tick_signal, self.update_delay, False, False, steps)
         self.threadpool.start(simulation_thread)
 
     def stepAsmToolBarButtonClick(self):
@@ -517,8 +517,7 @@ class GUI(QMainWindow):
         steps = self.asm_jump_value_box.value()
         self.cpu_running = True
         self.setDisabledWhenRunning(True)
-        self.cpu.unstop()
-        simultaion_thread = RunThread(self.cpu, self.halted_signal, False, steps)
+        simultaion_thread = RunThread(self.cpu, self.cpu_tick_signal, self.update_delay, False, True, steps)
         self.threadpool.start(simultaion_thread)
         self.updateCpuListeners()
 
diff --git a/src/simudator/gui/run_continuously_thread.py b/src/simudator/gui/run_continuously_thread.py
index 1f1ef5beba2c2f1c38d27526480789ef2de62b93..900d632c2687de2a2329b6fa589752446900123f 100644
--- a/src/simudator/gui/run_continuously_thread.py
+++ b/src/simudator/gui/run_continuously_thread.py
@@ -8,40 +8,54 @@ class RunThread(QRunnable):
     a seperate thread. This allows the user to interact with the GUI while the 
     simulation is running.
 
-    After each cpu tick, this thread will emit to its given QT signal so that
+    After each CPU tick, this thread will emit to its given QT signal so that
     the GUI can update itself and possibly inform the user of when the execution 
     has halted.
     """
 
-    def __init__(self, cpu, signal, delay: float, run_continuously=True, steps=0):
+    def __init__(self, cpu, signal, delay: float, run_continuously=True, 
+                 is_asm_instruciton=False, steps=0):
         super().__init__()
         self.cpu = cpu
         self.signal = signal
         self.run_continuously = run_continuously
         self.steps = steps
         self.delay = delay
+        self.is_asm_instruciton = is_asm_instruciton
 
     def run(self):
-        if self.run_continuously:
-            self.cpu.unstop()
-            while not self.cpu.is_stopped:
-                self.cpu.do_tick()
-                self.signal.emit(1)
-                time.sleep(self.delay)
+        if self.is_asm_instruciton:
 
-        else:
-            for _ in range(self.steps):
+            while self.steps > 0:
                 self.cpu.do_tick()
+
+                # We only care about asm instructions
+                if self.cpu.is_new_instruction():
+                    self.steps -= 1
+
                 self.signal.emit(1)
                 time.sleep(self.delay)
 
                 if self.cpu.is_stopped:
                     break
 
-        # Signal end of execution as having run 0 ticks
-        self.signal.emit(0)
-    
-    def run_asm(self):
-        self.cpu.run_asm(self.steps)
+        else:
+            if self.run_continuously:
+                self.cpu.unstop()
+                while not self.cpu.is_stopped:
+                    self.cpu.do_tick()
+                    self.signal.emit(1)
+                    time.sleep(self.delay)
+
+            else:
+                for _ in range(self.steps):
+                    self.cpu.do_tick()
+                    self.signal.emit(1)
+                    time.sleep(self.delay)
 
+                    if self.cpu.is_stopped:
+                        break
+
+
+        # Signal end of execution as having run 0 ticks
         self.signal.emit(0)