OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3538|回复: 2

汇编语言基础问题,在线等答案!!!!

[复制链接]

19

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2015-9-26
在线时间
7 小时
发表于 2016-8-4 10:22:14 | 显示全部楼层 |阅读模式
1金钱
这个是义隆单片机的汇编代码,我就截取了一部分,就3个简单的问题,各位大神帮我下吧!感激不尽
只学过C 第一次用汇编有点理不清额
START:
            R0 ==0X00 //间接地址寄存器
            TCC ==0X01
            PC ==0X02
            STATUS==0X03
            R4  ==0X04
            IOC5==0X05
            IOC6==0X06
            PORT5==0X05
            PORT6==0X06
            IOCB ==0X0B
            IOCC ==0X0C
            IOCD ==0X0D
            IOCE ==0X0E
            IOCF ==0X0F
            RF  ==0X0F
            DATA_R==0X10            ;显示缓冲区10H27H
            DIS_CNT==0X28           ;行扫描寄存器
            R_LOOP  ==0X29
            R_LOOP_24==0X2A
            SHIFT_R ==0X2B
            TIME_R  ==0x2E
            TIME_R_1==0x2F
            DLY_TIME==@50
            NUMBER==@35
            CY==STATUS.0
            ZERO==STATUS.2
            CP_164==PORT5.0         ;定义164_CP
            SCK_595==PORT5.1        ;定义595_CP
            RCK_595==PORT5.2        ;定义595_RCK锁存端
            OE_595==PORT5.3        ;定义595_OE
            SI_595_G==PORT6.0       ;定义595绿色SI
            SI_595_R==PORT6.1       ;定义595绿色SI
            SI_164==PORT6.6         ;定义164_SI
            GREEN_TEST==PORT6.7     ;定义595绿色测试端
            ORG     0X000
            JMP     INITIAL_MAIN  ////第一个问题是不明白,为什么这里要初始化两次,而且第二次还换了个地址再初始化
            DISI
            RET
            NOP
            ORG     0X008
            JMP     INITIAL_MAIN
            NOP
            ORG     0X010        ////第二个问题是到这里换了个地址就结束了?问题是怎么运行到main里面的程序 感觉到这里好像结束了??
;程序初始化
    INITIAL_MAIN:
            DISI
            MOV     A,@0XF0
            IOW     IOC5            ORT5设置为输出
            MOV     A,@0B10111000
            IOW     IOC6            ORT6设置
            MOV     A,@0B00111111
            IOW     IOCD
            CLRA                    ;TCC为外触发计数方式
            IOW     IOCE            ;WDT禁止
            IOW     IOCF            ;禁止中断被开放
            MOV     A,@0B11111000
            MOV     PORT5,A
            MOV     A,@0B10110000
            MOV     PORT6,A
            ;CALL   DLY250MS        ;250毫秒延时
        MAIN:                       //问题3:这个main 是像start一样固定用法的伪指令 还是就一个标识符没什么意义的伪指令?
            JBS     GREEN_TEST
            JMP     DIS_NO_SIGN     ;禁止符号显示程序
            MOV     A,@NUMBER
            MOV     DIS_CNT,A

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2016-8-5 08:44:55 | 显示全部楼层
1,MAIN:是个伪指令
2,ORG 0X008估计是个中断函数入口地址(51单片机就是外部中断0的中断入口 )
3,ORG 0X010是指定INITIAL_MAIN:程序断的开始地址位置。
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-8-5
在线时间
10 小时
发表于 2016-8-5 09:12:10 | 显示全部楼层
1,ORG指令一般是说明程序段开始的地址,单片机的0x00地址一般是复位向量,0x08一般是中断向量,也就是说发生中断的时候程序指针会指向0x08这个地址并从该地址响应中断服务程序。至于你的第一个问题,你需要根据具体功能来看,有可能功能需求就是要一段时间滞后就重新开始呢?
2,第二个问题,并不是说程序结束了,而是重新指定程序开始执行的起始地址。不加ORG 0x010的话,INITIAL_MAIN的地址就是0X009。程序顺序执行的时候是会进入到MAIN中的。
3,第三个问题,我认为MAIN只是你自己定义的一个标号,你也可以给它重新取个名字。当然,最好是看芯片的DATASHEET来确定下。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 17:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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