Например, код должен в принципе сделать это: (1 * 10) + (2 * 10) + (3 * 10) + (4 * 10) = итогоКак получить произведение умножения в сборке?
xor bx, bx
mov bx, 1
loopHere:
mov al, bx
mov bl, 10
mul bl
; add total, <product of bx and 10>
inc bx
cmp bx, 4
jle loopHere
;some code to print the total
Я прочитал, что продукт проходит к AX. Однако я не знаю, как получить продукт в AX. Сначала я попробовал печатать
add total, ax
, потому что это была первая очевидная вещь, что пришло мне в голову, но, видимо, я не прав. : P Обнаружена ошибка, указывающая «неверные операнды команд» в командной строке (я использую masm32). Пожалуйста, помогите мне понять. Я просто новичок в сборке.
Кроме того, если есть более эффективный способ сделать код, я бы с радостью принял ваш совет. :) Спасибо.
У меня есть следующий вопрос, потому что я забыл, что mov al, bx также имеет ошибку, почему это ошибка? Есть ли способ обойти это? – wema
'bx' - 16 бит, а' al' - 8 бит. Ширина обоих операндов должна соответствовать, или она не будет знать, сколько данных на самом деле нужно переместить. –