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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6916|回復(fù): 0
收起左側(cè)

ARM匯編指令介紹

[復(fù)制鏈接]
ID:104835 發(fā)表于 2016-2-3 19:01 | 顯示全部樓層 |閱讀模式
 

1、 內(nèi)存訪問指令

基本指令:

LDRmemory > register (memory包括映射到內(nèi)存空間的非通用寄存器)

STRregister  > memory

語法:

op{cond }{B}{T} Rd , [Rn ]

op{cond }{B} Rd , [Rn , FlexOffset ]{!}

op{cond }{B} Rd , label

op{cond }{B}{T} Rd , [Rn ], FlexOffset

op:基本指令,如LDRSTR

cond:條件執(zhí)行后綴

B:字節(jié)操作后綴

T:用戶指令后綴

Rd:源寄存器,對(duì)于LDR指令,Rd將保存從memory中讀取的數(shù)值;對(duì)于STR指令,Rd保存著將寫入memory的數(shù)值

Rn:指針寄存器

FlexOffset:偏移量

例子:

ldr r0, [r1] ;r1作為指針,該指針指向的數(shù)存入r0

str r0, [r1, #4] ;r1+4作為指針,r0的值存入該地址

str r0, [r1, #4]! ;同上,并且r1 = r1 + 4

ldr r1, =0x08100000 ;立即數(shù)0x08100000存到r1

ldr r1, [r2], #4 ;r2+4作為指針,指向的值存入r1,并且r2=r2+4

label的使用】

addr1 ;定義一個(gè)名為“addr1”的labeladdr1 = 當(dāng)前地址

dcd 0 ;在當(dāng)前地址出定義一個(gè)32bit的變量

~ ~ ~

ldr r1, label1     ;r1 = addr1r1即可以作為var1的指針

ldr r0, [r1]

add r0, r0, #1

str r0, [r1] ;變量var1的值加1

FlexOffset的使用】

FlexOffset可以是立即數(shù),也可以是寄存器,還可以是簡單的表達(dá)式

2、 多字節(jié)存取指令(常用于堆棧操作)

基本指令:

LDMmemory ――> 多個(gè)寄存器

STM:多個(gè)寄存器 ――> memory

語法:

op{cond }mode Rn{!}, reglist {^}

mode:指針更新模式,對(duì)應(yīng)于不同類型的棧。最常用的是“FD”模式,相當(dāng)于初始棧指針在高位,壓棧后指針值減小。

Rn:指針寄存器

:最后的指針值將寫入Rn

reglist:要操作的寄存器列表,如{r0-r8, r10}

^ :完成存取操作后從異常模式下返回

例子:

;異常處理程序:

sub lr, lr, #4 ; lr – 4是異常處理完后應(yīng)該返回的地方

;保存r0~r12lr寄存器的值到堆棧并更新堆棧指針。

stmfd sp!, {r0-r12, lr}

;異常處理

ldmfd sp!, {r0-r12, pc}^ ;從堆棧中恢復(fù)r0~r12

,返回地址賦給pc指針,使程序返回到異常發(fā)生前所執(zhí)行的地方,^標(biāo)記用來使CPU

退出異常模式,進(jìn)入普通狀態(tài)。

 

3、 算術(shù)運(yùn)算指令

基本指令:

ADD:加

SUB:減

語法:

op{cond }{S} Rd, Rn, Operand2

S:是否設(shè)置狀態(tài)寄存器(CPSR),如:N(有符號(hào)運(yùn)算結(jié)果得負(fù)數(shù))、Z(結(jié)果得0)、C(運(yùn)算的進(jìn)位或移位)、V(有符號(hào)數(shù)的溢出)等等。

Rd:保存結(jié)果的寄存器

Rn:運(yùn)算的第一個(gè)操作數(shù)

Operand2:運(yùn)算的第二個(gè)操作數(shù),這個(gè)操作數(shù)的值有一些限定:如可以是8位立即數(shù)(例:0xa8)或一個(gè)8為立即數(shù)的移位(例:0xa800,而0xa801就不符合)。也可以是寄存器,或寄存器的移位(如“r2, lsl #4”)。

例子:

add r0, r1, r2 ; r0 = r1 + r2

adds r0, r1, #0x80 ; r0 = r1 + 0x80,并設(shè)置狀態(tài)寄存器

subs r0, r1, #2000 ; r0 = r1 – 2000,并設(shè)置狀態(tài)寄存器

4、 邏輯運(yùn)算指令

基本指令:

AND:與

ORR:或

EOR:異或

BIC:位清0

語法:

op{cond }{S} Rd, Rn, Operand2

語法類似算術(shù)運(yùn)算指令

例子:

ands r0 r1 #0xff00 ; r0 = r1 and 0xff00,并設(shè)置狀態(tài)寄存器

orr r0, r1, r2 ; r0 = r1 and r2

bics r0, r1, #0xff00 ; r0 = r1 and ! (0xff00)

ands r0, r1, #0xffff00ff ; 錯(cuò)誤

5、 MOV指令

語法

MOV{cond}{S} Rd, Operand2

例子

mov r0, #8 ; r0 = 8

mov r0, r1 ; r0 = r1

不同于LDRSTR指令,該指令可以寄存器間賦值

6、 比較指令

基本指令:

CMP:比較兩個(gè)操作數(shù),并設(shè)置狀態(tài)寄存器

語法:

CMP{cond } Rn, Operand2

例子:

cmp r0, r1 ; 計(jì)算r0 – r1,并設(shè)置狀態(tài)寄存器,由狀態(tài)寄存器可以知r0是否大于、小于或等于r1

cmp r0, #0 ;

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产在线视频在线观看 | 久久成人一区 | 五月婷婷在线视频 | 日韩精品免费视频 | 国产成人久久精品一区二区三区 | 久久噜噜噜精品国产亚洲综合 | 日本精品一区二区三区在线观看 | 亚洲大片 | 国产精品视频不卡 | 亚洲一区二区三区视频 | 中文字幕乱码一区二区三区 | www.中文字幕.com| 亚洲一级在线 | 人干人操| 91色在线 | 精品国产91久久久久久 | 怡红院成人在线视频 | 天天综合网天天综合 | 国产精品中文字幕在线观看 | 一本大道久久a久久精二百 欧洲一区二区三区 | 国产精品99久久久久 | 久久一区二区三区四区 | 中文字幕中文字幕 | 69av在线视频 | 色视频www在线播放国产人成 | 亚洲一区二区电影在线观看 | 国产精品美女久久久久久免费 | 国产欧美一区二区三区久久人妖 | 国产精品久久久久久久午夜片 | 国产成人精品一区二区 | 亚洲精品视频免费观看 | 激情综合五月天 | 一级做a爰片久久毛片 | 天天操网 | 久草视| 欧美群妇大交群中文字幕 | 99爱视频| 国产视频1 | 国产成人精品一区二区三 | 亚洲一区二区在线免费观看 | 夜夜干夜夜操 |