2017-09-16 10 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 레지스터와 논리적으로 OR 연산합니다. 결과가 0이면 루프를 종료합니다. 그렇지 않은 경우는 JNZ 명령이 루프에 다시 들어갑니다.

D 및 E 레지스터는 루프 수에 대한 카운트 다운을 유지합니다. 전반적인 논리는 따라갈 수 없습니다. 8085를 사용한 이후로 30 년이 넘었으므로 논리를 풀려면 look up most of the instructions해야합니다. 그러나 잘하면이 질문에 대한 답변.