210 likes | 476 Views
C51 指令系统. Topeak@20080507. 数据传送指令. 以累加器 A 为目的操作数指令( 4 ) MOV A, data ;(data)->(A) MOV A, #data ;#data->(A) MOV A, Rn ;(Rn)->(A) MOV A,@Ri ;((Ri))->(A) 以寄存器 Rn 为目的操作数指令( 3 ) MOV Rn, data MOV Rn, #data MOV Rn, A. 数据传送指令(续). 以直接寻址为目的操作数指令( 5 ) MOV data, data MOV data, #data
E N D
C51 指令系统 Topeak@20080507
数据传送指令 • 以累加器A为目的操作数指令(4) • MOV A, data ;(data)->(A) • MOV A, #data ;#data->(A) • MOV A, Rn ;(Rn)->(A) • MOV A,@Ri ;((Ri))->(A) • 以寄存器Rn为目的操作数指令(3) • MOV Rn, data • MOV Rn, #data • MOV Rn, A
数据传送指令(续) • 以直接寻址为目的操作数指令(5) • MOV data, data • MOV data, #data • MOV data, A • MOV data, Rn • MOV data, @Ri • 以间接地址为目的操作数指令(3) • MOV @Ri, data • MOV @Ri, #data • MOV @Ri, A
数据传送指令(续) • 查表指令(2) • MOVC A, @A+DPTR ;((A))+(DPTR)(A) • MOVC A, @A+PC ;((A))+(PC)(A) • 累加器A与片外数据存储器RAM传送指令(4) • MOVX @DPTR, A • MOVX A, @DPTR • MOVX A, @Ri • MOVX @Ri, A • 堆栈操作指令(2) • PUSH data • POP data
数据传送指令(续) • 交换指令(5) • XCH A,Rn • XCH A, @Ri • XCH A, data • XCH A, @Ri ;(A3~0)((Ri)3~0) • SWAP A ;(A3~0)(A7~4) • 16位数据据传送指令(1) • MOV DPTR, #data16 ;#dataH(DPH), #dataL(DPL)
算术运算指令 • 加法指令(4) • ADD A, #data • ADD A, data • ADD A, Rn • ADD A, @Ri • 带进位加法指令(4) • ADDC A, #data • ADDC A, data • ADDC A, Rn • ADDC A, @Ri
算术运算指令(续) • 带借位减法指令(4) • SUBB A, #data • SUBB A, data • SUBB A, Rn • SUBB A, @Ri • 乘法指令(1) • MUL AB ;(A)*(B)(A),(B) • 除法指令(1) • DIV AB ;(A)/(B)(A),(A)%(B)(B)
算术运算指令(续) • 加1指令(5) • INC A • INC data • INC @Ri • INC Rn • INC DPTR
算术运算指令(续) • 减1指令(4) • DEC A • DEC data • DEC @Ri • DEC Rn • 十进制调整指令(1) • DA A ;跟在ADD或ADDC之后
逻辑运算和移位指令 • 循环移位指令(4) • RL A • RR A • RLC A • RRC A • 累加器半字节交换指令(1) • SWAP A • 求反指令(1) • CPL A • 清零指令(1) • CLR A
逻辑运算和移位指令(续) • 逻辑与操作指令(6) • ANL A, data • ANL data, #data • ANL A, #data • ANL A, Rn • ANL data, A • ANL A, @Ri
逻辑运算和移位指令(续) • 逻辑或操作指令(6) • ORL A, data • ORL data, #data • ORL A, #data • ORL A, Rn • ORL data, A • ORL A, @Ri
逻辑运算和移位指令(续) • 逻辑异或操作指令(6) • XRL A, data • XRL data, #data • XRL A, #data • XRL A, Rn • XRL data, A • XRL A, @Ri
控制转移指令 • 无条件转移指令(4) • LJMP addr16 • AJMP addr11 • SJMP rel • JMP @A+DPTR
控制转移指令(续) • 条件转移指令(8) • JZ rel ; A=0,(PC)+2+rel(PC) • JNZ rel ;A!=0 • CJNE A, data, rel ;A!=(data), (PC)+3+rel(PC) • CJNE A, #data, rel ;A!=#data • CJNE Rn, #data, rel ;Rn!=#data • CJNE @Ri, #data, rel ;@Ri!=#data • DJNZ Rn, rel;(Rn)-1(Rn), (Rn)!=0, (PC)+2+rel(PC) • DJNZ data, rel ;(data)-1(data),(data)!=0 • 判零跳转JZ,JNZ;减1非零跳转DJNZ;比较不等跳转CJNE
控制转移指令(续) • 子程序调用指令(4) • LCALL addr16 • ACALL addr11 • RET • RETI • 空操作指令(1) • NOP
位操作指令 • 位传送(2) • MOV C, bit • MOV bit, C • 位置位和清除(4) • SETB C • SETB bit • CLR C • CLR bit
位操作指令(续) • 位逻辑与运算 • ANL C, bit • ANL C, /bit • 位逻辑或运算 • ORL C, bit • ORL C, /bit • 位逻辑非运算 • CPL C • CPL bit
位操作指令(续) • 位条件转移(5) • JC rel ;若(CY)=1,则PC(PC)+rel • JNC rel ;若(CY)=0,则PC(PC)+rel • JB bit, rel ;若(bit)=1,则PC(PC)+rel • JNB bit, rel ;若(bit)=0,则PC(PC)+rel • JBC bit, rel ;若(bit)=1,则PC(PC)+rel且bit0
伪指令 • 汇编起始命令ORG • 汇编结束命令END • 等值命令EQU • 数据地址赋值命令DATA • 定义字节指令DB • 定义字命令DW • 定义空间命令DS • 位地址符号命令BIT