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 (???)

51单片机汇编语言里的寄存器是默认定义的么?
在51单片机的汇编语言编程中,特殊功能寄存器(SFR)并非在默认情况下由编译器定义。实际上,它们是需要程序员根据具体的硬件知识和编程需求来明确定义的。以下是详细说明:1. 从00H到1FH的地址空间包含了工作寄存器,即R0到R7,这些寄存器是系统预先定义的,属于四个不同的寄存器组。程序员通常应避免对这...

汇编语言在51单片机中的所有指令有那些?
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行布尔变量操作指令分析[1]. 位传送指令(2条)MOV C,bit ;bit→CY,某位数据送CYMOV bit,C ;CY→bit,CY数据送某位[2]. 位置位复位指令(4条)CLR...

51系列单片机及C51程序设计目录
第一章单片机基础知识,详细讲解了MCS-51单片机的特点、内部结构、资源、工作方式、定时器\/计数器、串行接口、中断等。第二章KEIL51应用入门,介绍了KEIL51集成环境、程序调试、项目建立、汇编语言和机器代码效率比较。第三章KEIL51软件的调试技巧,涵盖了P1口应用、外部中断、定时器\/计数器、调试函数等技巧...

51单片机 汇编语言里的 寄存器 是默认定义的么?
51单片机汇编语言中的特殊功能寄存器是默认定义了的,严格而言是是编译器定义的,而用户使用的寄存器是可以自由定义的,以下说说具体情况:1、00H~1FH,这部分为工作寄存器,四个组的R0~R7,系统默认定义的,用户最好不要随意定义。2、20H~2FH,这部分为位寻址寄存器,用户可以定义,但最好不轻易用作...

单片机程序状态寄存器
首先我先贴图出来吧,这种东西,用keil可以仿真出来的,下图是用51单片机来模拟的,软件为keil4.如图,这个是按你的程序写的程序,ORG为伪指令,表示程序所在的位置,即程序下载后存放的位置,因为不是写正规程序,所以就直接写在0000H位置下了,一般程序不能直接写在0000H下,因为后面有很多中断向量的...

用汇编语言编写51单片机程序,指令程序存储在ROM里还是RAM里?_百度知...
51单片机采用的是哈佛结构,即数据和程序分开,这样可以提高程序的执行速度,如果是MOV 21H #35H这样的指令,#35H是作为一个立即数,是要和指令放在一起的,就是放在了rom里,如果是定义了的变量,那么就会放到数据存储器ram里,在定义变量的时候,可以通过命令选择变量放到rom或是ram中。

MCS-51单片机C语言程序设计与实践目录
任务六 程序设计语言与工具软件简介 一、程序设计语言简介 C51是专为MCS-51系列单片机设计的汇编语言,支持结构化编程。二、集成开发软件Keil简介 Keil是一款功能强大的C51语言集成开发环境,提供编译、调试和仿真功能。三、集成开发软件Med Win3,0简介 Med Win3,0是另一个用于C51语言开发的集成开发环境,...

movc指令是什么意思
MOVC指令是51单片机汇编语言中用于查找表的指令。它主要用于将程序存储器中的数据传送到累加器A中。在汇编语言中,MOVC指令的作用是实现程序存储器与累加器A之间的数据传输。查表指令在汇编语言中是一种特殊的指令,它主要用于在存储器中查找以表格形式有序排列的数据。在MCS-51单片机的指令系统中,包含了...

51单片机汇编中的寄存器R0、R1、R2如果用c语言写的话怎么表示
如果必须访问这几个寄存器的话可以使用c语言里嵌入汇编,或者访问各寄存器对应的映射地址。

汇编语言里面的查表法是什么意思啊。在单片机里面是怎么运行的啊...
51单片机汇编语言有一条查表指令是:MOVC A, @A+DPTR 它不是单独使用的,要和 DB 伪指令配套使用。例如:若累加器A中有一个0~9的数,请用查表法求出该数的平方值,设平方表表头地址为1000H。程序如下:;--- MOV DPTR,#1000H MOVC A,@A+DPTR ……ORG 1000H DB 0, 1, 4, 9, 16...

相似回答