编一采用查表法求1~20的平方数子程序。要求x在累加器A中,1<=x<=15,平方数高位存放在R6,低位放在R7

编一采用查表法求1~20的平方数子程序。要求x在累加器A中,1<=x<=15,平方数高位存放在R6,低位放在R7,第1张

以前的是错误的,不过楼下的也不对,因为400已经不能再用一个字节保存了。

修改后的答复:

ORG 0000H

MOV A,#5 ;把要计算的自变量送入A

MOV DPTR,#TAB

DEC A ;减一对齐

RL A ;A乘以2

MOV B,A ;保护A

MOVC A,@A+DPTR ;高位

MOV R6,A

MOV A,B ;恢复A

INC A

MOVC A,@A+DPTR ;低位

MOV R7,A

SJMP $

ORG 1000H

TAB: DW 1,4,9,16,25,36,49,64,81,100

DW 121,144,169,196,225,256,289,324,400

END

这次应该对了,测试通过……

这个问题的重点在于 MOVC A,@A+PC

MOVC A,@A+PC将它下一条指令的PC值加上累加器A的值作为地址,把程序存储器中这个地址的内容送入累加器A。因比在使甩这条指令时,应先计算出数据表格首地址与MOVC下一条指令地址的偏移量。然后把欲查内容的检索号加上偏移量送入累加器A。使用此指令时应注意,表格长度加上偏移量不得大于256,否则应采用MOVC A,@A+DPTR指令。

例如:

地址 命令

001 MOV A,#03H (占用两个BYTE空间)

003 MOVC A,@A+PC(占用一个BYTE空间)

004 RETU:RET (占用一个BYTE空间)

005 TABLE:DB 01H 04H 09H 10H 19H (每个值占用一个BYTE)

因此在你要求平方的数字放入A,以这个例子来说你是要求3的平方,所以先做MOV A,#03H

之后MOVC A,@A+PC这个指令执行时会先将PC指到下一个指令的地址也就是004的地方,然后再把这个地址也就是004跟刚才A里面的值03相加得到7

这个7的地址存放的就是9这个值,这样我们就得到了平方的值了

以上就是关于编一采用查表法求1~20的平方数子程序。要求x在累加器A中,1<=x<=15,平方数高位存放在R6,低位放在R7全部的内容,包括:编一采用查表法求1~20的平方数子程序。要求x在累加器A中,1<=x<=15,平方数高位存放在R6,低位放在R7、麻烦高手帮忙解释下这汇编语言查表求平方程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10172216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存