您的位置:控制工程论坛网论坛 » 软件与程序 » MCS-51单片机实用子程序库 乘除法运算

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

MCS-51单片机实用子程序库 乘除法运算

xilinxue  发表于 2009/2/11 13:12:16      1651 查看 10 回复  [上一主题]  [下一主题]

手机阅读

;单字节无符号数乘法程序 (R3R4*R7)=(R2R3R4)
;入口: R3,R4,R7
;占用资源: ACC,B
;堆栈需求: 2字节
;出口: R2,R3,R4
NMUL21 : MOV A,R4
MOV B,R7
MUL AB
MOV R4,A
MOV A,B
XCH A,R3
MOV B,R7
MUL AB
ADD A,R3
MOV R3,A
CLR A
ADDC A,B
MOV R2,A
CLR OV
RET
1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:09:11


    ;单字节无符号数乘法程序 (R2R3R4*R7)=(R5R2R3R4)
    ;入口: R2,R3,R4,R6,R7
    ;占用资源: ACC,B
    ;堆栈需求: 2字节
    ;出口: R5,R2,R3,R4
    NMUL31 : MOV A,R4
    MOV B,R7
    MUL AB
    MOV R4,A
    MOV A,B
    XCH A,R3
    MOV B,R7
    MUL AB
    ADD A,R3
    MOV R3,A
    CLR A
    ADDC A,B
    XCH A,R2
    MOV B,R7
    MUL AB
    ADD A,R2
    MOV R2,A
    CLR A
    ADDC A,B
    MOV R5,A
    CLR OV
    RET
    2楼 回复本楼

    引用 xilinxue 2009/2/11 13:09:11 发表于2楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:09:31

    ;单字节无符号数乘法程序 (R5R2R3R4*R7)=(R7R5R2R3R4)
    ;入口: R5,R2,R3,R4,R7
    ;占用资源: ACC,B
    ;堆栈需求: 2字节
    ;出口: R7,R5,R2,R3,R4
    NMUL41 : MOV A,R4
    MOV B,R7
    MUL AB
    MOV R4,A
    MOV A,B
    XCH A,R3
    MOV B,R7
    MUL AB
    ADD A,R3
    MOV R3,A
    CLR A
    ADDC A,B
    XCH A,R2
    MOV B,R7
    MUL AB
    ADD A,R2
    MOV R2,A
    CLR A
    ADDC A,B
    XCH A,R5
    MOV B,R7
    MUL AB
    ADD A,R5
    MOV R5,A
    CLR A
    ADDC A,B
    MOV R7,A
    CLR OV
    RET
    3楼 回复本楼

    引用 xilinxue 2009/2/11 13:09:31 发表于3楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:09:51


    ;双字节无符号数乘法程序 (R3R4*R6R7)=(R5R2R3R4)
    ;入口: R3,R4,R6,R7
    ;占用资源: ACC,B
    ;堆栈需求: 2字节
    ;出口: R5,R2,R3,R4
    NMUL22 : MOV A,R4
    MOV B,R7
    MUL AB
    XCH A,R4
    MOV R5,B
    MOV B,R6
    MUL AB
    ADD A,R5
    MOV R5,A
    CLR A
    ADDC A,B
    MOV R2,A
    MOV A,R3
    MOV B,R7
    MUL AB
    ADD A,R5
    MOV R5,A
    MOV A,B
    ADDC A,R2
    MOV R2,A
    CLR A
    ADDC A,#00H
    XCH A,R3
    MOV B,R6
    MUL AB
    ADD A,R2
    MOV R2,A
    MOV A,B
    ADDC A,R3
    XCH A,R5
    MOV R3,A
    CLR OV
    RET
    4楼 回复本楼

    引用 xilinxue 2009/2/11 13:09:51 发表于4楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:10:13


    ;双字节无符号数乘法程序 (R2R3R4*R6R7)=(R1R5R2R3R4)
    ;入口: R2,R3,R4,R6,R7
    ;占用资源: ACC,B
    ;堆栈需求: 2字节
    ;出口: R1,R5,R2,R3,R4
    NMUL32 : MOV A,R4
    MOV B,R7
    MUL AB
    XCH A,R4
    MOV R5,B
    MOV B,R6
    MUL AB
    ADD A,R5
    MOV R5,A
    CLR A
    ADDC A,B
    MOV R1,A
    MOV A,R3
    MOV B,R7
    MUL AB
    ADD A,R5
    MOV R5,A
    MOV A,B
    ADDC A,R1
    MOV R1,A
    CLR A
    ADDC A,#00H
    XCH A,R3
    MOV B,R6
    MUL AB
    ADD A,R1
    MOV R1,A
    MOV A,B
    ADDC A,R3
    XCH A,R5
    MOV R3,A
    MOV A,R2
    MOV B,R7
    MUL AB
    ADD A,R1
    MOV R1,A
    MOV A,B
    ADDC A,R5
    MOV R5,A
    CLR A
    ADDC A,#00H
    XCH A,R2
    MOV B,R6
    MUL AB
    ADD A,R5
    MOV R5,A
    MOV A,B
    ADDC A,R2
    XCH A,R1
    MOV R2,A
    CLR OV
    RET
    5楼 回复本楼

    引用 xilinxue 2009/2/11 13:10:13 发表于5楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:10:32


    ;N字节无符号数乘法程序 ([R0]*[R1])=([R0])
    ;入口: R0,R1,M,N
    ;占用资源: ACC,B,R2,R5,R6,R7,NCNT
    ;堆栈需求: 2字节
    ;出口: R0
    NMULMN : MOV A,M
    ADD A,R0
    MOV R5,A
    XCH A,R1
    XCH A,R5
    ADD A,N
    XCH A,R0
    MOV R6,A
    MOV B,M
    MOV NCNT,B
    NMLMN1 : DEC R0
    DEC R1
    CLR A
    XCH A,@R1
    MOV @R0,A
    DJNZ NCNT,NMLMN1
    MOV NCNT,B
    NMLMN2 : CLR A
    XCH A,@R0
    MOV R2,A
    MOV A,R6
    MOV R0,A
    MOV A,R5
    MOV R1,A
    MOV R7,N
    CLR C
    NMLMN3 : MOV A,R2
    MOV B,@R1
    INC R1
    MUL AB
    ADDC A,@R0
    MOV @R0,A
    INC R0
    MOV A,B
    ADDC A,@R0
    MOV @R0,A
    DJNZ R7,NMLMN3
    INC R0
    INC R6
    DJNZ NCNT,NMLMN2
    MOV A,R0
    CLR C
    SUBB A,M
    SUBB A,N
    MOV R0,A
    RET
    6楼 回复本楼

    引用 xilinxue 2009/2/11 13:10:32 发表于6楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:10:49


    ;单字节无符号除法程序 (R2R3R4/R7)=(R2)R3R4 余数R7
    ;入口: R2,R3,R4,R7
    ;占用资源: ACC,B,F0
    ;堆栈需求: 3字节
    ;出口: (R2),R3,R4,R7,OV
    C_NDIV_3_1_HANDLE: MOV A,R2
    MOV B,R7
    DIV AB
    PUSH A
    MOV R2,B
    MOV B,#10H
    NDV311 : CLR C
    MOV A,R4
    RLC A
    MOV R4,A
    MOV A,R3
    RLC A
    MOV R3,A
    MOV A,R2
    RLC A
    MOV R2,A
    MOV F0,C
    CLR C
    SUBB A,R7
    JB F0,NDV312
    JC NDV313
    NDV312 : MOV R2,A
    INC R4
    NDV313 : DJNZ B,NDV311
    POP A
    CLR OV
    JZ NDV314
    SETB OV
    NDV314 : XCH A,R2
    MOV R7,A
    RET
    7楼 回复本楼

    引用 xilinxue 2009/2/11 13:10:49 发表于7楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:11:08


    ;单字节无符号除法程序 (R5R2R3R4/R7)=(R5)R2R3R4 余数R7
    ;入口: R2,R3,R4,R7
    ;占用资源: ACC,B,F0
    ;堆栈需求: 3字节
    ;出口: (R5),R2,R3,R4,R7,OV
    NDIV41 : MOV A,R5
    MOV B,R7
    DIV AB
    PUSH A
    MOV R5,B
    MOV B,#18H
    NDV411 : CLR C
    MOV A,R4
    RLC A
    MOV R4,A
    MOV A,R3
    RLC A
    MOV R3,A
    MOV A,R2
    RLC A
    MOV R2,A
    MOV A,R5
    RLC A
    MOV R5,A
    MOV F0,C
    CLR C
    SUBB A,R7
    JB F0,NDV412
    JC NDV413
    NDV412 : MOV R5,A
    INC R4
    NDV413 : DJNZ B,NDV411
    POP A
    CLR OV
    JZ NDV414
    SETB OV
    NDV414 : XCH A,R5
    MOV R7,A
    RET
    8楼 回复本楼

    引用 xilinxue 2009/2/11 13:11:08 发表于8楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:11:26


    ;双字节无符号除法程序 (R5R2R3R4/R6R7)=(R2)R3R4 余数R6R7
    ;入口: R5,R2,R3,R4,R6,R7
    ;占用资源: ACC,B,F0
    ;堆栈需求: 4字节
    ;出口: (R2),R3,R4,R6,R7,OV
    NDIV42 : MOV A,R1
    PUSH A
    MOV B,#00H
    NDV421 : MOV A,R2
    CLR C
    SUBB A,R7
    MOV R1,A
    MOV A,R5
    SUBB A,R6
    JC NDV422
    MOV R5,A
    MOV A,R1
    MOV R2,A
    INC B
    SJMP NDV421
    NDV422 : PUSH B
    MOV B,#10H
    NDV423 : CLR C
    MOV A,R4
    RLC A
    MOV R4,A
    MOV A,R3
    RLC A
    MOV R3,A
    MOV A,R2
    RLC A
    MOV R2,A
    XCH A,R5
    RLC A
    XCH A,R5
    MOV F0,C
    CLR C
    SUBB A,R7
    MOV R1,A
    MOV A,R5
    SUBB A,R6
    JB F0,NCV424
    JC NDV425
    NCV424 : MOV R5,A
    MOV A,R1
    MOV R2,A
    INC R4
    NDV425 : DJNZ B,NDV423
    POP A
    CLR OV
    JNZ NDV426
    SETB OV
    NDV426 : XCH A,R2
    MOV R7,A
    MOV A,R5
    MOV R6,A
    POP A
    MOV R1,A
    RET
    9楼 回复本楼

    引用 xilinxue 2009/2/11 13:11:26 发表于9楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:11:45


    ;N字节无符号除法程序(组合) ([R0]/[R1])=([R0])
    ;入口: R0,R1,M,N
    ;占用资源: ACC,R2,R3,R4,R5,R7,NCNT,F0,NADDN,NSUBBN,NRLCN
    ;堆栈需求: 4字节
    ;出口: R0
    ;NDIVMN : MOV A,M
    CLR C
    SUBB A,N
    MOV NCNT,A
    ADD A,R0
    MOV R4,A
    XCH A,R0
    MOV R3,A
    MOV A,R1
    MOV R5,A
    MOV R2,#00H
    NDVMN1 : MOV R7,N
    LCALL NSUBN
    MOV A,R5
    MOV R1,A
    JC NDVMN2
    INC R2
    SJMP NDVMN1
    NDVMN2 : MOV R7,N
    LCALL NADDN
    MOV A,NCNT
    SWAP A
    RR A
    MOV NCNT,A
    NDVMN3 : MOV A,R3
    MOV R0,A
    MOV R7,M
    LCALL NRLCN
    MOV F0,C
    MOV A,R4
    MOV R0,A
    MOV A,R5
    MOV R1,A
    MOV R7,N
    LCALL NSUBN
    JB F0,NDVMN4
    JC NDVMN5
    NDVMN4 : MOV A,R3
    MOV R0,A
    INC @R0
    SJMP NDVMN6
    NDVMN5 : MOV A,R5
    MOV R1,A
    MOV R7,N
    LCALL NADDN
    NDVMN6 : DJNZ NCNT,NDVMN3
    MOV A,R4
    MOV R1,A
    MOV A,R2
    MOV @R1,A
    MOV A,R3
    MOV R0,A
    RET
    10楼 回复本楼

    引用 xilinxue 2009/2/11 13:11:45 发表于10楼的内容

  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2009/2/11 13:12:16


    ;N字节无符号除法程序(集成) ([R0]/R[1])=([R0])
    ;入口: R0,R1,M,N
    ;占用资源: ACC,R2,R3,R4,R5,R7,F0
    ;堆栈需求: 2字节
    ;出口: R0
    NDIVMN : MOV A,M
    CLR C
    SUBB A,N
    MOV B,A
    ADD A,R0
    MOV R4,A
    XCH A,R0
    MOV R3,A
    MOV A,R1
    MOV R5,A
    MOV R2,#00H
    NDVMN1 : MOV R7,N
    CLR C
    NDVMN2 : MOV A,@R0
    SUBB A,@R1
    MOV @R0,A
    INC R0
    INC R1
    DJNZ R7,NDVMN2
    MOV A,R4
    MOV R0,A
    MOV A,R5
    MOV R1,A
    JC NDVMN3
    INC R2
    SJMP NDVMN1
    NDVMN3 : MOV R7,N
    CLR C
    NDVMN4 : MOV A,@R0
    ADDC A,@R1
    MOV @R0,A
    INC R0
    INC R1
    DJNZ R7,NDVMN4
    MOV A,#08H
    MUL AB
    MOV B,A
    NDVMN5 : MOV A,R3
    MOV R0,A
    MOV R7,M
    CLR C
    NDVMN6 : MOV A,@R0
    RLC A
    MOV @R0,A
    INC R0
    DJNZ R7,NDVMN6
    MOV F0,C
    MOV A,R4
    MOV R0,A
    MOV A,R5
    MOV R1,A
    MOV R7,N
    CLR C
    NDVMN7 : MOV A,@R0
    SUBB A,@R1
    MOV @R0,A
    INC R0
    INC R1
    DJNZ R7,NDVMN7
    JB F0,NDVMNB
    JC NDVMN8
    NDVMNB : MOV A,R3
    MOV R0,A
    INC @R0
    SJMP NDVMNA
    NDVMN8 : MOV R7,N
    MOV A,R4
    MOV R0,A
    MOV A,R5
    MOV R1,A
    CLR C
    NDVMN9 : MOV A,@R0
    ADDC A,@R1
    MOV @R0,A
    INC R0
    INC R1
    DJNZ R7,NDVMN9
    NDVMNA : DJNZ B,NDVMN5
    MOV A,M
    CLR C
    SUBB A,N
    ADD A,R3
    MOV R1,A
    MOV A,R2
    MOV @R1,A
    MOV A,R3
    MOV R0,A
    RET
    11楼 回复本楼

    引用 xilinxue 2009/2/11 13:12:16 发表于11楼的内容

总共 , 当前 /