找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2251|回复: 6
收起左侧

大神求教这小段程序可以怎么改的简单一点

[复制链接]
ID:158460 发表于 2016-12-30 11:23 | 显示全部楼层 |阅读模式
这个是显示程序的一小段,我不太理解ADD A ,#(D_TAB-$-3)这个是什么意思啊,想改成DPTR之类的容易理解一点,求大家帮帮忙啊。
ADD   A, #(D_TAB-$-3)

    MOVC  A, @A + PC

    MOV   P0, A

    RET
这段显示程序
DISP:                  ;显示一遍约有10ms

    PUSH  ACC

    PUSH  B

;------------------------

    MOV   A, R4        ;取来选手号码

    CALL  OUT_DM    ;输出段码

    CLR   P1.0      ;显示

    CALL  DELAY

    SETB  P1.0

;------------------------

    MOV   A, #10

    CALL  OUT_DM    ;输出段码

    CLR   P1.1      ;显示'-'

    CALL  DELAY

    SETB  P1.1

;------------------------

    MOV   A, R3        ;取来秒数

    MOV   B, #10

    DIV   AB

    CALL  OUT_DM    ;输出段码

    CLR   P1.2      ;显示十位

    CALL  DELAY

    SETB  P1.2

;------------------------

    MOV   A, B

    CALL  OUT_DM    ;输出段码

    CLR   P1.3      ;显示个位

    CALL  DELAY

    SETB  P1.3

;------------------------

    POP   B

    POP   ACC

    RET

;------------------------

OUT_DM:

    ADD   A, #(D_TAB-$-3)

    MOVC  A, @A + PC

    MOV   P0, A

    RET

;------------------------

D_TAB:   

    DB   0C0H,0F9H,0A4H,0B0H, 99H ;共阳极0-9

    DB    92H, 82H,0F8H, 80H, 90H,0BFH ;-


回复

使用道具 举报

ID:158966 发表于 2016-12-30 21:24 | 显示全部楼层
用c啊,word哥
回复

使用道具 举报

ID:7485 发表于 2016-12-30 19:57 | 显示全部楼层
“D_TAB”指的是 D_TAB表的首地址,"$"指的是本句的地址,D_TAB-$,是求出本语句到D_TAB首地址的距离(字节数)再-3求出下面一句“MOVC  A, @A + PC” PC的准确地址。
这样写,是不想占用DPTR。而是用PC间接寻址。
如果看不懂,或嫌麻烦,可以如下:
OUT_DM:
    ADD   A, #(D_TAB-$-3)
    MOVC  A, @A + PC
    MOV   P0, A
    RET

可改成:
OUT_DM:
          MOV   DPTR,  #D_TAB
         MOVC  A,  @A+DPTR
         MOV   P0, A
         RET
回复

使用道具 举报

ID:7485 发表于 2016-12-30 18:48 | 显示全部楼层
把完整的程序贴出来看看。
回复

使用道具 举报

ID:7485 发表于 2016-12-30 18:15 | 显示全部楼层
你把完整的程序贴出来看看。
回复

使用道具 举报

ID:65425 发表于 2016-12-30 17:02 | 显示全部楼层
汇编语言啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表