MOV AX,0012h
MOV BX,0000h
MOV CX,0033h
MOV DX,0000h
MOV [100h],AX
MOV [102h],BX
MOV [104h],CX
MOV [106h],DX
MOV SI,40h
tekrar:
MOV DI,AX ;sonucu indeks kaydeder
AND DI,01h
XOR DI,01h
JZ topla_kaydir
devam:
RCR DX,1
RCR CX,1
RCR BX,1
RCR AX,1
SHR [100h],1
SHR [102h],1
DEC SI
CMP SI,0
JNZ tekrar
JMP son
topla_kaydir:
ADD DX,[104h]
ADC CX,[104h]
JMP devam
這是我的代碼部分。我想乘兩個32位數字而不使用mul
操作和擴展寄存器。我無法得到正確的結果。
'我無法得到正確的結果。什麼輸入數據導致不正確的結果?結果應該是什麼? –
我想手動乘以兩個32位數字,第一個數字是0000 0012,第二個數字是0000 0033,結果應該是0396(64位) –
您是否嘗試過使用調試器來檢查程序寄存器? ADC CX,[104h]不應該是ADC CX,[106h]'(假設你的邏輯通常是正確的,這是可疑的)? – lurker