Is there a way to debug the program and still be able to 'run' it in the sense that I can input integers into the program but then still view values in registers?
Yes, any debugger worth its salt should be able to let you execute your code instruction by instruction.
For example, Borland's Turbo Debugger
and Open Watcom Watcom Debugger
have the Trace Into
and Step Over
execution options. The two are similar but not identical. The latter executes entire subroutines as part of call subroutine
instructions and the former executes just a single instruction, whether it's call
or not.
See how you can do it in your debugger. Look up its UI and/or documentation.
Also, debuggers commonly let you set breakpoints on instructions of your choice and execute code until a breakpoint is encountered. You can use that too.