单片机汇编指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机汇编指令
单片机汇编指令:为解决某些特定的问题代码中必须嵌入汇编语言以代替C语言完成的单片机的编程,汇编语言对于程序调试是不可或缺的。它包括:数据传送类指令,算术运算类指令,逻辑运算与循环类指令,控制转移类指令,位操作(布尔操作)类指令。
现在单片机的编程大多是C语言完成但有时代码中必须嵌入汇编语言解决某些特定的问题,对于程序调试汇编语言更是不可或缺
一.数据传送类指令:
(1)一般传送指令:
①8位传送:
1 MOV A,Rn ;A←(Rn):寄存器内容送入累加器
2 MOV A,direct ;A←(direct):直接地址单元中的数据送入累加器
3 MOV A,@Ri ;A←((Ri)):间接RAM 中的数据送入累加器
4 MOV A,#data ;A←(data):立即数送入累加器
5 MOV Rn,A ;Rn←(A):累加器内容送入寄存器
6 MOV Rn,direct ;Rn←(direct):直接地址单元中的数据送入寄存器
7 MOV Rn,#data ;Rn←(data):立即数送入寄存器
8 MOV direct,A ;direct←(A):累加器内容送入直接地址单元
9 MOV direct,Rn ;direct←(Rn):寄存器内容送入直接地址单元
10 MOV direct,direct;direct←(direct):直接地址单元中的数据送入另一个直接地址单元
11 MOV direct,@Ri ;direct←(@Ri):间接RAM 中的数据送入直接地址单元
12 MOV direct,#data ;direct←(data):立即数送入直接地址单元
13 MOV @Ri,A;Ri←(A):累加器内容送入间接RAM 单元
14 MOV @Ri,direct ;Ri←(direct)直接地址单元数据送入间接RAM 单元
15 MOV @RI,#data ;Ri←(data):立即数送入间接RAM 单元
②16位传送:
16 MOV DRTR,#data16 ;(DRTR) ←(data16):16 位立即数送入地址寄存器
(2)特殊传送指令:
⑤
①读取常数表:
17 MOVC A,@A+DPTR ;A←((A)+(DPTR)):以DPTR为基地址变址寻址单元中的数据送入累加器
18 MOVC A,@A+PC;A←((A)+(PC)):以PC 为基地址变址寻址单元中的数据送入累加器
②读写片外RAM及接口单元数据:
读片外RAM:
19 MOVX A,@Ri ;A←((Ri)):外部RAM(8 位地址)送入累加器
20 MOVX A,@DPTR ;A←((DPTR)):外部RAM(16 位地址)送入累加器
写片外RAM:
21 MOVX @Ri,A ; (Ri)←(A):累计器送外部RAM(8 位地址)
22 MOVX @DPTR,A ;(DPTR)←(A):累计器送外部RAM(16 位地址)
③堆栈操作指令:
23 PUSH direct;SP←(SP),(SP)←(direct)直接地址单元中的数据压入堆栈
24 POP direct ;(direct)←((SP)), SP←(SP)-1:弹栈送直接地址单元
④数据交换指令:
字节交换:
25 XCH A,Rn ;(A)←→(Rn):寄存器与累加器交换
26 XCH A,direct ;(A)←→(direct):直接地址单元与累加器交换
27 XCH A,@Ri; (A)←→(Ri):间接RAM 与累加器交换
半字节交换:
28 XCHD A,@Ri ;((Ri).3~(Ri).0) ←→(ACC.3~ACC.0):间接RAM 的低半字节与累加器的弟半字节交换
29 SWAP A ;(ACC.7~ACC.4)←→(ACC.3~ACC.0):累加器的高低4位互换
二.算术运算类指令:
(1)不带进位加法:
1 ADD A,Rn ;A←(A)+(Rn):寄存器内容加到累加器
2 ADD A,direct;A←(A)+(direct):直接地址单元的内容加到累加器
3 ADD A,@Ri;A←(A)+((Ri)):间接ROM 的内容加到累加器
4 ADD A,#data;A←(A)+ data:立即数加到累加器
(2)带进位加法:
5 ADDC A,Rn ;A←(A)+(Rn)+(CY):寄存器内容带进位加到累加器
6 ADDC A,direct;A←(A)+(direct)+(CY):直接地址单元的内容带进位加到累加器
7 ADDC A,@Ri ;A←(A)+((Ri))+(CY):间接ROM 的内容带进位加到累加器
8 ADDC A,#data;A←(A)+ data+(CY):立即数带进位加到累加器
(3)加1:
9 INC A;A←(A)+1:累加器加1
10 INC Rn;A←(Rn)+1:寄存器加1
11 INC direct;A←(direct)+1:直接地址单元加1
12 INC @Ri;(Ri)←((Ri))+1:间接RAM 单元加1
13 INC DPTR;DPTR←(DPTR)+1:地址寄存器DPTR 加 1
(4)十进制调整:
DA A;调整A的内容为正确的BCD码
(5)带借位减法:
14 SUBB A,Rn ;A←(A)-(Rn)-(CY):累加器带借位减寄存器内容