求单片机高手解决一下这个问题,就此谢过了!

指出下列子程序的功能,请回答各指令括号中的问题。
ORG 1000H
MOV DPTR, #TABLE
MOV A,40H (40H单元中内容是多少?)
ANL A,#0FH (执行这一步逻辑与后,A中内容是多少?)
MOVC A,@A+DPTR (执行这一步变址寻址后,A中内容是多少?)
MOV 41H,A
SJMP $ (这一指令是什么意思,有何用意?)
TABLE DB 0,1,4,9,16,25,36,49,64,81
END

1、这是一个利用查表的方法计算一位数X=0-9的平方值的程序。
2、40H中的内容就是要求的X,应事先放在40H中。
3、逻辑与的目的是为了避免X的值大于9了,只保留个位即一位数。
4、变址寻址后A中的内容就是X的平方值了,是通过查表得到的。
5、SJMP $ 指令是让单片机停止在此处无限循环的意思,不再往下执行程序了,因51单片机没有停止指令,就只好用这条指令让单片机停止了。追问

"3、逻辑与的目的是为了避免X的值大于9了,只保留个位即一位数。"这一步还是不懂,请高手不吝赐教!
还有ORG 1000H是什么意思?

追答

假如40H中事先放有一个数是25,其平方数超过了计算范围,是不允许的,经过逻辑与,将十位变成0,只留下个位5,就可以计算5的平方了。

追问

谢谢阁下的指点,按您的假设,是不是可以用如下的表示方法?

追答

对的,是这样,但是不能写成05H,这是十六进制数了,要写成05,虽然值相同,但意义是不同的。特别是绝不能写25H,而是25,这是BCD码,就是十进制数。

温馨提示:答案为网友推荐,仅供参考
相似回答