资源预览内容
第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
第9页 / 共13页
第10页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
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 码的运算和调整,我们都归类为运算指令。虽然 MCS-51 单片机的算术逻辑单元 ALU 仅能对 8 位无符号整数进行运算,但利用进位标志 C,则可进行多字节无符号整数的运算。同时利用溢出标志,还可以对带符号数进行补码运算。需要指出的是,除加、减 1 指令外,这类指令大多数都会对 PSW(程序状态字)有影响。这在使用中应特别注意。 1. 加法指令(4 条) 这 4 条指令的作用是把立即数,直接地址、工作寄存器及间接地址内容与累加器 A 的内容相加,运算结果存在 A 中。 ADD A,#data ;(A)+#data (A ) 累加器 A 中的内容与立即数 #data 相加,结果存在 A 中 ADD A,data ;(A)+(data)(A ) 累加器 A 中的内容与直接地址单元中的内容相加,结果存在 A 中 ADD A,Rn ;(A)+(Rn )(A ) 累加器 A 中的内容与工作寄存器 Rn 中的内容相加,结果存在 A 中 ADD A,Ri ;(A)+ (Ri) )(A ) 累加器 A 中的内容与工作寄存器 Ri 所指向地址单元中的内容相加,结果存在 A 中 2. 带进位加法指令(4 条) 这 4 条指令除与1功能相同外,在进行加法运算时还需考虑进位问题。 ADDC A,data ;(A)+ (data)+(C)(A) 累加器 A 中的内容与直接地址单元的内容连同进位位相加,结果存在 A 中ADDC A,#data ;(A)+#data +(C)(A) 累加器 A 中的内容与立即数连同进位位相加,结果存在 A 中 ADDC A,Rn ;( A)+Rn+(C)(A) 累加器 A 中的内容与工作寄存器 Rn 中的内容、连同进位位相加,结果存在 A 中 ADDC A,Ri ;(A)+(Ri) )+(C )(A) 累加器 A 中的内容与工作寄存器 Ri 指向地址单元中的内容、连同进位位相加,结果存在 A 中 3. 带借位减法指令(4 条) 这组指令包含立即数、直接地址、间接地址及工作寄存器与累加器 A 连同借位位 C 内容相减,结果送回累加器 A 中。 这里我们对借位位 C 的状态作出说明,在进行减法运算中,CY=1 表示有借位,CY=0 则无借位。OV=1 声明带符号数相减时,从一个正数减去一个负数结果为负数,或者从一个负数中减去一个正数结果为正数的错误情况。在进行减法运算前,如果不知道借位标志位 C 的状态,则应先对 CY 进行清零操作。 SUBB A,data ;(A)-(data) - (C)(A) 累加器 A 中的内容与直接地址单元中的内容、连同借位位相减,结果存在 A 中 SUBB A,#data ;(A)-#data -(C)(A) 累加器 A 中的内容与立即数、连同借位位相减,结果存在 A 中 SUBB A,Rn ;(A)-(Rn) -(C)(A ) 累加器 A 中的内容与工作寄存器中的内容、连同借位位相减,结果存在 A 中 SUBB A,Ri ;(A)-(Ri) ) -(C)(A) 累加器 A 中的内容与工作寄存器 Ri指向的地址单元中的内容、连同借位位相减,结果存在 A 中 4. 乘法指令(1 条) 这个指令的作用是把累加器 A 和寄存器 B 中的 8 位无符号数相乘,所得到的是 16 位乘积,这个结果低 8 位存在累加器 A,而高 8 位存在寄存器 B 中。如果 OV=1,说明乘积大于FFH,否则 OV=0,但进位标志位 CY 总是等于 0。 MUL AB ;(A)(B)(A)和(B ) 累加器 A 中的内容与寄存器 B 中的内容相乘,结果存在 A、B 中 5. 除法指令(1 条) 这个指令的作用是把累加器 A 的 8 位无符号整数除以寄存器 B 中的 8 位无符号整数,所得到的商存在累加器 A,而余数存在寄存器 B 中。除法运算总是使 OV 和进位标志位 CY等于 0。如果 OV=1,表明寄存器 B 中的内容为 00H,那么执行结果为不确定值,表示除法有溢出。 DIV AB ;(A)(B)(A )和(B) 累加器 A 中的内容除以寄存器 B 中的内容,所得到的商存在累加器 A,而余数存在寄存器 B 中。 6. 加 1 指令(5 条) 这 5 条指令的的功能均为原寄存器的内容加 1,结果送回原寄存器。上述提到,加 1 指令不会对任何标志有影响,如果原寄存器的内容为 FFH,执行加 1 后,结果就会是 00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式: INC A ;(A)+1(A) 累加器 A 中的内容加 1,结果存在 A 中 INC data ;(data)+1 (data) 直接地址单元中的内容加 1,结果送回原地址单元中 INC Ri ;(Ri ) )+1(Ri) ) 寄存器的内容指向的地址单元中的内容加 1,结果送回原地址单元中 INC Rn ;(Rn )+1 (Rn)寄存器 Rn 的内容加 1,结果送回原地址单元中 INC DPTR ;(DPTR)+1( DPTR)数据指针的内容加 1,结果送回数据指针中 在 INC data 这条指令中,如果直接地址是 I/O,其功能是先读入 I/O 锁存器的内容,然后在 CPU 进行加 1 操作,再输出到 I/O 上,这就是“读修改写”操作。 7. 减 1 指令(4 条) 这组指令的作用是把所指的寄存器内容减 1,结果送回原寄存器,若原寄存器的内容为 00H,减 1 后即为 FFH,运算结果不影响任何标志位,这组指令共有直接、寄存器、寄存器间址等寻址方式,当直接地址是 I/O 口锁存器时, “读修改写”操作与加1 指令类似。 DEC A ;(A)-1(A
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号