单片机100多条指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS-51数据传送指令
数据传送指令共有29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志C,AC和OV,但可能会对奇偶标志P有影响。
[1]. 以累加器A为目的操作数类指令(4条)
这4条指令的作用是把源操作数指向的内容送到累加器A。有直接、立即数、寄存器和寄存器间接寻址方式:
MOV A,data ;(data)→(A)直接单元地址中的内容送到累加器A
MOV A,#data ;#data→(A)立即数送到累加器A中
MOV A,Rn ;(Rn)→(A)Rn中的内容送到累加器A中
MOV A,@Ri ;((Ri))→(A)Ri内容指向的地址单元中的内容送到累加器A
[2]. 以寄存器Rn为目的操作数的指令(3条)
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器Rn中。有直接、立即和寄存器寻址方式:
MOV Rn,data ;(data)→(Rn)直接寻址单元中的内容送到寄存器Rn中
MOV Rn,#data ;#data→(Rn)立即数直接送到寄存器Rn中
MOV Rn,A ;(A)→(Rn)累加器A中的内容送到寄存器Rn中
[3]. 以直接地址为目的操作数的指令(5条)
这组指令的功能是把源操作数指定的内容送到由直接地址data所选定的片内RAM中。有直接、立即、寄存器和寄存器间接4种寻址方式:
MOV data,data ;(data)→(data)直接地址单元中的内容送到直接地址单元
MOV data,#data ;#data→(data)立即数送到直接地址单元
MOV data,A ;(A)→(data)累加器A中的内容送到直接地址单元
MOV data,Rn ;(Rn)→(data)寄存器Rn中的内容送到直接地址单元
MOV data,@Ri ;((Ri))→(data)寄存器Ri中的内容指定的地址单元中数据送到直接地址单元
[4]. 以间接地址为目的操作数的指令(3条)
这组指令的功能是把源操作数指定的内容送到以Ri中的内容为地址的片内RAM中。有直接、立即和寄存器3种寻址方式:
MOV @Ri,data ;(data)→((Ri))直接地址单元中的内容送到以Ri中的内容为地址的RAM单元
MOV @Ri,#data ;#data→((Ri))立即数送到以Ri中的内容为地址的RAM单元
MOV @Ri,A ;(A)→((Ri))累加器A中的内容送到以Ri中的内容为地址的RAM单元
[5]. 查表指令(2条)
这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:
MOVC A,@A+DPTR ;((A))+(DPTR)→(A)表格地址单元中的内容送到累加器A 中
MOVC A,@A+PC ;((PC))+1→(A),((A))+(PC)→(A)表格地址单元中的内容送到累加器A中
[6]. 累加器A与片外数据存储器RAM传送指令(4条)
这4条指令的作用是累加器A与片外RAM间的数据传送。使用寄存器寻址方式:
MOVX @DPTR,A ;(A)→((DPTR))累加器中的内容送到数据指针指向片外RAM地址中
MOVX A, @DPTR ;((DPTR))→(A)数据指针指向片外RAM地址中的内容送到累加器A中
MOVX A, @Ri ;((Ri))→(A)寄存器Ri指向片外RAM地址中的内容送到累加器A中MOVX @Ri,A ;(A)→((Ri))累加器中的内容送到寄存器Ri指向片外RAM地址中
[7]. 堆栈操作类指令(2条)
这4类指令的作用是把直接寻址单元的内容传送到堆栈指针SP所指的单元中,以及把SP 所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,(SP)默认为07H,但一般都需要重新赋值,设置新的SP首址。入栈的第一个数据必须存放于SP+1所指存储单元,故实际的堆栈底为SP+1所指的存储单元。
PUSH data ;(SP)+1→(SP),(data)→(SP)堆栈指针首先加1,直接寻址单元中的数据送到堆栈指针SP所指的单元中
POP data ;(SP)→(data)(SP)-1→(SP),堆栈指针SP所指的单元数据送到直接寻址单元中,堆栈指针SP再进行减1操作
[8]. 交换指令(5条)
这5条指令的功能是把累加器A中的内容与源操作数所指的数据相互交换。
XCH A,Rn ;(A)←→(Rn)累加器与工作寄存器Rn中的内容互换
XCH A,@Ri ;(A)←→((Ri))累加器与工作寄存器Ri所指的存储单元中的内容互换XCH A,data ;(A)←→(data)累加器与直接地址单元中的内容互换
XCHD A,@Ri ;(A 3-0 )←→((Ri)3-0 )累加器与工作寄存器Ri所指的存储单元中的内容低半字节互换
SWAP A ;(A 3-0 )←→(A 7-4 )累加器中的内容高低半字节互换
[9]. 16位数据传送指令(1条)
这条指令的功能是把16位常数送入数据指针寄存器。
MOV DPTR,#data16 ;#dataH→(DPH),#dataL→(DPL)16位常数的高8位送到DPH,低8位送到DPL
MCS-51算术运算指令
算术运算指令共有24条,算术运算主要是执行加、减、乘、除法四则运算。另外MCS-51指令系统中有相当一部分是进行加、减1操作,BCD码的运算和调整,我们都归类为运算指