导航:首页 > 操作系统 > 51单片机保护指令

51单片机保护指令

发布时间:2024-05-22 21:40:32

㈠ 51单片机的所有指令

单片机指令功能一览表
助记符 代码 说明
MOV A,Rn E8~EF 寄存器A
MOV A,direct E5 dircet 直接字节送A
MOV A,@Ri ER~E7 间接RAM送A
MOV A,#data 74 data 立即数送A
MOV Rn,A F8~FF A送寄存器
MOV Rn,dircet A8~AF dircet 直接字节送寄存器
MOV Rn,#data 78~7F data 立即数送寄存器
MOV dircet,A F5 dircet A送直接字节
MOV dircet,Rn 88~8F dircet 寄存器送直接字节
MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节
MOV dircet,@Ro 86~87 间接RAM送直接字节
MOV dircet,#data 75 dircet data 立即数送直接字节
MOV @Ri,A F6~F7 A送间接RAM
MOV @Ri,#data 76~77 data 直接字节送间接RAM
MOV @Ri,#data 76~77 data 立即数送间接RAM
MOV DPTR,#data16 90 data 15~8 16位常数送数据指针
data7~0
MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送A
MOVX A,@Ri E2~E3 送外部数据(8位地址)送A
MOVX A,@DPTR E0 送外部数据(16位地址)送A
MOVX @Ri,A F2~F3 A送外部数据(8位地址)
MOVX @DPTR,A F0 A送外部数据(16位地址)
PUSH dircet C0 dircet 直接字节进栈,SP加1
POP dircet D0 dircet 直接字节退栈,SP减1
XCH A,Rn C8~CF 交换A和寄存器
XCH A,dircet C5 dircet 交换A和直接字节
XCH A,@Ri C6~C7 交换A和间接RAM
XCH A,@Ri D6~D7 交换A和间接RAM的低位
SWAP A C4

算术操作 (A的二个半字节交换)
ADD A,Rn 28~2F 寄存器加到A
ADD A,dircet 25 dircet 直接字节加到A
ADD A,@Ri 26~27 间接RAM加到A
ADD A,#data 24data 立即数加到A
ADD A,Rn 38~3F 寄存器和进位位加到A
ADD A,dircet 35dircet 直接字节和进位位加到A
ADD A,@Ri 36~37 间接字节和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
ADD A,Rn 98~9F A减去寄存器和进位位
ADD A,dircet 95 dircet A减去直接字节和进位位
ADD A,@Ri 36~37 间接RAM和进位位加到A
ADD A,data 34 data 立即数和进位位加到A
SUBB A,Rn 98~9F A减去寄存器和进位位
SUBB A,dircet 95 dircet A减去直接字节和进位位
SUBB A,@Ri 96~97 A减去间接RAM和进位位
SUBB A,#data 94 data A减去立即数和进位位
INC A 04 A加1
INC Rn 08~0F 寄存器加1
INC dircet 05 dircet 直接字节加1
INC @Ri 06~07 间接RAM加1
DEC A 14 A减1
DEC Rn 18~1F 寄存器减1
DEC dircet 15 dircet 直接字节减1
DEC @Ri 16~17 间接RAM减1
INC DPTR A3 数据指针加1
MUL AB A4 A乘以B
DIV AB 84 A除以B
DA A D4 A的十进制加法调整

逻辑操作
ANL A,Rn 58~5F 寄存器“与”到A
ANL A,dircet 55 dircet 直接字节“与”到A
ANL A,@Ri 56~57 间接RAm“与”到A
ANL A,#data 54 data 立即数“与”到A
ANL dircet A 52 dircet A“与”到直接字节
ANL dircet,#data 53 dircet data 立即数“与”到直接字节
ORL A,Rn 48~4F 寄存器“或”到A
ORL A,dircet 45 dircet 直接字节“或”到A
ORL A,@Ri 46~47 间接RAM“或”到A
ORL A,#data 44 data 立即数“或”到A
ORL dircet,A 42 dircet A“或”到直接字节
ORL dircet,#data 43 dircet data 立即数“或”到直接字节
XRL A,Rn 68~6F 寄存器“异或”到A
XRL A,dircet 65 dircet 直接字节“异或”到A
XRL A,@Ri 66~67 间接RAM“异或”到A
XRL A,#data 64 data 立即数“异或”到A
XRL dircet A 62 dircet A“异或”到直接字节
XRL dircet,#data 63 dircet data 立即数“异或”到直接字节
CLR A E4 清零
CPL A F4 A取反
RL A 23 A左环移
RLC A 33 A通过进位左环移
RR A 03 A右环移
RRC A 13 A通过进位右环移

