久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1727|回復: 0
打印 上一主題 下一主題
收起左側

ARM常用匯編指令

[復制鏈接]
跳轉到指定樓層
樓主
ID:107189 發表于 2016-3-6 13:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
LDR STR——用于字和無符號字
指令格式
LDR/STR{cond}{T} Rd<地址>
LDR/STR{cond}B{T} Rd<地址>
LDR{cond}{T} Rd<地址> 加載指定地址的字數據到Rd中;
STR{cond}{T}  Rd<地址>    存儲Rd中的字數據到指定的地址單元中;
LDR{cond}B{T} Rd<地址>    指令加載指定地址的字節數據到Rd的的最低字節中(Rd的高24位清零);
STR{cond}B{T} Rd<地址>   指令存儲Rd中的最低字節數據到指定的地址單元中。
     T為可選后綴,若有T,那么即使處理器是在特權模式下,存儲系統也將訪問看成處理器是在用戶模式下,T 在用戶模式下無效,不能與前索引偏移一起使用T

地址部分可用的形式有4種:
  • 零偏移(zero offset) [Rn] Rn的值作為傳送數據的地址。如
    LDR R0,[R1]
  • 前索引偏移(pre-indexed offset) [RnFlexoffset]{!} 在數據傳送之前,將偏移量Flexoffset加到Rn 中。其結果作為傳送數據的存儲器地址。若使用后綴“!”,則結果寫回到Rn 中,且Rn 不允許是R15,如:
    LDRB R0,[R1,#8]
    LDR R0,[R1,#8]!
  • 程序相對偏移(program relative) label(label 必須是在當前指令的土4KB 范圍內) 。
    程序相對偏移是前索引形式的另一種版本。從PC 計算偏移量,并將PC 作為Rn 生成前索引指令,不能使用后綴“!”,如:
    LDR R0,place ;
    place地址裝入R0
  • 后索引偏移(post-indexed offset) [Rn],Flexoffset。在數據傳送后,將偏移量Flexoffset 加到Rn 中,結果寫回到Rn,Rn 不允許是R15,如:
    LDR R0,[R1],R2,LSL#2 ;
    將存儲器地址為R1 的字數據讀入寄存器R0,并將新地址R1+R2×4寫入R1。
    偏移量Flexoffset可以是下兩種形式之:
    1) 取值范圍是-4095 到+4095 的整數的表達式,經常是數字常量,如:
    STR R5,[R7],#--8
    2) 一個寄存器再加上移位(移位由立即數指定),如:
    {-}Rm{,shift}
    其中:
    - :可選負號。若帶符號“一”,則從Rn 中減去偏移量。否則,將偏移量加到Rn 中。
    Rm :內含偏移量的寄存器。Rm 不允許是R15
    Shift:Rm 的可選移位方法。可以是下列形式的任何一種:
    ASR n :算術右移n 位(1<=n<=32)
    LSL n :邏輯左移n 位(1<=n<=31)
    LSR n :邏輯右移n 位(1<=n<=32)
    ROR n :循環右移n 位(1<=n<=31)
    RRX :循環右移1 位,帶擴展。

AND―――――邏輯"與"操作指令
指令格式:

AND{cond}{S} Rd,Rn,operand2
AND指令將操作數operand2 與Rn 的值按位邏輯"與",結果存放到目的寄存器Rd 中。若設置S,則根據運算結果影響N、Z位,在計算第二操作數時,更新C位,不影響V位(指令ORR、EOR、BIC 對標志位的影響同AND 指令)。
指令示例:
ANDS R1,R1,R2 ;R1=R1&R2,并根據運算的結果更新標志位
AND R0,R0,#0x0F ;R0=R0&0x0F,取出R0最低4位數據。


ORR―――――邏輯"或"操作指令
指令格式:ORR{cond}{S} Rd,Rn,operand2 ORR指令將操作數operand2 與Rn 的值按位邏輯"或",結果存放到目的寄存器Rd 中。指令示例:
ORRS R1,R1,R2 ;R1=R1|R2,并根據運算的結果更新標志位

ORR R0,R0,#0x0F ;R0=R0|0x0F,將R0最低4位置1,其余位不變。

BIC―――――位清除指
指令格式
BIC{cond}{S} Rd,Rn,operand2
BIC指令將Rn 的值與操作數operand2 的反碼按位邏輯"與",結果存放到目的寄存器Rd 中。指令示例:BIC R0,R0,#0x0F ;將R0最低4位清零,其余位不變。

