Кажется, я вижу, откуда ножки растут.
Попробуйте сделать тест, в котором команда, предшествующая делению, с простой адресацией типа MOV Rx,Rx:
- - - Добавлено - - -Код:0776 CLR R0
1000 MOV #2,R3
1004 MOV R3,R3
1006 MUL R3,R7
1010 INC R0
Хотя, нет, не надо делать.
- - - Добавлено - - -
В общем, нашел ошибку.
Блок, который призван идентифицировать двухадресную команду ((код & 0x7FFF)> 0x0FFF), у которой в качестве Rd указан R7, имеет ошибку или особенность следующего плана.
Триггер U577, запоминающий состояние IX1 обновляется при выборке каждой микрокоманды.
А IR_STB выдается только при выборке первой микрокоманды инструкции.
Поэтому в во время первой микрокоманды в инструкции флаг IX1 устанавливается правильно, а уже следующая микрокоманда этот флаг обнуляет.
Таким образом, принять решение о том, что инструкция двухоперандная влияющая на R7 можно только в первой микрокоманде инструкции. Возможно, это где-то задействовано (в двухоперандных командах, до которых я не дошел), но в случае с MUL не работает.
https://pic.maxiol.com/images2/16069...1951043.01.png
- - - Добавлено - - -
https://pic.maxiol.com/images2/16069...1951043.01.png

