Скажем, мы имеем следующее:MC68000 сборки умножение
MOVE.L #$1234ABCD,D0
MOVE.L #$45670012,D1
MULS D0,D1
Что будет значение D1? Согласно симулятору mc68000, это будет FFFA146A. Согласно книге, два слова младшего порядка каждого регистра будут умножены, и результат будет сохранен как длинное слово. Следовательно, это будет 0xABCD * 0x0012 = 0xC146A. Согласно этому правилу, D1 должен быть 000C146A. Я замечаю, что значения 146A такие же, как в симуляторе, но откуда берется A, а Fs? Является ли симулятор неправильным?
Спасибо
Это, и факт 0xABCD является отрицательным числом в 16-битном дополнении 2s –
получил его, большое спасибо – jazzybazz
Томас прав. MULS предназначен для умножения на подписку. MULU, возможно, неудивительно, мнемоника для беззнакового умножения и даст ожидаемый результат $ C146A. – sjs