CMP―――――比較指令
指令格式:
CMP{cond} Rn,operand2
CMP指令用Rn的值減去操作數operand2 ,并將結果的狀態(Rn 與operand2比較是大、小、相等)反映在CPSR中,以便后面的指令根據條件標志決定程序的走向。CMP指令與SUBS指令完成的操作一樣,只是CMP指令只減,不存結果。
指令示例:
cmp R0,R1 ;比較R0,R1
beq stop ;R0=R1跳到stop
blt less ;R0<R1跳到Less


.
.
.


Less:
.
.
.
Stop:

.
.
.
SUB―――――減法運算指令
指令格式:
SUB{cond}{S} Rd,Rn,operand2 SUB指令用Rn 的值減去操作數operand2 ,并將結果存放到目的寄存器Rd 中。 指令示例:

SUBS R1,R1,R2 R1=R1-R2,并并根據運算的結果更新標志位
SUBGT R3,3,#1 ;大于則 R3=R3-
SUB R0,R2,R3,LSL#2; R0=R2-(R3<<2)

ARM分支指令
助記符
說明
操作
B{cond} lable
分支指令
PC← lable
BL{cond} lable
帶鏈接的分支指令
LR← PC-4 ,PC←lable
BX{cond} Rm
帶狀態切換的分支指令
PC← Rm,切換處理器狀態

指令的條件碼
條件碼助記符后綴標志含義
0000EQZ置位(Z=1)相等
0001NEZ清零(Z=0)不相等
0010CSC置位無符號數大于等于
0011CCC清零無符號數小于
0100MIN置位負數
0101PLN清零整數或0
0110VSV置位溢出
0111VCV清零未溢出
1000HIC置位且Z清零無符號數大于
1001LSZ置位且C清零無符號數小于等于
1010GEN等于V(N=V=1或N=V=0)帶符號數大于或等于
1011LTN不等于V帶符號數小于
1100GTZ清零且N等于V帶符號數大于
1101LEZ置位或N不等于V帶符號數小于或等于
1110AL忽略無條件執行




;GPIO寄存器宏定義
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058   

EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;該偽指令定義了一個代碼段,段名為LEDTESTASM,屬性只讀

LEDTEST
;設置GPF4-GPF7為output
ldr r0,=GPFCON
ldr r1,[r0]
bic r1,r1,#0xff00
orr r1,r1,#0x5500
str r1,[r0]

;禁止GPF4-GPF7端口的上拉電阻
ldr r0,=GPFUP
ldr r1,[r0]
orr r1,r1,#0xf0
str r1,[r0]

looptest
;將數據端口F的數據寄存器的地址附給寄存器r2
ldr r2,=GPFDAT

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xb0
str r3,[r2] ;GPF6 output 0
ldr r0,=0x2fffff
bl delay ;調用延遲子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0x70
str r3,[r2] ;GPF7 output 0
ldr r0,=0x2fffff         ;初始計數值
bl delay ;調用延遲子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xd0
str r3,[r2] ;GPF5 output 0
ldr r0,=0x2fffff
bl delay ;調用延遲子程序

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xe0
str r3,[r2] ;GPF4 output 0
ldr r0,=0x2fffff
bl delay      ;調用延遲子程序

b looptest
delay
sub r0,r0,#1 ;r0=r0-1
cmp r0,#0x0 ;將r0的值與0相比較
bne delay ;比較的結果不為0(r0不為0),繼續調用delay,否則執行下一條語句
mov pc,lr ;返回

END ;程序結束符

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

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天射网站| 国产欧美精品一区二区色综合朱莉 | 91pao对白在线播放 | 国产精品伦一区二区三级视频 | 日日夜夜免费精品 | 精品国产一区二区三区四区在线 | 欧美日韩精品 | 欧美另类日韩 | 孰女乱色一区二区三区 | 国产激情一区二区三区 | 国产精品福利久久久 | 91久久精品一区二区二区 | 国产成人午夜电影网 | 精品中文字幕一区二区三区 | 不卡一区| 午夜电影网 | 91视在线国内在线播放酒店 | 国产在线一区二区 | 久久小视频 | 中文字幕亚洲视频 | 91精品国产91久久综合桃花 | 国产欧美精品在线观看 | 欧美激情视频一区二区三区在线播放 | 免费一级黄色录像 | 99福利网| 仙人掌旅馆在线观看 | 日韩中文字幕在线免费 | 伊人网综合 | 超碰最新在线 | 久久亚洲欧美日韩精品专区 | 精品一区久久 | 99热精品在线 | 蜜桃视频在线观看www社区 | 日韩国产精品一区二区三区 | 亚洲一区二区欧美 | 久久精品国产免费看久久精品 | 精品国产精品一区二区夜夜嗨 | 日一区二区 | 成人福利在线 | 国产不卡一 | www国产亚洲精品久久网站 |