Ответ: Вы батенька вообще не верно с умножителем работаете 1. Знак & перед MACS и OP2 ставить необязательно (проверял с ним и без него, и вообще данные в регистры умножителя заносятся верно).
2. В самом начале приведенного куска программы в стекпоинтер заносится адрес заранее инициализированной метки dh, которая указывает на массив данных используемых в умножении. После команды POP указатель стека спускается к следующему элементу массива.
3.Значения регистров я приводил в выдержке из программы в одной строчке с mov R№,MACS. Значение второго опранда приводил на строчку ниже.
4. Гарантировано, точно.