2017-09-16 135 views
0

以下是彙編語言,用於乘以兩個16位數字。使用8085微處理器的16位乘法

LHLD 0002H ;DATA 1 
    SPHL 
    LHLD 0004H ;DATA 2 
    XCHG 
    LXI H,0000H 
    LXI B,0000H 
NEXT: 
    DAD SP 
    JNC LOOP 
    INX B 
LOOP: 
    DCX D 
    MOV A,E 
    ORA D 
    JNZ NEXT 
    SHLD 0006H ;LSB 
    MOV L,C 
    MOV H,B 
    SHLD 0008H ;MSB 
    HLT 

我不明白的指令ORA D。爲什麼ORing在這裏完成?請任何人都可以解釋它。謝謝!

回答

0

ORA D被用作測試指令。它將累加器與D寄存器進行邏輯或運算。如果結果爲零,則退出循環。否則,在它之後的JNZ指令重新進入循環。

D和E寄存器爲循環數保持倒計時。總體邏輯對我來說很難遵循:自從我使用了8085以來已經有30多年了,所以我需要look up most of the instructions來解開邏輯。但希望這可以回答你的問題。