打印

请教一下这个汇编子程序中的符号代表什么?R0,R1,M,N.程序如

[复制链接]
3322|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hong_he|  楼主 | 2007-3-21 10:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一下这个汇编子程序中的符号代表什么?R0,R1,M,N.程序如下
;二进制整数(M位)转换为十进制整数(组合BCD码)
;入口: R1,M,N
;占用资源: ACC,B,R2,R3,R7
;堆栈需求: 2字节
;出口: R0
IBTDMN :
MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV B,N
CLR A
IBDMN1 :
MOV @R0,A
INC R0
DJNZ B,IBDMN1
MOV A,M
SWAP A
RR A
CLR C
MOV R7,A
IBDMN2 :
MOV A,R2
MOV R0,A
MOV A,R3
MOV R1,A
MOV B,M
IBDMN3 :
MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ B,IBDMN3
MOV B,N
IBDMN4 :
MOV A,@R0
ADDC A,@R0
DA A
JNB ACC.4,IBDMN5
SETB C
CLR ACC.4
IBDMN5 :
MOV @R0,A
INC R0
DJNZ B,IBDMN4
DJNZ R7,IBDMN2
MOV A,R2
MOV R0,A
RET

相关帖子

沙发
turmary| | 2007-3-23 00:31 | 只看该作者

二进制整数(M位)

;二进制整数(M字节),R1是输入地址
;R0是RAM中输出BCD数据的地址,有N字节

;indented by indent51(written by Tary 2006-05-17)
;二进制整数(M位)转换为十进制整数(组合BCD码)
;入口: R1,M,N
;占用资源: ACC,B,R2,R3,R7
;堆栈需求: 2字节
;出口: R0
IBTDMN :
    MOV    A, R0        ; SAVE R0, R1
    MOV    R2, A
    MOV    A, R1
    MOV    R3, A
    MOV    B, N
    CLR    A

IBDMN1:    MOV    @R0, A        ; [0 .. 0] - > [@R0 .. @(R0 + N - 1)]
    INC    R0
    DJNZ    B, IBDMN1
    MOV    A, M
    SWAP    A
    RR    A        ; M * 8 -> R7
    CLR    C
    MOV    R7, A

IBDMN2 :
    MOV    A, R2
    MOV    R0, A        ; R0 and R1 Restore
    MOV    A, R3
    MOV    R1, A
    MOV    B, M        ; M -> B

IBDMN3:    MOV    A, @R1        ; 所有数据字节左移一位
    RLC    A
    MOV    @R1, A
    INC    R1
    DJNZ    B, IBDMN3

    MOV    B, N

IBDMN4:    MOV    A, @R0
    ADDC    A, @R0        ; A = 2 * @R0 + C
    DA    A        ; 对A进行十进制调整
    JNB    ACC.4, IBDMN5
    SETB    C
    CLR    ACC.4
IBDMN5:    MOV    @R0, A        ; 结果存回@R0
    INC    R0
    DJNZ    B, IBDMN4

    DJNZ    R7, IBDMN2    ; 对每一位处理

    MOV    A, R2
    MOV    R0, A
    RET

使用特权

评论回复
板凳
发霉的味道| | 2007-3-23 08:27 | 只看该作者

111

看书去!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

8

帖子

0

粉丝