2017-01-30 41 views
1

我正在處理程序集8086中的任務,我得到了錯誤的答案;誰能猜到我的問題是什麼?我要乘一個字字節....這裏是我的代碼:我得到錯誤的答案在單詞乘以字節在程序集8086

STSEG SEGMENT 

    DB 64 DUP(?) 

STSEG ENDS 
;-------- 

DTSEG SEGMENT 

    D1 DW 6454H 
    D2 DB 44H 
    REPLY DW 2 DUP(?) 

DTSEG ENDS 
;-------- 

CDSEG SEGMENT 

    MAIN PROC FAR 
     ASSUME DS:DTSEG, SS:STSEG, CS:CDSEG 

     MOV AX,DTSEG 
     MOV DS,AX 
     MOV AX,0 

     MOV AL,D2 
     MOV BX,D1 
     MUL BL 
     MOV REPLY,AX 
     MOV REPLY+2,DX 

    MAIN ENDP 
    CDSEG ENDS 
+2

'MUL bl' - >導致'ax'。請[閱讀指令參考](http://x86.renejeschke.de/html/file_module_x86_id_210.html)。 –

+0

您的問題描述似乎也是一個問題。如果你是「把一個字乘以一個字節」,你通常至少需要一個字來存儲結果。因此,乘以一個字節會產生一個字,乘以一個字會產生一個雙字。 –

回答

1

作爲替代何塞的答案,並表明

  • 清除寄存器採用xor reg, reg
  • 你可以直接從內存中繁殖,不需要額外的寄存器做得最好

這樣的:

xor ax, ax 
mov al, D2 
mul D1   <-- DX:AX = AX * D1 
mov REPLY, ax 
mov REPLY+2, dx 
1

你必須BX乘:

MOV AX,0 
    MOV AL,D2 
    MOV BX,D1 
    MUL BX   ;◄■■ BX*AX = DX:AX. 
    MOV REPLY,AX 
    MOV REPLY+2,DX 
+1

OOOOPPPSSSS,這是一個愚蠢的錯誤,THNKS ... –

相關問題