Confirm. I do have a 64-bit machine here. I don't really know how to use it (yet), but I have one. A lot of the time I wish I had the 32-bit machine back, but... time marches on...
I found a third error - essentially the same error...
add rbx, [num1]
Unfortunately, we don't have an "addzx" instruction. My first attempt to "fix" this was simply to use bl instead of rbx here. This "worked" but of course an 8-bit by 8-bit multiply can go to 16 bits, and any overflow beyond 8 bits would be lost. So I used another register...
movzx rcx, byte [num1]
add rbx, rcx
This appears to work, although it isn't well tested. (hmmm... doesn't work well for "num2" = 0! - fix that) Clean up the display a little, add some comments*, and you've got a program. If the pesky user enters "gh" you calculate a nonsense result - okay for a "well behaved user", but some of 'em aren't. You will probably find that you write more code to deal with bogus input than to do the work...
* Over on Stack Overflow a guy named Brendan made the assertion that in assembly language, there are only two possible errors. Either the comment doesn't describe the correct algorithm, or the code doesn't do what the comment said. An interesting viewpoint.
Best,
Frank