|
目前在學AVR,主要還是以C為主,但是也希望能懂一些匯編的語句,就找了一些常用語句,一起記憶。
一、算術和邏輯指令
1、加法指令
不帶進位位加法:ADD Rd,Rr
帶進位位加法:ADC Rd,Rr
字加立即數:ADIW Rdl,K
增1指令:INCRd
2、減法指令
不帶進位位減法:SUB Rd,Rr
減立即數(字節):SUBI Rd,K
帶進位位減法SBC :Rd,Rr
帶進位位減立即數(字節):SBCI Rd,K
減立即數(字):SBIW Rdl,K
減1指令:DECRd
3、取反碼指令
COM Rd
4、取補碼指令
NEG Rd
5、比較指令
寄存器比較:CP Rd,Rr
帶進位比較:CPC Rd,Rr
與立即數(字節)比較:CPI Rd,K
6、邏輯“與”指令
寄存器邏輯“與”:AND Rd,Rr
“與”立即數(字節):ANDI Rd,K
寄存器位清零:CBR Rd,K
測試寄存器為零或負:TST Rd
7、邏輯“或”指令
寄存器邏輯“或”:OR Rd,Rr
“或”立即數(字節):ORI Rd,K
置寄存器位:SBR Rd,K
置寄存器為$FF:SER Rd
8、邏輯“異或”指令
寄存器“異或”:EOR Rd,Rr
寄存器清零:CLR Rd
9、乘法指令
無符號數乘法:MUL Rd,Rr
有符號數乘法:MULS Rd,Rr
有符號數與無符號數乘法:MULSU Rd,Rr
無符號定點小數乘法:FMUL Rd,Rr
有符號定點小數乘法:FMULS Rd,Rr
有符號定點小數和無符號定點小數乘法:FMULSURd,Rr
二、跳轉指令
1、無條件跳轉指令
相對跳轉:RJMP k
間接跳轉:IJMP
直接跳轉:JMP k
2、條件跳轉指令
①測試條件符合跳轉指令
狀態寄存器中位為“1”跳轉:BRBS s,k
狀態寄存器中位為“0”跳轉:BRBC s,k
相等跳轉:BREQ k
不相等跳轉:BRNE k
進位標志位C為“1”跳轉:BRCS k
進位標志位C為“0”跳轉:BRCC k
大于或等于跳轉(對無符號數):BRSH k
小于跳轉:BRLO k
結果為負跳轉:BRMI k
結果為正跳轉:BRPL k
大于或等于跳轉(帶符號數):BRGE k
小于跳轉(帶符號數):BRLT k
半進位標志H為“1”跳轉:BRHS k
半進位標志H為“0”跳轉:BRHC k
T標志為“1”跳轉:BRTS k
T標志為“0”跳轉:BRTC k
溢出標志V為“1”跳轉:BRVS k
溢出標志V為“0”跳轉:BRVC k
中斷標志I為“1”跳轉:BRIE k
中斷標志I為“0”跳轉:BRID k
②測試條件符合跳行跳轉指令
相等跳行:CPSE Rd,Rr
寄存器位為“1”跳行:SBRS Rr,b
寄存器位為“0”跳行:SBRC Rr,b
I/O寄存器位為“1”跳行:SBIS P,b
I/O寄存器位為“0”跳行:SBIC P,b
3、子程序調用和返回指令
相對調用:RCALL k
間接調用:ICALL
直接調用:CALL k
從子程序返回:RET
從中斷程序返回:RETI
三、數據傳送指令
1、直接尋址數據傳送指令
工作寄存器間傳送數據:MOV Rd,Rr
SRAM數據直接送寄存器:LDS Rd,k
寄存器數據直接送SRAM:STS k,Rr
立即數送寄存器:LDI Rd,K
2、間接尋址數據傳送指令
①使用X指針寄存器間接尋址傳送數據
使用地址指針寄存器X間接尋址將SRAM內容裝入到指定寄存器:
LD Rd,X
LD Rd,X+
LD Rd,-X
使用地址指針寄存器X間接尋址將寄存器內容存儲到SRAM:
ST X,Rr
ST X+,Rr
ST –X,Rr
②使用Y指針寄存器間接尋址傳送數據
使用地址指針寄存器Y間接尋址將SRAM內容裝入到指定寄存器:
LD Rd,Y
LD Rd,Y+
LD Rd,-Y
LDD Rd,Y+q
使用地址指針寄存器Y間接尋址將寄存器內容存儲到SRAM:
ST Y,Rr
ST Y+,Rr
ST –Y,Rr
STD Y+q,Rr
③使用Z指針寄存器間接尋址傳送數據
使用地址指針寄存器Y間接尋址將SRAM內容裝入到指定寄存器:
LD Rd,Z
LD Rd,Z+
LD Rd,-Z
LDD Rd,Z+q
使用地址指針寄存器Y間接尋址將寄存器內容存儲到SRAM:
ST Z,Rr
ST Z+,Rr
ST –Z,Rr
STD Z+q,Rr
3、從程序存儲器中取數裝入寄存器指令
從程序存儲器中取數裝入寄存器R0:LPM
從程序存儲器中取數裝入寄存器Rd:LPM Rd,Z
帶后增量的從程序存儲器中取數裝入寄存器Rd:LPM Rd,Z+
4、寫程序存儲器指令
寫程序存儲器:SPM
5、I/O口數據傳送指令
I/O口數據裝入寄存器:IN Rd,P
寄存器數據送I/O口:OUT P,Rr
6、堆棧操作指令
進棧指令:PUSH Rr
出棧指令:POP Rd
四、位操作和位測試指令
1、帶進位邏輯操作指令
寄存器邏輯左移:LSL Rd
寄存器邏輯右移:LSR Rd
帶進位位的寄存器邏輯循環左移:ROL Rd
帶進位位的寄存器邏輯循環右移:ROR Rd
寄存器算術右移:ASR Rd
寄存器半字節交換:SWAP Rd
2、位變量傳送指令
寄存器中的位存儲到SREG中的T標志:BST Rr,b
SREG中的T標志位值裝入寄存器Rd中的某一位:BLD Rd,b
3、位變量修改指令
狀態寄存器SREG的指定位置位:BSET s
狀態寄存器SREG的指定位清零:BCLR s
I/O寄存器的指定位置位:SBI P,b
I/O寄存器的指定位清零:CBI P,b
置進位位:SEC
清進位位:CLC
置負標志位:SEN
清負標志位:CLN
置零標志位:SEZ
清零標志位:CLZ
使能全局中斷位:SEI
禁止全局中斷位:CLI
置S標志位:SES
清S標志位:CLS
置溢出標志位:SEV
清溢出標志位:CLV
置T標志位:SET
清T標志位:CLT
置半進位標志:SEH
清半進位標志:CLH
五、MCU控制指令
空操作指令:NOP
進入休眠方式指令:SLEEP
清0看門狗計數器:WDR
|
-
-
AVR匯編指令.rar
2018-4-28 21:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
13.72 KB, 下載次數: 119, 下載積分: 黑幣 -5
評分
-
查看全部評分
|