控制程序转移
ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用
LCALL addr 16 12 addr(15~8) 长子程序调用
addr(7~0)
RET 22 子程序调用返回
RETI addr 11 32 中断调用返回
AJMP addr 11 △1 addr(a7~a6) 绝对转移
LJMP addr 16 02addr(15~8) 长转移
addr(7~0)
SJMP rel 80 rel 短转移,相对转移
JMP @A+DPTR 73 相对于DPTR间接转移
JZ rel 60 rel A为零转移
JNZ rel 70 rel A为零转移
CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移
CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移
CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移
CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移
DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移
DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移
NOP 00 空操作
*=a10a9a8l
△=a10a9a80

布尔变量操作
CLR C C3 清零进位
CLR bit C2 清零直接位
SETB C D3 置位进位
SETB bit D2 置位直接位
CPL C B3 进位取反
CPL bit B2 直接位取反
ANL C,bit 82 dit 直接数“与”到进位
ANL C,/bit B0 直接位的反“与”到进位
ORL C,bit 72 bit 直接位“或”到进位
ORL C,/bit A0 bit 直接位的反“或”到进位
MOV C,bit A2 bit 直接位送进位
MOV bit,C 92 bit 进位送直接位
JC rel 40 rel 进位位为1转移
JNC rel 50 rel 进位位为0转移
JB bit,rel 20 bit rel 直接位为1相对转移
JNB bit,rel 30 bit rel 直接位为0相对转移
JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位

[1]. 循环移位指令(4条)
RL A ;累加器A中的内容左移一位
RR A ;累加器A中的内容右移一位
RLC A ;累加器A中的内容连同进位位CY左移一位
RRC A ;累加器A中的内容连同进位位CY右移一位

[2]. 累加器半字节交换指令(1条)
SWAP A ; 累加器中的内容高低半字节互换

[3]. 求反指令(1条)
CPL A ; 累加器中的内容按位取反

[4]. 清零指令(1条)
CLR A ; 0→(A),累加器中的内容清0

[5]. 逻辑与操作指令(6条)
ANL A,data ;累加器A中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器A中。
ANL data,#data ;直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。
ANL A,#data ;累加器A的内容和立即数执行与逻辑操作。结果存在累加器A中。
ANL A,Rn ;累加器A的内容和寄存器Rn中的内容执行与逻辑操作。结果存在累加器A中。
ANL data,A ;直接地址单元中的内容和累加器A的内容执行与逻辑操作。结果存在直接地址单元中。
ANL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行与逻辑操作。结果存在累加器A中。

[6]. 逻辑或操作指令(6条)
这组指令的作用是将两个单元中的内容执行逻辑或操作。如果直接地址是I/O地址,则为“读—修改—写”操作。

ORL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器A中。
ORL data,#data ;直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。
ORL A,#data ;累加器A的内容和立即数执行逻辑或操作。结果存在累加器A中。
ORL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑或操作。结果存在累加器A中。
ORL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑或操作。结果存在直接地址单元中。
ORL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑或操作。结果存在累加器A中。

[7]. 逻辑异或操作指令(6条)
XRL A,data ;累加器A中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在寄存器A中。
XRL data,#data ;直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。
XRL A,#data ;累加器A的内容和立即数执行逻辑异或操作。结果存在累加器A中。
XRL A,Rn ;累加器A的内容和寄存器Rn中的内容执行逻辑异或操作。结果存在累加器A中。

XRL data,A ;直接地址单元中的内容和累加器A的内容执行逻辑异或操作。结果存在直接地址单元中。
XRL A,@Ri ;累加器A的内容和工作寄存器Ri指向的地址单元中的内容执行逻辑异或操作。结果存在累加器A中

控制转移类指令分析

[1]. 无条件转移指令(4条)
LJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址)
AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变
SJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值
JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值

[2]. 条件转移指令(8条)
JZ rel ; A=0,(PC)+ 2 + rel→(PC),累加器中的内容为0,则转移到偏移量所指向的地址,否则程序往下执行
JNZ rel ; A≠0,(PC)+ 2 + rel→(PC),累加器中的内容不为0,则转移到偏移量所指向的地址,否则程序往下执行

