movc movxA,@A+DPTR是什么查表的

MOVC A, @A+DPTR 是什么意思?_百度知道
MOVC A, @A+DPTR 是什么意思?
DSPLY:MOV DPTR, #TABLEMOVC A, @A+DPTRMOV SBUF, AJNB TI, $CLR TIRETTABLE:DB 0C0H,0F9H,0A4HDB 0B0H,99H,92HDB 82H,0F8H,80H,90H问题:1MOVC A, @A+DPTR 意思2MOVC A, @A+DPTR A+意思3#TABLE#意思
提问者采纳
问题1:条指令汇编语言专用查表指令要查表顺序表DPTR表数据首址A事先存储数据相于表首址址偏移量能超<img class="word-replace" src="/api/getdecpic?picenc=0af5通调整A值查询表指定位置数据条指令执行完毕A存储查询数据简单说:给DPTR赋表首址值给A数据偏移量查询结放A段指令用与串口发送调用段程序前A存储要发送数据偏移量查表、发送问题2:指令格式规定没任何其含义问题3:带#表示取#号面变量物理址段程序取标号TABLE应址第数据0C0H址顺便说第数据址偏移量0.
相关专业回答
数据指针(DPTR)是80C51中一个功能比较特殊的寄存器。从结构DPTR是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针。
访问片外数据存储器的指令:
其他类似问题
为您推荐:
其他2条回答
问题查表指令采用DPTR作数据表格首址指针查表前数据表格起始址存入DPTR查表索引值送入累加器A使用指令完查表问题二A+单独整体指令格式问题三#意思种格式
MOV DPTR, #TABLE
就是说把TABLE 的地址读到指针DPTR中去,注意是地址。MOVC A, @A+DPTR 是什么意思
A+DPTR 就是读取TABLE表开始第几个数值到寄存器A,A是0就是第一个,不过具体看表的类型来看A,有字节、字、双字。 #表示什么难道你不知道?
movc的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁MOVC A,@A+DPTR是什么意思_百度作业帮
MOVC A,@A+DPTR是什么意思
最常用于查表:比如你在程序中放了一个表:TAB:DB 0C0H,0F9H,0A4HDB 0B0H,099H,092HDB 082H,0F8H,080HDB 090H如果你想查询表的第三个数据,就可以这样编程:MOV DPTR,TABMOV A,#02H ;A称为偏移量MOVC A,@DPTR+A这样就能读到第三个数据了
为您推荐:
其他类似问题
扫描下载二维码单片机系统指令_百度百科
单片机系统指令
单片机系统指令是由机器语言发出的指令,其中MCS-51共111条指令。
单片机系统指令mcs-51单微机处理指令
MCS-51共111条指令,
1、按指令所占的字节来分:
(1)单字节指令(49条) 如MOV A,R2,()
(2)双字节指令(46条) 如MOV A,#0BH,(74H,
(3)三字节指令(16条) 如MOV 0BH, #0BH ,(75H,
2、按指令的执行时间来分:(1个为12个)
(1) 1个(64条) ,如MOV A,R2 MOV A,#0BH,
(2) 2个(45条) ,如MOV 0BH, #0BH
(3) 4个(2条) ,乘、除指令。
一、按和分
1、:用来规定指令进行什么操作
如MOV A,#0BH,(74H,0BH)
其中74H为,指明“将送入ACC”这种操作;
2、:则是指令操作的对象,有可能是数据,也可能是地址
如MOV A,#0BH,其中#0BH为。
有单字节指令、双字节指令、三字节不同长度的指令,格式不同: (1)单字节指令:、同在一个字节中。
(2)双字节指令:+。
(3)三字节指令:++操作数。
二、按和分
操作[目的,源操作数]
如MOV A,#0BH,(机器码74H,0BH),其中:
(1)MOV为操作, 指明“内部”这种操作;
(2)A为目的,指明“的目的寄存器”是A;
(3) #0BH为源。
单片机系统指令指令系统的寻址方式
一、在中;
如MOV A,Rn ;(Rn)→A,n=0~7
1、4组工作寄存区,共32个工作寄存器。
2、部分,例如A、B 及DPTR等。
二、访问片外数据
(1)用R0或R1作为间址,范围为片外低256个字节;
(2)用DPTR作为间址寄存器,寻址范围为片外64K。
a) MOVX A,@Ri ;i=0或1
若(Ri)=70H,把外部RAM中70H单元的内容送到A
b) MOVX A,@DPTR
若(DPTR)=2000H,把外部RAM中2000H单元的内容送到A
3、堆栈操作指令访问堆栈区
专用操作指令PUSH(压栈)和POP()使用堆栈
(SP)作间址寄存器
指令PUSH(压栈)和POP(),无前缀标志“@”
四、立即(数)
在指令中直接给出,需在操作数前面加前缀标志“#”。
如MOV A,#40H,此时在程序中。
五、基址寄存器加变址寄存器间址
1、以DPTR或PC作基址寄存器,以A作为变址寄存器;
2、寄存器+变址寄存器形成地址;
3、本专门针对,寻址范围可达到64KB。
4、本的指令只有3条:
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP @A+DPTR
前2条又称,将单元内容给ACC;
后1条为散转指令,属于转移类指令。
(1)本是专门针对的寻址方式,寻址范围可达到64KB。
(2)本的指令只有3条:
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP @A+DPTR
89C51有位处理功能,可以对进行操作,
如MOV C,40H是把位40H的值送到进位位C。
寻址范围:
1、内部RAM中的区(20H—2FH),有2种表示方法。
(1) 直接给出位地址,如MOV C,40H;
(2) 加位数,如MOV C,(28H).0,指的是28H单元中的最低位。
2、SFR中的可寻址位(70H—FFH,共83位),有4种表示方法。
(1) 直接给出位地址,如MOV C,0D5H(PSW.5的位地址);
(2) 直接写位名称,如MOV C,F0;
(3) 加位数,如MOV C, (0D0H).5;
(4) SFR符号加位数,如MOV C, PSW.5。
在相对寻址的转移指令中,给出了地址“rel”,即
把PC的当前值+ rel 就构成了程序转移的目的地址。即
目的地址=转移指令所在的地址+ 转移指令的字节数+ rel
rel是带符号的8位二进制补码数,范围是:–128 ~ +127 ;
注意:PC的当前值是紧接在转移指令后的下一条指令的PC值。
单片机系统指令指令系统分类介绍
指令中符号意义:
DPTR数据,可用作16位的数据。
bit内部RAM或中的位。
C(或Cy)进位标志位或位处理机中的。
addr11 11位目的地址
addr16 16位目的地址
@ 寄存器前缀,如@Ri,@A+DPTR
(X)X中的内容。
((X))由X寻址的单元中的内容。
→右边的内容被箭头左边的内容所取代。
Rn 当前区的8个工作寄存器R0~R7(n=0~7)。
Ri 当前寄存器区中可作寄存器的2个寄存器R0、R1
Direct直接地址,即8位的内部RAM或的字节
#data 包含在指令中的8位。
#data16 包含在指令中的16位。
rel相对转移指令中的,为8位的带符号补码数。
单片机系统指令数据传送类指令
格式:MOV或MOVX或MOVC &目的&,&源&
将源复制给目的操作数,源操作数不变,而不是“
搬家”。类指令不影响标志位Cy、Ac和OV,影响奇偶标志位P。
一、以为目的操作数的指令
MOV A, R (Rn)→A,n=0~7
MOV A, @R ((Ri))→A,i=0,1
MOV A,(direct)→A
MOV A, # #data→A
二、以Rn为目的的指令
MOV Rn, A ; (A)→Rn, n=0~7
MOV Rn,(direct)→Rn, n=0~7
MOV Rn, # #data→Rn, n=0~7
三、以直接地址direct为目的的指令
MOV direct, A ; (A)→direct
MOV direct, R(Rn)→direct, n=0~7
MOV direct1, direct2;
MOV direct, @R((Ri))→direct
MOV direct, # #data→direct
注意:之间不可相互传送数据;
直接地址之间可相互传送数据。
(直接给出操作数的)
寻址范围:
1、内部RAM的128个单元(00-7FH)
2、(80-FFH) ,注意SFR区单元除了以的形式外,还可用寄存器符号的形式给出,如:
MOV A,80H 与 MOV A,P0是等价的。
是访问特殊功能寄存器的唯一寻址方式
四、以间接地址为目的的指令
MOV @Ri, A ;(A)→((Ri)),i=0,1
MOV @Ri,(direct)→((Ri))
MOV @Ri, # #data→((Ri))
五、16位数传送指令
MOV DPTR, #data16 ; #data16→DPTR
唯一的16位数据的传送指令,
的高8位送入DPH,
的低8位送入DPL。
六、堆栈操作指令
内部RAM中可以设定一个后进先出(LIFO-Last In First Out)的区域称作,SP始终指向堆栈的
栈顶位置。
1、指令 PUSH direct
先将栈SP加1,然后把direct中的内容送到SP指示的内部RAM单元中
2、指令 POP direct
SP指示的栈顶(内部RAM单元)内容送入direct字节单元
中,栈指针SP减1
七、A与传送指令
MOVX A, @DPTR ;((DPTR))→A,读外部RAM/IO
MOVX A, @R((Ri))→A,读外部RAM/IO
MOVX@DPTR, A ;(A)→((DPTR)),写外部RAM/IO
MOVX@Ri, A ;(A)→((Ri)),写外部RAM/IO
功能:A与外部RAM传送数据,RD*(P3.7)或WR*(P3.6)信号有效。
1、采用DPTR时,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。
2、采用Ri(i=0,1)时,可寻址片外256个单元的数据。Ri内容(地址)由P0口输出。
3、数据均由P0口输出。
用于读(内外)中的表格数据的指令,仅两条
,均采用寄存器加变址寄存器间接寻址方式。
1、MOVC A,@A+PC
(1) 以PC作为基址,A为变址寄存器;
(2) 两寄存器的内容相加,得到一个16位的地址;
(3) 取出此地址中的数据,传送给ACC。
注意:PC中的内容为下一条指令的起始地址,PSEN信号有效(作用同RD*、WR*)。
2、MOVC A,@A+DPTR
(1) 以DPTR 作为基址寄存器,A为变址寄存器;
(2) 两寄存器的内容相加,得到一个16位的地址;
(3) 取出此地址中的数据,传送给ACC。
如 (DPTR)=8100H (A)=40H 执行指令
MOVC A, @A+DPTR
执行结果将中8140H的内容送入A。
本指令的执行结果只和DPTR及A的内容有关,
与该指令存放的地址及常数表格存放的地址无关,因此表格的
大小和位置可以在64K中任意安排,一个可以
为各个程序块公用。
单片机系统指令功能指令
一、字节交换指令
若(A)=80H,(R7)=08H,执行后(A)=08H,(R7)=80H
XCH A, direct
若(A)=80H,(40H)=F0H,执行后(A)=F0H ,(40H)= 80H
XCH A, @Ri
若(A)=80H , (R0)=6AH, (6AH)=0FH ,
执行后(A)=0FH,(6AH)=80H
二、交换指令
XCHD A, @Ri 的低4位与内部RAM低4位交换
三、交换指令
将A的高和低半字节互换。
四、算术运算指令
加、减、乘、除指令,都是针对8位二进制无符号数。执行
的结果对Cy、Ac、OV等标志位有影响,但增1和减1指令不影
响上述标志。
1、加法指令,目的均为ACC。
ADD A, R(A)+(Rn)→A,n=0~7
ADD A,(A)+(direct)→A
ADD A, @R(A)+((Ri))→A,i=0,1
ADD A, #(A)+#data→A
注意运算结果对各个标志位的影响:
(1)、如果位7有进位,则进位标志Cy置“1”,否则清0;
(2)、如果位3有进位,则Ac置“1”,否则清0;
(3)、溢出标志位OV:
如果位6有进位,而位7没有进位;或者位7有进位,而位6 没有,则溢出标志位OV置“1”,否则清0。
OV状态,只有在带符号数加法运算时才有意义。
当两个带符号数相加时,OV=1,表示加法运算超出了A所能表示的带符号数的有效范围。
2、带进位加法指令
标志位Cy参加运算,因此是三个数相加。共4条:
ADDC A, R(A)+(Rn)+C→A,n=0~7 ADDC A,(A)+(direct)+C→A
ADDC A, @R(A)+(Ri)+C→A,i=0,1
ADDC A, #(A)+#data+C→A
3、增1(加1)指令(C语言的++ )
INC Rn=0~7
INC direct
INC @Ri=0,1
INC DPTR (除以外)
(1)、不影响PSW中的任何标志(除了INC A 外)。
(2)、INC DPTR
该指令是16位数增1指令。指令首先对低8位指针DPL的内容执行加1的操作,当产生溢出时,就对DPH的内容进行加1操作,不影响标志Cy的状态。
4、DA A,十进制调整指令
用于对BCD码加法运算结果的修正。
两个BCD码按二进制相加之后,必须经本指令的调整才能
得到正确的压缩BCD码的和数。
调整方法:十进制调整修正,即结果加6调整。具体为:
a) 低4位大于9或辅助进位位Ac=1,则进行低4位加6修正;
b) 高4位大于9或进位位Cy=1,则进行高4位加6修正;
c) 高4位大于9, 低4位大于9, 则高4位和低4位分别加6修正;是否加6是通过执行指令 DA A 来自动实现的。
5、带借位的减法指令(注意:减法只有带借位的)
SUBB A, R(A)-(Rn)- Cy→A,n=0~7
SUBB A, (A)-(direct)- Cy→A
SUBB A, @R(A)-((Ri))- Cy→A, i=0,1
SUBB A, #(A)-#data - Cy→A
A的内容减去源和进位标志Cy的值,结果存在A中。
1、如果位7需借位,则Cy置1,否则清0;
2、如果位3需借位,则Ac置1 ,否则清0;
3、如果位6需借位而位7不需要借位,或者位7需借位,位6
不需借位,则溢出标志位OV置1,否则清0。
6、减1指令(C语言的--)
DEC A ;(A)-1→A
DEC Rn ;(Rn)-1→Rn,n=0~7
DEC direct ;(direct)-1→direct
DEC @Ri ;((Ri))-1→(Ri),i=0,1
1、减1指令不影响标志位。
2、增1/加1指令有INC DPTR,减1无DEC DPTR指令。
7、乘法指令
MUL AB ;A×B→BA
1、积的高字节在B中,低字节在A中;
2、如果积大于255,则置“1”溢出标志位OV
8、除法指令
DIV AB ;A/B→A(商),余数→B
如果B的内容为“0”(即除数为“0”),则存放结果的A、B中的内容不定,并置“1”溢出标志位OV。
五、左环移指令RL A
A的内容向左环移一位,Acc.7移入Acc.0 ,不影响标志。
六、带进位左环移指令RLC A
累加器A的内容和进位标志位Cy一起向左环移一位,Acc.7移入进位位Cy,Cy移入Acc.0,不影响其它标志。
七、右环移指令RR A
累加器A的内容向右环移一位,Acc.0移入Acc.7,不影响标志。
八、带进位环移指令RRC A
累加器A的内容和进位标志Cy一起向右环移一位,Acc.0移入Cy,Cy移入Acc.7。不影响其它标志。
九、逻辑与指令
ANL A, R (A)∧(Rn)→A,n=0~7
ANL A, (A)∧(direct)→A
ANL A, # (A)∧#data→A
ANL A, @R (A)∧((Ri))→A,i=0~1
ANL direct, A ; (direct)∧(A)→direct
ANL direct, # (direct)∧#data→direct
ORL A, Rn ;(A) ∨(Rn)→A ,n=0~7
ORL A, direct ;(A) ∨(direct)→A
ORL A, #data ;(A) ∨data→A
ORL A, @Ri ;(A) ∨((Ri))→A,i=0,1
ORL direct, A ;(direct) ∨(A)→direct
ORL direct, #data ;(direct) ∨#data→direct
十一、逻辑异或指令
XRL A, Rn ;(A) ⊕(Rn)→A
XRL A, direct ;(A) ⊕(direct)→A
XRL A, @Ri ;(A) ⊕((Ri))→A ,i=0,1
XRL A, #data ;(A) ⊕#data→A
XRL direct, A ;(direct) ⊕(A)→direct
XRL direct, #data ;(direct) ⊕#data →direct
与1相与取反,与0相与不变。
单片机系统指令控制转移指令
一、指令 AJMP addrll (2字节指令)
2K(地址211)范围内的无条件跳转指令。
64K空间分为32个区,每区2K字节,转移的目标地址必须与AJMP下一条指令的地址高5位A15-A11相同。
指令执行时,先PC加2,然后把addrll送入PC.10~PC.0,
PC.15~PC.11保持不变,程序转移到目标地址。
注意:转移目标首地址必须在AJMP指令下一条指令地址(PC+2)的2KB范围内。
二、长跳转指令 LJMP addr16 (3指令)
64K范围内的无条件跳转指令。
指令执行时,把指令的第二和第三分别装入PC的高位和低位字节中,无条件地转向addr16指出的目标地址。
目标地址可以在64K程序存储器地址空间的任何位置。
注意:短跳转、长跳转指令中addrll、addr16直接写上要转向的目标地址标号(即符号地址)就可以。
三、相对转移指令 SJMP rel (双字节)
rel为8位带符号二进制补码数(-128~+127),实现程序的双向转移。
在编写程序时,直接写上要转向的目标地址标号就可以。
四、间接跳转(散转)指令JMP @A+DPTR (三)
由A中8位无符号数与DPTR的16位数内容之和来确定。以DPTR内容作为基址,A的内容作。
五、条件转移指令 (双字节)
JZ rel ; 如果累加器为“0”,则转移
JNZ rel; 如果非“0”,则转移
六、比较不相等转移指令(3字节指令)
CJNE A, direct, rel
CJNE A, #data, rel
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
1、比较前面两个()的大小,如果不相等则
转移,若相等则下一条指令。
2、如果第一小于第二操作数, 则Cy标志位置1, 否则清0。
如常把CJNE 第一, 第二操作数, $+3
和JNC rel或JC rel 写在一块来判别2个数的大小。
$:本条指令在程序存储单元的首地址;
$+3:CJNE指令的下一条指令,即JNC rel或JC rel
七、减1不为0转移指令
DJNZ Rn,n=0~7
DJNZ direct, rel
将源内容减1,结果回送到Rn寄存器或direct中去。如果源内容不为0则转移,为0则下一条指令。
主要用于控制程序循环。
1、把Rn或内部RAM的direct单元用作程序循环计数器
2、以减1后是否为“0”作为转移条件,实现按次数控制循环
八、调用、返回指令
1、短调用指令 ACALL addr11 (双字节)
2K范围内的调用。
2、长调用指令 LCALL addr16 (三字节)
64K范围内的调用。
执行本指令时:
(1)断点地址(调用指令的下一条指令的首地址PC+2或PC+3)
(SP)+1→SP,然后PCL →(SP)
(SP)+1→SP,然后PCH →(SP)
(2)将首地址送入PC,执行子程序
3、返回指令 RET
断点地址恢复
(SP) →PCH,(SP) - 1→SP
(SP) →PCL ,(SP) - 1→SP
功能:从中退出PC的高8位和低8位字节,把栈指针减2,从PC值开始继续执行程序。不影响标志位。
与相似,不同之处在于断点地址恢复,清除时被置“1”的51内部寄存器的优先级状态。
是编程时就已确定的固定位置调用,而中断服务子程序是由控制在特定条件下随机调用的。
九、空操作指令 NOP,消耗1个的时间
单片机系统指令位操作指令
一、传送指令
如MOV C,06H ;(20H).6→Cy
06H是内部RAM 20H字节位6的位地址。
MOV P1.0,C ;Cy→P1.0
可寻址位的具体定义:从20H单元的第一位开始一直到2FH单元的最后一位分别为00H~7FH以及中80H~F7H。
二、位变量修改指令
CLR C ;清“0”Cy
CLR bit ;清“0”bit位
CPL C ;Cy求反
CPL bit ;bit位求反
SETB C ;置“1” Cy
SETB bit ;置“1”bit位
三、位变量逻辑与指令
ANL C,bit ;bit ∧Cy →Cy
ANL C,/bit; ;/ bit ∧Cy →Cy
四、位指令
ORL C,bit ;bit ∨ Cy →Cy
ORL C,/bit ;/ bit ∨ Cy →Cy
五、条件转移类指令
JC rel ;如果进位位Cy=1,则转移
JNC rel ;如果进位位Cy=0,则转移
JB bit,rel ;如果位=1,则转移
JNB bit,rel ;如果位=0,则转移
JBC bit,rel ;如果位=1,则转移,并对bit位清0实验三&&查表、多分支(80C51单片机汇编语言编程)
&&设一表格,表中数为:00H、11H、22H……FFH,将片内00H单元中的低4位放到片外0000H中(0000H中的高4位为0),高4位放到片外0001H中(0001H中的高4位为0),根据0000H中的数取出表中相应的值存到片内30H中;根据0001H中的数跳到相应的处理程序中,在处理程序中,把相应的位地址置1。
START:MOV DPTR,#0000H;
MOV A,#00H
MOVX @DPTR,A
MOVX @DPTR,A
MOV DPTR,#00H;将片内00H中的值拆分放入片外相应位置
MOV R1,#00H
ANL A,#0FH
MOVX @DPTR,A
ANL A,#0F0H
MOVX @DPTR,A
MOV DPTR,#0000H;相应值赋给30H
MOVX A,@DPTR
MOV DPTR,#TABLE;指向表格的首地址
MOVC A,@A+DPTR
MOV DPTR,#0001H;散转
MOV 20H,#00H;置位前先将20H清零
MOVX A,@DPTR
MOV R1,A;LJMP;A变为3倍
MOV DPTR,#TAB
JMP @A+DPTR
&TAB: LJMP PM0
PM0:SETB 00H
PM1:SETB 01H
PM2:SETB 02H
PM3:SETB 03H
PM4:SETB 04H
PM5:SETB 05H
PM6:SETB 06H
PM7:SETB 07H
PM8:SETB 08H
PM9:SETB 09H
&&&&&&&JMP
PMA:SETB 0AH
PMB:SETB 0BH
PMC:SETB 0CH
PMD:SETB 0DH
PME:SETB 0EH
PMF:SETB 0FH
00H,11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH
&& AA:SJMP $
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 mov movc movx 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信