умножение bx и cx [ASM 8086]

Я хотел бы умножить bx и cx,но это не работает, как я использую ax

mov ax,0AFh
mov cx,0AFh
mul cx

моя попытка к умножению bx и cx

mov bx,Ah
mov cx,5h
mul cx
"???????"

Для умножения bx и cx я думаю, что я должен использовать временный регистр. Кто-нибудь может показать мне, как это сделать?

1 ответ

  1. Дайте это попробовать:

    mov bx, 0Ah
    mov cx, 5h
    push ax
    mov ax, bx
    mul cx
    mov bx, ax
    pop ax
    ;at this point, ax is unchanged, result is in bx.
    

    Или, если вы хотите быть фантазии, попробуйте это:

    mov bx, 0Ah
    mov cx, 5h
    xchg ax, bx
    mul cx
    xchg ax, bx
    ;at this point, ax is unchanged, result is in bx.
    

    Однако умножение на 16-битный регистр оставит свои результаты dx:ax. Поскольку ваш пример умножает небольшие числа, это не имеет значения, так как весь результат будет помещаться в 16-битный регистр. Однако имейте в виду, что ваш dxреестр будет очищен этими фрагментами кода, и если вы умножите большие числа в будущем, обязательно ищите результат dx:bx.