Ok, so after looking at someone else's solution that was posted on GitHub and with a help of a friend, I was able to understand their methodology/algorithm. They did what I basically described in the first paragraph. Yes, I understand it's the brute force way, but I cannot think of any other method.
Secondly, I think you're assuming that I know multiple kinds of way to multiply large numbers. I don't. I was simply taught in elementary school the vertical method. Multiply the bottom row to the top row, one number at a time from right to left. Then each time you finish one number, you shift over one unit space. And at the end, you add it all together.
Anyways, after understanding this solution, (
https://github.com/dnivanthaka/nand2tetris/blob/master/04/mult/Mult.asm) I realized that they decremented because your assembly language doesn't offer the feature to check if it's equal to some value. So they decremented because you can check if it's 0. The reason I couldn't figure this out because I failed to remember the semantics/rules that were offered in this assembly language, and I couldn't piece it together.
Yes, I understood and worked through the examples given in the video/text, but in my case, it didn't transfer over to this problem of multiplication.
I would like to know the optimal solution if this one isn't the one you were trying to tell me about.