When the program is reset, the current swing worker thread is terminated to avoid the unintentional creation of another thread during the reset process; this inadvertently causes two threads to be running at the same time. When Execute Program is pressed, this only creates a new swing worker thread if the reference to it is null to avoid duplicates.
Added pop up error message if user attempts to excute assembly file without having selected one first. This prevents unpredictable behaviour, since the swing worker thread isn't created unless a file has been chosen.