本帖最后由 ahshmj 于 2019-1-19 14:08 编辑
上次在你的另外的一个帖子里已经告诉你了:“
MOVC A, @A+PC 本条指令是查表指令,也叫作:“程序存储器读指令”,要读的值在“TAB3”表中。“PC”是当前(本条指令)代码在程序存储器中的位置,而TAB3表距离当前“PC”还有6个字节的距离,所以当前的“PC”值+6,才是TAB3的首字符位置。”
你看看从“MOVC A, @A+PC”这语句到“TAB3”之间有几条指令(不含本语句)?这几条指令的机器码就是6个字节。
在没有给“TAB3”指定位置的情况下,程序的机器码是按先后顺序存放烧写的。
“PC”的值就是当前语句的机器码烧写在程序存储器中的地址。再加上6个字节,就到“TAB3”的首地址了。
你可以打开你的本工程目录下,经过编译产生的*.lst文件看看便知。
根据你的提问,你现在理解这些还有一定的难度,如果你真心的想学、想掌握这门技术,建议你还是扎扎实实的打好基础。
有好几个网友的回帖都讲的非常详细了,就是基础再差也该看懂了。
这么详细还是看不懂? |