找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 9839|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

AVR單片機(jī)匯編指令的小合集

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

AVR匯編指令.rar

13.72 KB, 下載次數(shù): 119, 下載積分: 黑幣 -5

評分

參與人數(shù) 2黑幣 +60 收起 理由
zkele + 10 很給力!現(xiàn)在覺得用C的確方便移植!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表