как часть задания Я пытался умножить два 32-битных числа и сохранить результат в 64-битном месте. Однако мой результат неверен. пожалуйста, помогите мне понять, почемурасширенное умножение с nasm
[org 0x0100]
jmp start
multiplicand: dd 100122,0
multiplier: dd 66015
result: dd 0,0
start:
initialize: mov cl,16
mov bl,1
checkbit: test bl,[multiplier]
jz decrement
multiply: mov ax, [multiplicand]
add [result],ax
mov ax, [multiplicand+2]
adc [result+2], ax
mov ax, [multiplicand+4]
adc [result+4], ax
decrement: shl bl,1
shl [multiplicand],1
rcl [multiplicand+2],1
rcl [multiplicand+4],1
dec cl
jnz checkbit
mov ax, 0x4c00
int 0x21
ответ в Afd отладчик F6B3A6 (16587802 IN DEC), тогда как она должна быть 189F5C9A6 (6609553830 в десятичную). Я прошел через отладчик, но не смог найти что-то не так с кодом.
Не может просто использовать 32-битный х 32-битный = 64-бит (I) Мультиэкран Вы не используете это на процессоре pre-i80386, не так ли? –
его требование к курсу для работы на 16 бит на данный момент, 32 бит покрывается в последних уроках (создание из нижнего подхода, я знаю его устаревшее) –