0

这就是我到目前为止所得到的。这是32位乘法是32位。我想改进这段代码并计算 x^y。如果您给我一个示例代码,我将不胜感激。此代码使用子程序

例如)4^3=64

  ORG 10
LA, LDA AH
    SNA //negative skip
    BUN LB // if A >= 0
    CMA
    STA AH
    LDA AL
    CMA
    INC
    STA AL
    CLA
    CIL
    ADD AH
    STA AH
    ISZ C_sign


// if A >= 0
LB, LDA BH
    SNA
    BUN L0 // if B >= 0
    CMA
    STA BH
    LDA BL
    CMA
    INC
    STA BL
    CLA
    CLE
    ADD BH
    STA BH
    ISZ C_sign

L0, CLE
    LDA BH   /  load
    CIR     / 
    STA BH   / 
    LDA BL
    CIR
    STA BL
    SZE     
    BUN L1  / 
    BUN L2  / 

/ if E == 1:
L1, LDA CL2 / 
    ADD AL  / 
    STA CL2 / 
    CLA     / 
    CIL     / 
    ADD CL  / 
    ADD AH  / 
    STA CL  / 
    CLA
    CIL
    ADD CH
    ADD AH2
    STA CH
    CLE     / 

L2, LDA AL  / A  load
    CIL     / A *= 2
    STA AL  / A wo hozon
    LDA AH  / 
    CIL     / AH = 2*AH + E
    STA AH  / 
    LDA AH2
    CIL
    STA AH2
    CLE

    ISZ K   / 
    BUN L0  / 
LC, LDA C_sign
    CIR
    SZE
    BUN C_nega
FIN,CLA
    STA AH2
    STA C_sign
    STA CL2
    HLT

C_nega,LDA CH
    CMA
    STA CH
    LDA CL
    CMA
    INC
    STA CL
    CLA
    CIL
    ADD CH
    STA CH
    BUN FIN

AH2, HEX 0 / high of A
AH, HEX FFFC / int of A
AL, HEX 0 / decimal of A

BH, HEX FFFC / int of B
BL, HEX 0 / decimal of B

C_sign, HEX 0 /if C_sign % 2 == 1, C is negative
CH, HEX 0 / int of A*B
CL, HEX 0 / decimal of A*B
CL2, HEX 0 / decimal of A*B


K,  DEC -32
    END
4

0 回答 0