求解单片机汇编程序中的一条指令

看到某个单片机汇编程序中出现MOVC,40H这条指令;求解,这指令怎么能通过呢?怎么能把一个字节的内容赋给位C呢?8位--->1位?(注:这条指令能通过编译,没出错)我没... 看到某个单片机汇编程序中出现MOV C,40H 这条指令;求解,这指令怎么能通过呢?怎么能把一个字节的内容赋给位C呢?8位--->1位?(注:这条指令能通过编译,没出错)
我没有分了,各位高手帮下忙吧!!!!
怎么反汇编?还有我查了,位寻址区在20H到2FH,40H是处在字节寻址区的
展开
 我来答
遥不可及007
2010-10-06 · TA获得超过1044个赞
知道小有建树答主
回答量:286
采纳率:0%
帮助的人:188万
展开全部

楼主你好:

    首先我要说明的是如果没有特殊说明,仅凭40H是无法得知这是一个字节地址还是位地址的!对于字节编址来说,40H处在字节寻址区,不能进行位寻址,所以MOV C,40H.0 的用法是错误的。

    那么楼主可能有疑问了,什么时候40H是字节地址,什么时候又是位地址呢?

    其实很好判断:楼主看看如下两条指令:

MOV  C,20H

MOV  A,20H

这两条指令看似结构相同,其实是南辕北辙。如果操作数是“C”,那么其后面的20H表示位寻址区的20H(即以字节编址来看是24H的最低位);如果操作数是“A”,那么地址为字节编址的20H。汇编程序会根据操作数C或A自动做出判断20H是字节地址还是位地址。

    位寻址区的划分是这样的:可位寻址区的地址从20H~2FH共16个字节单元,那么这16字节单元一共有16*8=128个位地址,从20H的最低位到2FH的最高位,按顺序生成00H~7FH共128个位地址。如果加上SFR高端128个位地址,51机共有256个位地址。

    所以楼主写的的40H,实际是一个位地址,位于28H的最低位。写了这么多,希望楼主能看明白,呵呵!附一张对照表:

百度网友76f485bf9
2010-10-05 · TA获得超过709个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:223万
展开全部
这里的40H其实是位地址,相当于40H.0,你反汇编一下就看出来了。或者你写两条:
MOV C,40H
MOV C,40H.0
然后看一下编译的结果,这两条指令是否是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
aimeiyn
2010-10-05
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
这条指令中的40H不是一个8位的数,是一个寄存器的物理地址,具体的是哪个我一时想不起。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式