51单片机 汇编语言 常用数据处理程序设计 查表送寄存器
【2.2】应用DPTR设计查表程序,在程序存储器2000H设一双字节数据表(表格长度小于128字节,每个元素两个字节,使用汇编DW伪指令置数),根据累加器A中的查表参数(...
【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寄存器中
谢谢! 展开
应用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寄存器中
谢谢! 展开
2个回答
展开全部
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
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、
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 (???)
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 (???)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询