CJNE A, data, rel ; A≠(data),(PC)+ 3 + rel→(PC),累加器中的内容不等于直接地址单元的内容,则转移到偏移量所指向的地址,否则程序往下执行
CJNE A, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE Rn, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Rn中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行
CJNE @Ri, #data, rel ; A≠#data,(PC)+ 3 + rel→(PC),工作寄存器Ri指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行

布尔变量操作指令分析

[1]. 位传送指令(2条)
MOV C,bit ;bit→CY,某位数据送CY
MOV bit,C ;CY→bit,CY数据送某位

[2]. 位置位复位指令(4条)
CLR C ; 0→CY,清CY
CLR bit ; 0→bit,清某一位
SETB C ; 1→CY,置位CY
SETB bit ; 1→bit,置位某一位

[3]. 位运算指令(6条)
ANL C,bit ;(CY)∧(bit)→CY
ANL C,/bit ;(CY)∧( )→CY
ORL C,bit ;(CY)∨(bit)→CY
ORL C,/bit ;(CY)∧()→CY
CPL C ;()→CY
CPL bit ;()→bir

[4]. 位控制转移指令(5)
JC rel ; (CY)=1转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JNC rel ; (CY)=0转移,(PC)+2+rel→PC,否则程序往下执行,(PC)+2→PC。
JB bit, rel ; 位状态为1转移。
JNB bit, rel ; 位状态为0转移。
JBC bit, rel ; 位状态为1转移,并使该位清“0”。

㈡ 51单片机怎么休眠

呵呵,最近刚好研究了一下这个问题 x0dx0ax0dx0a51单片机空闲和掉电模式应用x0dx0a 我们知道单片机内部有一个电源管理寄存器PCON,这个寄存器的最低两位,IDL和PD这两位分别用来设定是否使单片机进入空闲模式和掉电模式。x0dx0a 1. 空闲模式 当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。但假若定时器正在运行,那么计数器寄存器中的值还将会增加。单片机在空闲模式下可由任一个中断或硬件复位唤醒,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。???? 让单片机进入空闲模式的目的通常是为了降低系统的功耗,举个很简单的例子,大家都用过数字万用表,在正常使用的时候表内部的单片机处于正常工作模式,当不用时,又忘记了关掉万用表的电源,大多数表在等待数分钟后,若没有人为操作,它便会自动将液晶显示关闭,以降低系统功耗,通常类似这种功能的实现就是使用了单片机的空闲模式或是掉电模式。以STC89系列单片机为例,当单片机正常工作时的功耗通常为4mA~7mA,进入空闲模式时其功耗降至2mA,当进入掉电模式时功耗可降至0.1μA以下。x0dx0a2.?? 休眠模式 当单片机进入掉电模式时,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作。使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令,进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。可由外部中断低电平触发或由下降沿触发中断或者硬件复位模式换醒单片机,需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。【例】:开启两个外部中断,设置低电平触发中断,用定时器计数并且显示在数码管的前两位,当计到5时,使单片机进入空闲(休眠)模式,同时关闭定时器,当单片机响应外部中断后,从空闲(休眠)模式返回,同时开启定时器。程序代码如下:x0dx0a/************************************************************************x0dx0a************************************************************************/x0dx0a #define IdleMode() PCON |=0x01 //01为空闲模式x0dx0a // 当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状x0dx0a //芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。x0dx0a //但假若定时器正在运行,那么计数器寄存器中的值还将会增加。x0dx0a //单片机在空闲模式下可由任一个中断或硬件复位唤醒,x0dx0a //需要注意的是,使用中断唤醒单片机时,程序从原来停止处继续运行,当使用硬件复位唤醒单片机时,程序将从头开始执行。x0dx0a #define PowerOFF() PCON |=0x02 //02掉电模式x0dx0a //进入掉电模式,外部晶振停振、CPU、定时器、串行口全部停止工作,只有外部中断继续工作x0dx0a //使单片机进入休眠模式的指令将成为休眠前单片机执行的最后一条指令x0dx0a //进入休眠模式后,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据都将保持原值。x0dx0a //可通过外部中断唤醒,proteus仿真时无法唤醒x0dx0a #define EXT0_Init() EX0=1;EA=1 //打开外部中断,以方便唤醒。唤醒后程序从原来停止处继续运行x0dx0a //电源管理模板程序 x0dx0a main()x0dx0a{x0dx0a EXT0_Init();x0dx0a while(1) // x0dx0a {x0dx0a if(time.sec==0){time.sec++;PowerOFF();}x0dx0a //x0dx0a } x0dx0a}x0dx0a void EX0ISR(void) interrupt 0x0dx0a{x0dx0a //PCON&=0xfc; //清除之前的掉电(空闲)模式x0dx0a}

