求解单片机汇编程序中的一条指令
看到某个单片机汇编程序中出现MOVC,40H这条指令;求解,这指令怎么能通过呢?怎么能把一个字节的内容赋给位C呢?8位--->1位?(注:这条指令能通过编译,没出错)我没...
看到某个单片机汇编程序中出现MOV C,40H 这条指令;求解,这指令怎么能通过呢?怎么能把一个字节的内容赋给位C呢?8位--->1位?(注:这条指令能通过编译,没出错)
我没有分了,各位高手帮下忙吧!!!!
怎么反汇编?还有我查了,位寻址区在20H到2FH,40H是处在字节寻址区的 展开
我没有分了,各位高手帮下忙吧!!!!
怎么反汇编?还有我查了,位寻址区在20H到2FH,40H是处在字节寻址区的 展开
3个回答
展开全部
楼主你好:
首先我要说明的是如果没有特殊说明,仅凭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的最低位。写了这么多,希望楼主能看明白,呵呵!附一张对照表:
展开全部
这里的40H其实是位地址,相当于40H.0,你反汇编一下就看出来了。或者你写两条:
MOV C,40H
MOV C,40H.0
然后看一下编译的结果,这两条指令是否是一样的
MOV C,40H
MOV C,40H.0
然后看一下编译的结果,这两条指令是否是一样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这条指令中的40H不是一个8位的数,是一个寄存器的物理地址,具体的是哪个我一时想不起。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询