
乘以4,不像,请给出程序来分析一下。
---------------------
看明白了。
这书的作者,把各个程序的分支,写成了“调用子程序+转移指令”的形式,所以才有了如此“笨重”的散转方法。
且看它的分支表:
TABLE:
ACALL PRADD 转加法子程序从“TABLE +0”是第O个分支
SJMP PREND 转结束
ACALL PRSUB 转减法子程序从“TABLE +4”是第一个分支
SJMP PREND 转结束
ACALL PRMUL 转乘法子程序从“袜芹TABLE +8”是第二个分支
SJMP PREND 转结束
ACALL PRDIV 转除法子程序从“TABLE +12”是第三个分支
SJMP PREND 转结束
…… 从“TABLE +…………
……
它的每个分支,都是使用了两条2字节的指令,所以各分支,相差4个字节;如果要根据告毁毕分支的号码,找到对应的地址,就应该乘以余庆4。
这种4字节形式的分支表,所能容纳的分支数目,明显少于2字节的分支表。这种笨方法,也写成书,真是不可思议。
SUBB A, #04H 如果结果Cy=1说明键值小于04H,是合理的,否则键值大于04H就出错。RL A 起键值×2的迟拦扮作用,因为散转表中的每条指令JMP @A+DPTR的代码都是双字节的码灶,所以散转偏移量应该是键值的两倍衡神。如果每组代码是N字节,这里就要×N。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)