㈢ 简述MCS51单片机中程序状态寄存器PSW各位的含义。

PSW即程序状态寄存器,Program Status Word。
PSW各位的定义如下:
Cy(PSW.7):即PSW的D7位,进位、借位标志。进位、借位CY=1;否则CY=0.
AC(PSW.6):即PSW的D6位,辅助进位、借位标志。当D3向D4有借位或进位时,AC=1;否则AC=0.
F0(PSW.5及PSW.1):即PSW的D5位,用户标志位;
RS1及RS0(PSW.4及PSW.3):即PSW的D4、D3位,寄存器组选择控制位;
OV(PSW.2):溢出标志。有溢出OV=1,否则OV=0;
F1(PSW·1):保留位,无定义;
P(PSW·0):奇偶校验标志位,由硬件置位或清0;存在ACC中的运算结果有奇数个1时P=1,否则P=0。

㈣ 51单片机中MOV A,PSW这条指令对么 为什么请详细说明……

MOV A,PSW是对的,这个格式是直接寻址的形式。在MCS-51单片机中,直接寻址方式可以访问片内RAM低128和所有特殊功能寄存器,PSW属于特殊功能寄存器

㈤ 51单片机指令

TF1是定时器1溢出标志位,$是取地址。JNB TF1,$ 实现的功能是查询定时器1溢出标志位,如果为0,跳转到本条指令继续执行(即继续查询)直到定时时间到,TF1置位,才执行下一条指令。
给你注释一下:
MOV TMOD,#10H //设置定时器工作方式(定时器1,工作方式2)
SETB TR1 //开启定时器1
LOOP: MOV TH1,#0D8H //装初值D8F0H 即55536,定时10mS(晶振12M)时间随晶振改变
MOV TL1,#0F0H
JNB TF1,$ //查询等待定时器1中断
CLR TF1 //定时器溢出标志位清0(定时时间到后硬件自动给TF1置位,需软件清0)
CPL P1.1 //P1.1取反
SJMP LOOP //跳到LOOP处循环(是个死循环)
该段程序实现的功能是:每隔10mS对P1.1取反一次。(10mS当然是晶振为12M的情况下)

㈥ 单片机 psw是什么

程序状态寄存器PSW。
程序状态寄存器是计算机系统的核心部件——运算器的一部分,PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,如有无进位(CY位),有无溢出(OV位),结果正负(SF位),结果是否为零(ZF位),奇偶标志位(P位)等。
另一类是存放控制信息,如允许中断(IF位),跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(Flag
Register)。
51单片机的PSW是一个8位寄存器,用来存放指令执行后的一些的状态,通常由CPU来填写,但是用户也可以改变各状态位的值。
(6)51单片机保护指令扩展阅读
单片机技术的开发:
1、CPU开发。开发单片机中的CPU总线宽度,能够有效完善单片机信息处理功能缓慢的问题,提高信息处理效率与速度,开发改进中央处理器的实际结构,能够做到同时运行2-3个CPU,从而大大提高单片机的整体性能。
2、程序开发。嵌入式系统的合理应用得到了大力推广,对程序进行开发时要求能够自动执行各种指令,这样可以快速准确地采集外部数据,提高单片机的应用效率。
3、存储器开发。单片机的发展应着眼于内存,加强对基于传统内存读写功能的新内存的探索,使其既能实现静态读写又能实现动态读写,从而显着提高存储性能。
参考资料来源:网络-psw

㈦ 51单片机如何利用IAP实现数据掉电不丢失相应程序怎么写

IAP的方式是写入到程序Flash区保持数据不丢失

写之前要保证区域内没有会被执行到的程序。否则写入数据后会导致程序死机会不断重启。


支持IAP的单片机类型比较多,请提供具体型号


以IAP15F2K61S2为例(STC官方代码)

//IAP特殊功能寄存器:
sfrIAP_DATA=0xC2;//IAP数据寄存器
sfrIAP_ADDRH=0xC3;//IAP地址寄存器高字节
sfrIAP_ADDRL=0xC4;//IAP地址寄存器低字节
sfrIAP_CMD=0xC5;//IAP命令寄存器
sfrIAP_TRIG=0xC6;//IAP命令触发寄存器
sfrIAP_CONTR=0xC7;//IAP控制寄存器

