8051的指令系统.docx
文本预览下载声明
8051的指令系统指令是指示计算机执行某些操作的命令;指令系统是CPU所能执行的全部指令的集合,标准MSC51有111条指令;一条指令是机器语言的一个语句,一般包括操作码字段和操作数字段;对于不同的指令,指令字节数可能不同,8051的指令可以是1,2,3字节指令;一条汇编指令由助记符、操作数和寻址方式构成寻址方式寻址方式就是根据指令给出的地址寻找真是操作数地址的方式。8051有7种寻址方式MCS51提供7种寻址方式寄存器寻址:地址部分给出的某寄存器编号,寄存器内容为操作数直接寻址:地址部分直接给出操作数存放地址寄存器间址:寄存器内容为操作数的存放地址立即寻址:指令中的地址部分就为操作数变址寻址:指定的编制寄存器内容和指令中的偏移量相加结果为操作数的存放地址相对寻址:当前PC值与指令中偏移量相加位寻址:操作数为二进制数的某一位MCS51的指令系统Rn:工作寄存器,可以是R0-R7中的一个;Ri:工作寄存器中的R0或R1;#data8: 8位常数;#data16: 16位常数;addr16:16位目标地址addr11: 11位目标地址rel:带符号的8位偏移地址bit:位地址;direct:直接地址数据传送指令(共29条)数据传送指令不影响CY,AC,OV(pop PSW除外)。传送指令可分为:以累加器为目的操作数的指令MOV A,Rn; n=0~7,将Rn中的数送到A中MOV A,direct;将内部RAM单元或SFR的数据送到A中MOV A,@Ri;i=0,1。将内部RAM单元的数据送到A中MOV A,#data;将立即数送入A中2. 以Rn为目的操作数的指令MOV Rn,A;将A中的数送到寄存器中MOV Rn,direct;将内部RAM或SFR中的数据送到寄存器中MOV Rn,#data;n=0~7,将立即数送到寄存器中以直接地址为目的操作数的指令MOV direct,A MOV direct,Rn MOV direct,@Ri MOV direct,#data 以寄存器间接地址为目的操作数的指令MOV @Ri,A MOV @Ri,direct MOV @Ri,#data 16位数据传送指令MOV DPTR,#data16;将16位立即数送到DPTR中堆栈操作指令PUSH direct;(SP)←(SP)+1,((SP))←(direct)POP direct;(direct)← ((SP)) ,(SP)←(SP)-1累加器A与外部数据存储器之间的传送指令MOVX A,@Ri;将外部RAM单元中的数据送到A中MOVX @DPTR,A;将A中的数据送到外部数据存储器中MOVX A,@DPTR;将外部存储器中数据送到A中MOVX @Ri,A;将A中的数据送到外部数据存储器中查表指令MOVC A,@A+DPTR;将程序存储器单元中的数据送到A中MOVC A,@A+PC;将程序存储器单元中的数据送到A中字节交换指令XCH A,Rn;A与Rn中的数据交换XCH A,direct;A与(direct)中的数据交换XCH A,@Ri:A与Ri所指向的单元的数据交换XCHD A,@Ri;A与Ri所指向的单元的数据的低4位交换累加器A低4位与高4位交换指令SWAP A;ACC的低4位与高4位交换算术操作指令MSC51系列单片机的算术操作指令可分为加法、带进位加法、带借位减法、加1、减1以及其他运算指令共六组,每组四条指令。除最后一组外(加1、减1以及其他运算指令),每组的四条指令的源操作数分别采用寄存器寻址、直接寻址、寄存器间址以及立即寻址,而且目的操作数都为A。加法指令ADD A,Rn; (A)←(A)+(Rn)ADD A,direct; (A)←(A)+(direct)ADD A,@Ri; (A)←(A)+((Ri))ADD A,#data; (A)←(A)+data无论哪一条指令,参加运算的都是两个8位二进制数。对于使用者而言,这8位二进制数可以看成无符号数,也可以看成带符号数,这完全由使用者决定。但计算机总是按一下规则进行:⑴在求和时,总是将操作数直接相加,不做任何变换;⑵在相加过程中,当D6到D7有进位,而D7到CY无进位;或D6到D7无进位,但D7到CY有进位,均可以使OV=1;⑶加法指令还可以影响辅助进位标志AC和奇偶标志P。带进位加法指令ADDC A,Rn;(A)←(A)+(Rn)+(CY)ADDC A,direct;(A)←(A)+(direct) +(CY)ADDC A,@Ri;(A)←(A)+((Ri)) +(CY)ADDC A,#data;(A)←(A)+#data+(CY)这类加法指令除了指令中作规定的两个操作数相加外,还要加上
显示全部