应该是
MOV A,#14H ;修正值送A
才对,14应该是16进制数,正好等于十进制得20,因为PC总指向下一条指令。
修正值你需要查指令手册计算一下你的这段程序占了多少字节,我觉得你这段程序有个问题:
当你查到关键字后,你压栈的A值未出栈,就返回了,你的程序肯定返回不到你调用的地方,随着你的A值的不断变化,返回地址也是不定的。
修正值A是PC的地址到要查找的数据表的首地址中间的字节数。本例中PC值为CJNE A,30H,LOOP1的地址,中间有14字节的程序才到数据表的首地址,所以A为14。MOVC A,@A+PC才能查找数据
你的意图如果是查表的话当前PC值并不是无序数据表的地址啊,你这样查不到的吧,你把“MOVC A,@A+PC”中的“PC”修改为“DPTR”再试一下看看。
汇编不大懂,呵呵