51单片机 汇编语言 常用数据处理程序设计 查表送寄存器

【2.2】
应用DPTR设计查表程序,在程序存储器2000H设一双字节数据表(表格长度小于128字节,每个元素两个字节,使用汇编DW伪指令置数),根据累加器A中的查表参数(或序号)查找对应值送入R0、R1寄存器中。

ORG 0000H
MOV DPTR,#TABLE
MOV R2,A (???)
MOVC A,@A+DPTR
MOV R0,A (???)
XCH A,R2 (???)
INC A (???)
MOVC A,@A+DPTR
MOV R1,A (???)
SJMP $
ORG 2000H
TABLE: DW 0,1,4,9,16,25,36,49,64,81,100,121,144,169
DW
196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900
END

求助:
1.给“(???)”所在行进行标注,及其功能;
2.请指出哪步是累加器A中的查表参数(或序号)查找对应值送入R0、R1寄存器中

谢谢!

ORG 0000H
MOV DPTR,#TABLE
MOV R2,A (暂存A中原来的参数)
MOVC A,@A+DPTR ;到表头地址加A中的偏移量处取数
MOV R0,A (把取来的第一个数放在R0中)
XCH A,R2 (把原暂存的A值和和才取的数进行交换存贮)
INC A (因是二字节的这准备取下一个字节的数)
MOVC A,@A+DPTR
MOV R1,A (把取的第二个字放在的R1中)
SJMP $
ORG 2000H
TABLE: DW 0,1,4,9,16,25,36,49,64,81,100,121,144,169
DW
196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900
END来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-26
1、
ORG 0000H
MOV DPTR,#TABLE
MOV R2,A ;待查表参数暂存R2
MOVC A,@A+DPTR
MOV R0,A ;查表得到的第一个字节数据(低8位)送入R0
XCH A,R2 ;从R2取回待查表参数(等同 MOV A,R2)
INC A ;带查表参数+1,获得双字节表的下一个偏移地址
MOVC A,@A+DPTR
MOV R1,A ;查表得到的第二个字节数据(高8位)送入R1
SJMP $
ORG 2000H
TABLE: DW 0,1,4,9,16,25,36,49,64,81,100,121,144,169
DW
196,225,256,289,324,361,400,441,484,529,576,625,676,729,784,841,900
END

2、
MOVC A,@A+DPTR
MOV R0,A (???)
XCH A,R2 (???)
INC A (???)
MOVC A,@A+DPTR
MOV R1,A (???)
相似回答