打印

一段汇编程序请教

[复制链接]
2747|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kenkel|  楼主 | 2007-3-6 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        MOV     R0, #2
CheckInternalRAM:
        MOV     R1, #0
CheckNextValue:
        MOV     @R0, 01H
        MOV     A, @R0
        CJNE    A, 01H, $
        NOP
;这是不是比较01H地址内容是否相等?

DJNZ    R1, CheckNextValue
        NOP
;这一句不就成了0减1了吗?
;上面的程序是起动代码中当单片机上电后处理的程序.

相关帖子

沙发
berg| | 2007-3-6 11:21 | 只看该作者

RE

这是个间接寻址的问题。
给你写一下注释:
        MOV     R0, #2         ;R0内容为2
CheckInternalRAM:
        MOV     R1, #0         ;R1内容为0
CheckNextValue:
        MOV     @R0, 01H       ;将01H的内容写入到间接地址R0,物理地址为02H
        MOV     A, @R0         ;将R0间接地址内容写入A
        CJNE    A, 01H, $
        NOP
 

使用特权

评论回复
板凳
lyjian| | 2007-3-6 11:52 | 只看该作者

指令“CJNE    A, 01H, $”如果A和01H内容不同不就进入死循环了!

使用特权

评论回复
地板
zbmzy| | 2007-3-6 13:46 | 只看该作者

会不会是

 应该是 MOV     @R0,#01H
而写成了MOV     @R0, 01H

使用特权

评论回复
5
szzhengjin| | 2007-3-6 16:00 | 只看该作者

检查内存这么个做法,想不明白设计者原意

CJNE    A, 01H, $ 不等便死机

四楼的你能确认01H原来是什么值吗?

真不知道这段程序用途,检查内存这么个做法,想不明白设计者原意

使用特权

评论回复
6
xiaopet| | 2007-3-6 16:20 | 只看该作者

re

没有什么意义的程序,呵呵!

使用特权

评论回复
7
kenkel|  楼主 | 2007-3-6 17:20 | 只看该作者

请是这一段不太理解,谢谢大家指点啦

PowerUp:
        CLR     A
CheckRegister:
        MOV     R0, A
        MOV     R1, A
        CJNE    A, 00H, $
        NOP
        CJNE    A, 01H, $
        NOP
        DJNZ    ACC, CheckRegister
        NOP
        MOV     R0, #2
CheckInternalRAM:
        MOV     R1, #0
CheckNextValue:
        MOV     @R0, 01H
        MOV     A, @R0
        CJNE    A, 01H, $
        NOP
        DJNZ    R1, CheckNextValue
        NOP
        INC     R0
        CJNE    R0, #IDATALEN, CheckInternalRAM
        NOP
        MOV     R0, #IDATALEN
        CLR     A
ClearInternalRAM:
        MOV     @R0, A
        DJNZ    R0, ClearInternalRAM
        LJMP    ?C_START
        END

使用特权

评论回复
8
jkeqiang| | 2007-3-6 22:57 | 只看该作者

Re

PowerUp:
        CLR     A
CheckRegister:
        MOV     R0, A
        MOV     R1, A
        CJNE    A, 00H, $
        NOP
        CJNE    A, 01H, $
        NOP
        DJNZ    ACC, CheckRegister
        NOP


这段程序能过吗?
我感觉死在里面了。

使用特权

评论回复
9
turmary| | 2007-3-7 03:13 | 只看该作者

我觉得这段程序没有问题.

注意,开机时,
R0是地址01H的别名,
R1是地址02H的别名,

PowerUp:
        CLR     A
CheckRegister:
        MOV     R0, A
        MOV     R1, A
        CJNE    A, 00H, $  
        ;不相等是会死机,如果不相等肯定是寄存器硬件有问题了
        NOP
        CJNE    A, 01H, $
        NOP
        DJNZ    ACC, CheckRegister
;检验ACC,R0与R1

        NOP
        MOV     R0, #2
CheckInternalRAM:
        MOV     R1, #0
CheckNextValue:
        MOV     @R0, 01H
        MOV     A, @R0
        CJNE    A, 01H, $
        NOP
        DJNZ    R1, CheckNextValue
;0-1会变成0FFH
;这段的意思是从00到FF再到01写入@R0,
;比较写入值与读出值 

        NOP
        INC     R0
        CJNE    R0, #IDATALEN, CheckInternalRAM
;上面那段(对R0)是从2-IDATALEN执行
        NOP
        MOV     R0, #IDATALEN
        CLR     A
ClearInternalRAM:
        MOV     @R0, A
        DJNZ    R0, ClearInternalRAM
;从地址IDATALEN到地址1清0
        LJMP    $
        END

使用特权

评论回复
10
jkeqiang| | 2007-3-7 08:58 | 只看该作者

turmary说得对

使用特权

评论回复
11
liqimcu| | 2007-3-7 09:12 | 只看该作者

有理。

同意 turmary 的。

使用特权

评论回复
12
fish1983| | 2007-3-7 10:04 | 只看该作者

turmary说得对

turmary 的

使用特权

评论回复
13
turmary| | 2007-3-7 12:12 | 只看该作者

对10楼

这个是程序段的注释,
从CheckRegister:开始,到DJNZ    ACC, CheckRegister结束..

如果三个寄存器ACC, R0,R1有问题就会死循环

使用特权

评论回复
14
懒人| | 2007-3-7 22:31 | 只看该作者

晕 R0是地址01H的别名?地址00H的别名是什么?

也不知道我该看看资料,还是你们该看看资料

使用特权

评论回复
15
hotpower| | 2007-3-7 22:35 | 只看该作者

哈哈~~~有4组别名呀~~~

使用特权

评论回复
16
jkeqiang| | 2007-3-8 09:00 | 只看该作者

显然是笔误

你叫什么真阿

使用特权

评论回复
17
lju| | 2007-3-8 13:13 | 只看该作者

谁给我一段48R06A点LED的示范程序

  汇编这个IC时的CPU先择什么

使用特权

评论回复
18
tcc8073| | 2007-3-14 13:20 | 只看该作者

表达一下

这个程序只是用来检查RAM中的几个特殊寄存器是否有问题,做个IC检测,我以前也写过这样的程序,有些时候RAM的几个特殊寄存器容易坏

使用特权

评论回复
19
hkap| | 2007-3-14 17:05 | 只看该作者

--

程序没问题,有以下几个功能:
1. 先检查R0,R1是否有问题,依次从0~255写入再读出,相等则OK,否则死循环
2. 接着检查02H~IDATALEN,依次从0~255写入再读出,相等则OK,否则死循环
3. 检查完毕,再清空所有内存00H~IDATAEN

使用特权

评论回复
20
lyjian| | 2007-3-14 17:14 | 只看该作者

有毛病的做法

要检查RAM是否有问题,检查写“0”和写“FF”对不对就行了,何苦写0~255的值来检查。浪费青春。

使用特权

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

本版积分规则

12

主题

19

帖子

1

粉丝