//IAP工作模式
#defineCMD_IDLE0//空闲模式
#defineCMD_READ1//IAP字节读命令
#defineCMD_PROGRAM2//IAP字节编程命令
#defineCMD_ERASE3//IAP扇区擦除命令

//单片机运行频率
//#defineENABLE_IAP0x80//ifSYSCLK<30MHz
//#defineENABLE_IAP0x81//ifSYSCLK<24MHz
#defineENABLE_IAP0x82//ifSYSCLK<20MHz
//#defineENABLE_IAP0x83//ifSYSCLK<12MHz
//#defineENABLE_IAP0x84//ifSYSCLK<6MHz
//#defineENABLE_IAP0x85//ifSYSCLK<3MHz
//#defineENABLE_IAP0x86//ifSYSCLK<2MHz
//#defineENABLE_IAP0x87//ifSYSCLK<1MHz

//测试地址
#defineIAP_ADDRESS0x0400

/*----------------------------
扇区擦除
----------------------------*/
voidIapEraseSector(WORDaddr)//擦除扇区是以512字节为单位
{
IAP_CONTR=ENABLE_IAP;//使能IAP
IAP_CMD=CMD_ERASE;//设置IAP命令
IAP_ADDRL=addr;//设置IAP低地址
IAP_ADDRH=addr>>8;//设置IAP高地址
IAP_TRIG=0x5a;//写触发命令(0x5a)
IAP_TRIG=0xa5;//写触发命令(0xa5)
_nop_();//等待ISP/IAP/EEPROM操作完成
IapIdle();
}

/*----------------------------
写一字节数据到ISP/IAP区域
----------------------------*/
voidIapProgramByte(WORDaddr,BYTEdat)
{
IAP_CONTR=ENABLE_IAP;//使能IAP
IAP_CMD=CMD_PROGRAM;//设置IAP命令
IAP_ADDRL=addr;//设置IAP低地址
IAP_ADDRH=addr>>8;//设置IAP高地址
IAP_DATA=dat;//写ISP/IAP/EEPROM数据
IAP_TRIG=0x5a;//写触发命令(0x5a)
IAP_TRIG=0xa5;//写触发命令(0xa5)
_nop_();//等待ISP/IAP/EEPROM操作完成
IapIdle();
}

/*----------------------------
从ISP/IAP/EEPROM区域读取一字节
----------------------------*/
BYTEIapReadByte(WORDaddr)//由于在程序储存区内也可以用MOVC指令读取
{
BYTEdat;//数据缓冲区

IAP_CONTR=ENABLE_IAP;//使能IAP
IAP_CMD=CMD_READ;//设置IAP命令
IAP_ADDRL=addr;//设置IAP低地址
IAP_ADDRH=addr>>8;//设置IAP高地址
IAP_TRIG=0x5a;//写触发命令(0x5a)
IAP_TRIG=0xa5;//写触发命令(0xa5)
_nop_();//等待ISP/IAP/EEPROM操作完成
dat=IAP_DATA;//读ISP/IAP/EEPROM数据
IapIdle();//关闭IAP功能

returndat;//返回
}

/*----------------------------
关闭IAP
----------------------------*/
voidIapIdle()
{
IAP_CONTR=0;//关闭IAP功能
IAP_CMD=0;//清除命令寄存器
IAP_TRIG=0;//清除触发寄存器
IAP_ADDRH=0x80;//将地址设置到非IAP区域
IAP_ADDRL=0;
}

通过以上代码即可对Flash区进行写入操作

阅读全文

与51单片机保护指令相关的资料

热点内容
水刀自动编程 浏览:438
云服务器搭建智能助理 浏览:955
linuxqq如何安装 浏览:796
cad命名视图命令 浏览:281
招行app怎么看全部账号 浏览:473
我的世界18游戏世界服务器地址 浏览:293
linux设置可执行 浏览:345
程序员发展目标 浏览:572
黑马程序员为什么这么多免费课程 浏览:850
越南电影在线观看 浏览:287
kindeditorjava上传 浏览:889
数据结构和算法学习 浏览:735
印度电影《边境战争》 浏览:298
免费看的网站 浏览:612
接口上应用的命令 浏览:382
工藤瞳主要作品 浏览:608
51单片机安装 浏览:255
有发展前景编程语言 浏览:156
简约影视vip解析源码 浏览:219
上海app报价怎么投 浏览:614