打印

keil汇编程序释疑

[复制链接]
1504|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小二呆|  楼主 | 2014-11-8 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
           ORG   0000H
           MIN   DATA  0062H
           LEN   EQU  0061H
           BLOCK DATA  0000H
           MOV   R0,#BLOCK
           MOV   LEN,#99
           MOV   R0,#00H
           MOV   MIN,#0FFH
           INC   R0
LOOP:  MOV   A,@R0
       CLR   C
       SUBB  A,MIN
       JNC   NEXT
       MOV   MIN,@R0
NEXT:  INC   R0
       DJNZ  LEN,LOOP
           SJMP  $
END
这是求以BLOCK为起始地址的100个无符号数最小值的程序。定义BLOCK的初始地址为0000H,但是在程序调试的时候,数值比较是从0001H开始的,000H单元中的值会先置零,然后再循环加1.如果去掉红色的部分,那程序就无法比较了。请问想要从初始位置就开始比较该这么改?还有在调试的过程中如何给指定的单元区间任意赋值?
谢谢

相关帖子

沙发
小二呆|  楼主 | 2014-11-8 23:06 | 只看该作者
人工置顶

使用特权

评论回复
板凳
ygzjyh| | 2014-11-9 08:33 | 只看该作者
R0寄存器的地址是00H,所以不能去掉红色的部分

使用特权

评论回复
地板
wangch_sh| | 2014-11-9 08:43 | 只看该作者
把R0放到后头不行吗?
先比较,再加1

使用特权

评论回复
5
linqing171| | 2014-11-9 19:10 | 只看该作者
           MOV   R0,#BLOCK
           MOV   LEN,#99
           MOV   R0,#00H
上面两行重复 把后面的删了
R0就是0地址,导致无法运行.

使用特权

评论回复
6
kingTek| | 2014-11-9 21:26 | 只看该作者
本帖最后由 kingTek 于 2014-11-9 21:31 编辑

内部RAM空间和扩展RAM空间是不同数据空间,BLOCK为0000H,肯定是扩展RAM,故应该用MOVX的语句,且原代码有其他冗余错误,修改后,参考一下以下代码:
(输入值在扩展RAM0000H开始的100个字节中,程序运行后选出最小值在R0中)
            ORG   0000H

       BLOCK DATA  0000H
       mov   dptr,#BLOCK
       mov   LEN,#99D

       movx   A,@DPTR
       mov r0,a        
       inc dptr
LOOP:  
       movx   A,@DPTR
       clr   C
       subb  A,r0
       jnc   NEXT
       mov   r0,A
NEXT:  
       inc   dptr
       djnz  LEN,LOOP

           SJMP  $
        END   

使用特权

评论回复
7
846150568| | 2014-11-10 07:17 | 只看该作者
复位时pc值就会变位0000H,0000H一般放条跳转指令,不会放数据的

使用特权

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

本版积分规则

5

主题

16

帖子

0

粉丝