主要的汇编指令有哪些啊 汇编中的常见指令有哪些

\u4e3b\u8981\u7684\u6c47\u7f16\u6307\u4ee4\u6709\u54ea\u4e9b\uff1f

LDR \u548cSTR\u2014\u2014\u7528\u4e8e\u5b57\u548c\u65e0\u7b26\u53f7\u5b57\u8282
\u6307\u4ee4\u683c\u5f0f\uff1a
LDR/STR{cond}{T} Rd\uff0c
LDR/STR{cond}B{T} Rd\uff0c

LDR{cond}{T} Rd\uff0c \u52a0\u8f7d\u6307\u5b9a\u5730\u5740\u7684\u5b57\u6570\u636e\u5230Rd\u4e2d\uff1b
STR{cond}{T} Rd\uff0c \u5b58\u50a8Rd\u4e2d\u7684\u5b57\u6570\u636e\u5230\u6307\u5b9a\u7684\u5730\u5740\u5355\u5143\u4e2d\uff1b
LDR{cond}B{T} Rd\uff0c \u6307\u4ee4\u52a0\u8f7d\u6307\u5b9a\u5730\u5740\u7684\u5b57\u8282\u6570\u636e\u5230Rd\u7684\u7684\u6700\u4f4e\u5b57\u8282\u4e2d\uff08Rd\u7684\u9ad824\u4f4d\u6e05\u96f6\uff09\uff1b
STR{cond}B{T} Rd\uff0c \u6307\u4ee4\u5b58\u50a8Rd\u4e2d\u7684\u6700\u4f4e\u5b57\u8282\u6570\u636e\u5230\u6307\u5b9a\u7684\u5730\u5740\u5355\u5143\u4e2d\u3002
T\u4e3a\u53ef\u9009\u540e\u7f00\uff0c\u82e5\u6709T\uff0c\u90a3\u4e48\u5373\u4f7f\u5904\u7406\u5668\u662f\u5728\u7279\u6743\u6a21\u5f0f\u4e0b\uff0c\u5b58\u50a8\u7cfb\u7edf\u4e5f\u5c06\u8bbf\u95ee\u770b\u6210\u5904\u7406\u5668\u662f\u5728\u7528\u6237\u6a21\u5f0f\u4e0b\uff0cT \u5728\u7528\u6237\u6a21\u5f0f\u4e0b\u65e0\u6548\uff0c\u4e0d\u80fd\u4e0e\u524d\u7d22\u5f15\u504f\u79fb\u4e00\u8d77\u4f7f\u7528T\u3002

\u5730\u5740\u90e8\u5206\u53ef\u7528\u7684\u5f62\u5f0f\u67094\u79cd\uff1a

\u96f6\u504f\u79fb(zero offset) [Rn] \uff0cRn\u7684\u503c\u4f5c\u4e3a\u4f20\u9001\u6570\u636e\u7684\u5730\u5740\u3002\u5982\uff1a
LDR R0,[R1]\uff1b
\u524d\u7d22\u5f15\u504f\u79fb(pre-indexed offset) [Rn\uff0cFlexoffset]{!} \u5728\u6570\u636e\u4f20\u9001\u4e4b\u524d\uff0c\u5c06\u504f\u79fb\u91cfFlexoffset\u52a0\u5230Rn \u4e2d\u3002\u5176\u7ed3\u679c\u4f5c\u4e3a\u4f20\u9001\u6570\u636e\u7684\u5b58\u50a8\u5668\u5730\u5740\u3002\u82e5\u4f7f\u7528\u540e\u7f00\u201c!\u201d\uff0c\u5219\u7ed3\u679c\u5199\u56de\u5230Rn \u4e2d\uff0c\u4e14Rn \u4e0d\u5141\u8bb8\u662fR15\uff0c\u5982\uff1a
LDRB R0,[R1,#8]
LDR R0,[R1,#8]!
\u7a0b\u5e8f\u76f8\u5bf9\u504f\u79fb(program relative) label(label \u5fc5\u987b\u662f\u5728\u5f53\u524d\u6307\u4ee4\u7684\u571f4KB \u8303\u56f4\u5185) \u3002
\u7a0b\u5e8f\u76f8\u5bf9\u504f\u79fb\u662f\u524d\u7d22\u5f15\u5f62\u5f0f\u7684\u53e6\u4e00\u79cd\u7248\u672c\u3002\u4ecePC \u8ba1\u7b97\u504f\u79fb\u91cf\uff0c\u5e76\u5c06PC \u4f5c\u4e3aRn \u751f\u6210\u524d\u7d22\u5f15\u6307\u4ee4\uff0c\u4e0d\u80fd\u4f7f\u7528\u540e\u7f00\u201c!\u201d\uff0c\u5982\uff1a
LDR R0,place \uff1b
place\u5730\u5740\u88c5\u5165R0
\u540e\u7d22\u5f15\u504f\u79fb(post-indexed offset) [Rn]\uff0cFlexoffset\u3002\u5728\u6570\u636e\u4f20\u9001\u540e\uff0c\u5c06\u504f\u79fb\u91cfFlexoffset \u52a0\u5230Rn \u4e2d\uff0c\u7ed3\u679c\u5199\u56de\u5230Rn\uff0cRn \u4e0d\u5141\u8bb8\u662fR15\uff0c\u5982\uff1a
LDR R0,[R1],R2,LSL\uff032 \uff1b
\u5c06\u5b58\u50a8\u5668\u5730\u5740\u4e3aR1 \u7684\u5b57\u6570\u636e\u8bfb\u5165\u5bc4\u5b58\u5668R0\uff0c\u5e76\u5c06\u65b0\u5730\u5740R1\uff0bR2\u00d74\u5199\u5165R1\u3002
\u504f\u79fb\u91cfFlexoffset\u53ef\u4ee5\u662f\u4e0b\u4e24\u79cd\u5f62\u5f0f\u4e4b\uff1a
1) \u53d6\u503c\u8303\u56f4\u662f-4095 \u5230+4095 \u7684\u6574\u6570\u7684\u8868\u8fbe\u5f0f\uff0c\u7ecf\u5e38\u662f\u6570\u5b57\u5e38\u91cf\uff0c\u5982\uff1a
STR R5,[R7],#--8
2) \u4e00\u4e2a\u5bc4\u5b58\u5668\u518d\u52a0\u4e0a\u79fb\u4f4d\uff08\u79fb\u4f4d\u7531\u7acb\u5373\u6570\u6307\u5b9a\uff09\uff0c\u5982\uff1a
{-}Rm{,shift}
\u5176\u4e2d\uff1a
- \uff1a\u53ef\u9009\u8d1f\u53f7\u3002\u82e5\u5e26\u7b26\u53f7\u201c\u4e00\u201d\uff0c\u5219\u4eceRn \u4e2d\u51cf\u53bb\u504f\u79fb\u91cf\u3002\u5426\u5219\uff0c\u5c06\u504f\u79fb\u91cf\u52a0\u5230Rn \u4e2d\u3002
Rm \uff1a\u5185\u542b\u504f\u79fb\u91cf\u7684\u5bc4\u5b58\u5668\u3002Rm \u4e0d\u5141\u8bb8\u662fR15\u3002
Shift\uff1aRm \u7684\u53ef\u9009\u79fb\u4f4d\u65b9\u6cd5\u3002\u53ef\u4ee5\u662f\u4e0b\u5217\u5f62\u5f0f\u7684\u4efb\u4f55\u4e00\u79cd\uff1a
ASR n \uff1a\u7b97\u672f\u53f3\u79fbn \u4f4d(1<=n<=32)
LSL n \uff1a\u903b\u8f91\u5de6\u79fbn \u4f4d(1<=n<=31)
LSR n \uff1a\u903b\u8f91\u53f3\u79fbn \u4f4d(1<=n<=32)
ROR n \uff1a\u5faa\u73af\u53f3\u79fbn \u4f4d(1<=n<=31)
RRX \uff1a\u5faa\u73af\u53f3\u79fb1 \u4f4d\uff0c\u5e26\u6269\u5c55\u3002
AND\u2015\u2015\u2015\u2015\u2015\u903b\u8f91\u201d\u4e0e\u201d\u64cd\u4f5c\u6307\u4ee4
\u6307\u4ee4\u683c\u5f0f\uff1a

AND{cond}{S} Rd,Rn,operand2
AND\u6307\u4ee4\u5c06\u64cd\u4f5c\u6570operand2 \u4e0eRn \u7684\u503c\u6309\u4f4d\u903b\u8f91\u201d\u4e0e\u201d\uff0c\u7ed3\u679c\u5b58\u653e\u5230\u76ee\u7684\u5bc4\u5b58\u5668Rd \u4e2d\u3002\u82e5\u8bbe\u7f6eS\uff0c\u5219\u6839\u636e\u8fd0\u7b97\u7ed3\u679c\u5f71\u54cdN\u3001Z\u4f4d\uff0c\u5728\u8ba1\u7b97\u7b2c\u4e8c\u64cd\u4f5c\u6570\u65f6\uff0c\u66f4\u65b0C\u4f4d\uff0c\u4e0d\u5f71\u54cdV\u4f4d\uff08\u6307\u4ee4ORR\u3001EOR\u3001BIC \u5bf9\u6807\u5fd7\u4f4d\u7684\u5f71\u54cd\u540cAND \u6307\u4ee4\uff09\u3002
\u6307\u4ee4\u793a\u4f8b\uff1a
ANDS R1,R1,R2 \uff1bR1=R1&R2\uff0c\u5e76\u6839\u636e\u8fd0\u7b97\u7684\u7ed3\u679c\u66f4\u65b0\u6807\u5fd7\u4f4d
AND R0,R0,#0x0F \uff1bR0=R0&0x0F\uff0c\u53d6\u51faR0\u6700\u4f4e4\u4f4d\u6570\u636e\u3002

ORR\u2015\u2015\u2015\u2015\u2015\u903b\u8f91\u201d\u6216\u201d\u64cd\u4f5c\u6307\u4ee4
\u6307\u4ee4\u683c\u5f0f\uff1aORR{cond}{S} Rd,Rn,operand2 ORR\u6307\u4ee4\u5c06\u64cd\u4f5c\u6570operand2 \u4e0eRn \u7684\u503c\u6309\u4f4d\u903b\u8f91\u201d\u6216\u201d\uff0c\u7ed3\u679c\u5b58\u653e\u5230\u76ee\u7684\u5bc4\u5b58\u5668Rd \u4e2d\u3002\u6307\u4ee4\u793a\u4f8b\uff1a
ORRS R1,R1,R2 \uff1bR1=R1|R2\uff0c\u5e76\u6839\u636e\u8fd0\u7b97\u7684\u7ed3\u679c\u66f4\u65b0\u6807\u5fd7\u4f4d
ORR R0,R0,#0x0F \uff1bR0=R0|0x0F\uff0c\u5c06R0\u6700\u4f4e4\u4f4d\u7f6e1\uff0c\u5176\u4f59\u4f4d\u4e0d\u53d8\u3002

BIC\u2015\u2015\u2015\u2015\u2015\u4f4d\u6e05\u9664\u6307\u4ee4
\u6307\u4ee4\u683c\u5f0f\uff1a
BIC{cond}{S} Rd,Rn,operand2
BIC\u6307\u4ee4\u5c06Rn \u7684\u503c\u4e0e\u64cd\u4f5c\u6570operand2 \u7684\u53cd\u7801\u6309\u4f4d\u903b\u8f91\u201d\u4e0e\u201d\uff0c\u7ed3\u679c\u5b58\u653e\u5230\u76ee\u7684\u5bc4\u5b58\u5668Rd \u4e2d\u3002\u6307\u4ee4\u793a\u4f8b\uff1aBIC R0,R0,#0x0F \uff1b\u5c06R0\u6700\u4f4e4\u4f4d\u6e05\u96f6\uff0c\u5176\u4f59\u4f4d\u4e0d\u53d8\u3002

CMP\u2015\u2015\u2015\u2015\u2015\u6bd4\u8f83\u6307\u4ee4
\u6307\u4ee4\u683c\u5f0f\uff1a
CMP{cond} Rn,operand2
CMP\u6307\u4ee4\u7528Rn\u7684\u503c\u51cf\u53bb\u64cd\u4f5c\u6570operand2 \uff0c\u5e76\u5c06\u7ed3\u679c\u7684\u72b6\u6001\uff08Rn \u4e0eoperand2\u6bd4\u8f83\u662f\u5927\u3001\u5c0f\u3001\u76f8\u7b49\uff09\u53cd\u6620\u5728CPSR\u4e2d\uff0c\u4ee5\u4fbf\u540e\u9762\u7684\u6307\u4ee4\u6839\u636e\u6761\u4ef6\u6807\u5fd7\u51b3\u5b9a\u7a0b\u5e8f\u7684\u8d70\u5411\u3002CMP\u6307\u4ee4\u4e0eSUBS\u6307\u4ee4\u5b8c\u6210\u7684\u64cd\u4f5c\u4e00\u6837\uff0c\u53ea\u662fCMP\u6307\u4ee4\u53ea\u51cf\uff0c\u4e0d\u5b58\u7ed3\u679c\u3002
\u6307\u4ee4\u793a\u4f8b\uff1a
cmp R0,R1 \uff1b\u6bd4\u8f83R0,R1
beq stop \uff1bR0=R1\u8df3\u5230stop
blt less \uff1bR0<R1\u8df3\u5230Less

.
.
.

Less\uff1a
.
.
.
Stop\uff1a
.
.
.
SUB\u2015\u2015\u2015\u2015\u2015\u51cf\u6cd5\u8fd0\u7b97\u6307\u4ee4
\u6307\u4ee4\u683c\u5f0f\uff1a
SUB{cond}{S} Rd,Rn,operand2 SUB\u6307\u4ee4\u7528Rn \u7684\u503c\u51cf\u53bb\u64cd\u4f5c\u6570operand2 \uff0c\u5e76\u5c06\u7ed3\u679c\u5b58\u653e\u5230\u76ee\u7684\u5bc4\u5b58\u5668Rd \u4e2d\u3002 \u6307\u4ee4\u793a\u4f8b\uff1a
SUBS R1,R1,R2 \uff1bR1=R1-R2\uff0c\u5e76\u5e76\u6839\u636e\u8fd0\u7b97\u7684\u7ed3\u679c\u66f4\u65b0\u6807\u5fd7\u4f4d
SUBGT R3,3,#1 \uff1b\u5927\u4e8e\u5219 R3=R3-1
SUB R0,R2,R3,LSL#2\uff1b R0=R2-(R3<<2)

ARM\u5206\u652f\u6307\u4ee4
\u52a9\u8bb0\u7b26

\u8bf4\u660e

\u64cd\u4f5c

B{cond} lable
\u5206\u652f\u6307\u4ee4

PC\u2190 lable

BL{cond} lable
\u5e26\u94fe\u63a5\u7684\u5206\u652f\u6307\u4ee4

LR\u2190 PC\uff0d4 \uff0cPC\u2190lable

BX{cond} Rm
\u5e26\u72b6\u6001\u5207\u6362\u7684\u5206\u652f\u6307\u4ee4

PC\u2190 Rm\uff0c\u5207\u6362\u5904\u7406\u5668\u72b6\u6001

\u6307\u4ee4\u7684\u6761\u4ef6\u7801
\u6761\u4ef6\u7801 \u52a9\u8bb0\u7b26\u540e\u7f00 \u6807\u5fd7 \u542b\u4e49
0000 EQ Z\u7f6e\u4f4d(Z=1) \u76f8\u7b49
0001 NE Z\u6e05\u96f6(Z=0) \u4e0d\u76f8\u7b49
0010 CS C\u7f6e\u4f4d \u65e0\u7b26\u53f7\u6570\u5927\u4e8e\u7b49\u4e8e
0011 CC C\u6e05\u96f6 \u65e0\u7b26\u53f7\u6570\u5c0f\u4e8e
0100 MI N\u7f6e\u4f4d \u8d1f\u6570
0101 PL N\u6e05\u96f6 \u6574\u6570\u62160
0110 VS V\u7f6e\u4f4d \u6ea2\u51fa
0111 VC V\u6e05\u96f6 \u672a\u6ea2\u51fa
1000 HI C\u7f6e\u4f4d\u4e14Z\u6e05\u96f6 \u65e0\u7b26\u53f7\u6570\u5927\u4e8e
1001 LS Z\u7f6e\u4f4d\u4e14C\u6e05\u96f6 \u65e0\u7b26\u53f7\u6570\u5c0f\u4e8e\u7b49\u4e8e
1010 GE N\u7b49\u4e8eV(N=V=1\u6216N=V=0) \u5e26\u7b26\u53f7\u6570\u5927\u4e8e\u6216\u7b49\u4e8e
1011 LT N\u4e0d\u7b49\u4e8eV \u5e26\u7b26\u53f7\u6570\u5c0f\u4e8e
1100 GT Z\u6e05\u96f6\u4e14N\u7b49\u4e8eV \u5e26\u7b26\u53f7\u6570\u5927\u4e8e
1101 LE Z\u7f6e\u4f4d\u6216N\u4e0d\u7b49\u4e8eV \u5e26\u7b26\u53f7\u6570\u5c0f\u4e8e\u6216\u7b49\u4e8e
1110 AL \u5ffd\u7565 \u65e0\u6761\u4ef6\u6267\u884c

;GPIO\u5bc4\u5b58\u5668\u5b8f\u5b9a\u4e49
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058

EXPORT LEDTEST
AREA LEDTESTASM,CODE,READONLY ;\u8be5\u4f2a\u6307\u4ee4\u5b9a\u4e49\u4e86\u4e00\u4e2a\u4ee3\u7801\u6bb5\uff0c\u6bb5\u540d\u4e3aLEDTESTASM\uff0c\u5c5e\u6027\u53ea\u8bfb

LEDTEST
;\u8bbe\u7f6eGPF4\uff0dGPF7\u4e3aoutput
ldr r0,=GPFCON
ldr r1,[r0]
bic r1,r1,#0xff00
orr r1,r1,#0x5500
str r1,[r0]

;\u7981\u6b62GPF4\uff0dGPF7\u7aef\u53e3\u7684\u4e0a\u62c9\u7535\u963b
ldr r0,=GPFUP
ldr r1,[r0]
orr r1,r1,#0xf0
str r1,[r0]

looptest
;\u5c06\u6570\u636e\u7aef\u53e3F\u7684\u6570\u636e\u5bc4\u5b58\u5668\u7684\u5730\u5740\u9644\u7ed9\u5bc4\u5b58\u5668r2
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 ;\u8c03\u7528\u5ef6\u8fdf\u5b50\u7a0b\u5e8f

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0x70
str r3,[r2] ;GPF7 output 0
ldr r0,=0x2fffff ;\u521d\u59cb\u8ba1\u6570\u503c
bl delay ;\u8c03\u7528\u5ef6\u8fdf\u5b50\u7a0b\u5e8f

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xd0
str r3,[r2] ;GPF5 output 0
ldr r0,=0x2fffff
bl delay ;\u8c03\u7528\u5ef6\u8fdf\u5b50\u7a0b\u5e8f

ldr r3,[r2]
bic r3,r3,#0xf0
orr r3,r3,#0xe0
str r3,[r2] ;GPF4 output 0
ldr r0,=0x2fffff
bl delay ;\u8c03\u7528\u5ef6\u8fdf\u5b50\u7a0b\u5e8f

b looptest
delay
sub r0,r0,#1 ;r0=r0-1
cmp r0,#0x0 ;\u5c06r0\u7684\u503c\u4e0e0\u76f8\u6bd4\u8f83
bne delay ;\u6bd4\u8f83\u7684\u7ed3\u679c\u4e0d\u4e3a0\uff08r0\u4e0d\u4e3a0\uff09\uff0c\u7ee7\u7eed\u8c03\u7528delay,\u5426\u5219\u6267\u884c\u4e0b\u4e00\u6761\u8bed\u53e5
mov pc,lr ;\u8fd4\u56de

END ;\u7a0b\u5e8f\u7ed3\u675f\u7b26


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) [Rn,Flexoffset]{!} 在数据传送之前,将偏移量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-1
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,切换处理器状态

指令的条件码
条件码 助记符后缀 标志 含义
0000 EQ Z置位(Z=1) 相等
0001 NE Z清零(Z=0) 不相等
0010 CS C置位 无符号数大于等于
0011 CC C清零 无符号数小于
0100 MI N置位 负数
0101 PL N清零 整数或0
0110 VS V置位 溢出
0111 VC V清零 未溢出
1000 HI C置位且Z清零 无符号数大于
1001 LS Z置位且C清零 无符号数小于等于
1010 GE N等于V(N=V=1或N=V=0) 带符号数大于或等于
1011 LT N不等于V 带符号数小于
1100 GT Z清零且N等于V 带符号数大于
1101 LE Z置位或N不等于V 带符号数小于或等于
1110 AL 忽略 无条件执行

;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 ;程序结束符

  • 姹囩紪涓殑甯歌鎸囦护鏈夊摢浜
    绛旓細IN I/O绔彛杈撳叆. ( 璇硶: IN 绱姞鍣, {绔彛鍙封攤DX} )OUT I/O绔彛杈撳嚭. ( 璇硶: OUT {绔彛鍙封攤DX},绱姞鍣 )杈撳叆杈撳嚭绔彛鐢辩珛鍗虫柟寮忔寚瀹氭椂, 鍏惰寖鍥存槸 0-255; 鐢卞瘎瀛樺櫒 DX 鎸囧畾鏃, 鍏惰寖鍥存槸 0-65535.3. 鐩殑鍦板潃浼犻佹寚浠.LEA 瑁呭叆鏈夋晥鍦板潃. 渚: LEA DX,string ;鎶婂亸绉诲湴鍧瀛樺埌DX.L...
  • 涓昏鐨勬眹缂栨寚浠ゆ湁鍝簺?
    绛旓細LDR 鍜孲TR鈥斺旂敤浜庡瓧鍜屾棤绗﹀彿瀛楄妭\x0d\x0a鎸囦护鏍煎紡锛歕x0d\x0aLDR/STR{cond}{T} Rd锛孿x0d\x0aLDR/STR{cond}B{T} Rd锛 \x0d\x0a\x0d\x0aLDR{cond}{T} Rd锛 鍔犺浇鎸囧畾鍦板潃鐨勫瓧鏁版嵁鍒癛d涓紱\x0d\x0aSTR{cond}{T} Rd锛 瀛樺偍Rd涓殑瀛楁暟鎹埌鎸囧畾鐨勫湴鍧鍗曞厓涓紱\x...
  • 姹囩紪璇█鎸囦护鏈夊摢浜?
    绛旓細涓銆佹暟鎹綅浼犻佹寚浠わ細1銆丮OV C, bit 锛沚it 鍙洿鎺ュ鍧浣 C鈫(bit)2銆丮OV bit锛孋 锛汣 杩涗綅浣 (bit) 鈫 C 浜屻佷綅鍙橀噺淇敼鎸囦护锛1銆丆LR C ; 灏咰锛0 2銆丆LR bit 3銆丆PL C ; 灏咰姹傚弽鍐嶅瓨鍏 4銆丆PL bit ; 灏哹it姹傚弽鍐嶅瓨鍏it 5銆丼ETB ...
  • 涓昏鐨勬眹缂栨寚浠ゆ湁鍝簺鍟
    绛旓細BIC鎸囦护灏哛n 鐨勫间笌鎿嶄綔鏁皁perand2 鐨勫弽鐮佹寜浣嶉昏緫鈥濅笌鈥濓紝缁撴灉瀛樻斁鍒扮洰鐨勫瘎瀛樺櫒Rd 涓傛寚浠ょず渚嬶細BIC R0,R0,#0x0F 锛涘皢R0鏈浣4浣嶆竻闆讹紝鍏朵綑浣嶄笉鍙樸侰MP鈥曗曗曟瘮杈冩寚浠 鎸囦护鏍煎紡锛欳MP{cond} Rn,operand2 CMP鎸囦护鐢≧n鐨勫煎噺鍘绘搷浣滄暟operand2 锛屽苟灏嗙粨鏋滅殑鐘舵侊紙Rn 涓巓perand2姣旇緝鏄ぇ銆佸皬銆佺浉绛...
  • 鍗曠墖鏈姹囩紪鎸囦护鏈夊摢浜?
    绛旓細閫昏緫鎿嶄綔鏁版寚浠わ細1銆丄NL direct,#data 鐩存帴鍦板潃鍗曞厓涓庣珛鍗虫暟鐩糕滀笌鈥濄2銆丄NL A,#data 绱姞鍣ㄤ笌绔嬪嵆鏁扮浉鈥滀笌鈥銆3銆丄NL A,@Ri 绱姞鍣ㄤ笌闂存帴RAM 鍗曞厓鐩糕滀笌鈥濄4銆丄NL A,direct 绱姞鍣ㄤ笌鐩存帴鍦板潃鍗曞厓鐩糕滀笌鈥濄5銆丄NL direct,A 鐩存帴鍦板潃鍗曞厓涓庣疮鍔犲櫒鐩糕滀笌鈥濄6銆丄NL A,Rn 绱姞鍣ㄤ笌瀵勫瓨鍣...
  • 姹囩紪鐨勮瑷鎸囦护閮鍖呮嫭鍝簺
    绛旓細姹囩紪鐨勮瑷鎸囦护閮鍖呮嫭锛氭眹缂栫殑璇█鎸囦护銆佸彲鐩存帴瀵诲潃浣嶃佷綅鍙橀噺淇敼鎸囦护銆佷綅鍙橀噺閫昏緫鎸囦护绛夈傛眹缂栧ぇ澶氭槸鎸囨眹缂栬瑷锛屾眹缂栫▼搴忋傛妸姹囩紪璇█缈昏瘧鎴愭満鍣ㄨ瑷鐨勮繃绋嬬О涓烘眹缂栥傚湪姹囩紪璇█涓紝鐢ㄥ姪璁扮(Memoni)浠f浛鎿嶄綔鐮侊紝鐢ㄥ湴鍧绗﹀彿(Symbol)鎴栨爣鍙(Label)浠f浛鍦板潃鐮併傝繖鏍风敤绗﹀彿浠f浛鏈哄櫒璇█鐨勪簩杩涘埗鐮侊紝灏辨妸...
  • arm姹囩紪鎸囦护鏈夊摢浜?
    绛旓細浼犻鎸囦护 鍖呮嫭閫氱敤鏁版嵁浼犻佹寚浠OV銆佹潯浠朵紶閫佹寚浠MOVcc銆佸爢鏍堟搷浣滄寚浠USH/PUSHA/PUSHAD/POP/POPA/POPAD銆佷氦鎹㈡寚浠CHG/XLAT/BSWAP銆佸湴鍧鎴栨鎻忚堪绗﹂夋嫨瀛愪紶閫佹寚浠EA/LDS/LES/LFS/LGS/LSS绛夈傞昏緫杩愮畻 杩欓儴鍒嗘寚浠ょ敤浜庢墽琛岀畻鏈拰閫昏緫杩愮畻锛屽寘鎷姞娉曟寚浠DD/ADC銆佸噺娉曟寚浠UB/SBB銆佸姞涓鎸囦护INC銆佸噺涓鎸囦护DEC...
  • 姹囩紪璇█鏈夊摢浜涙寚浠?
    绛旓細姹囩紪璇█涓璊B銆丣A閮芥槸鏉′欢杞Щ鎸囦护锛屽父鐢ㄤ簬姣旇緝涓や釜鏃犵鍙锋暟鐨勫ぇ灏忥紝鍒ゆ柇鏉′欢鏄疌F銆乑F鐘舵佺殑缁勫悎銆備负纭畾CF銆乑F鐘舵侊紝杞Щ鍓嶇敤CMP鎸囦护璁剧疆鏍囧織浣嶏紙CMP A锛孊锛夈傚叾涓細鎸囦护JA琛ㄧず CF=0 涓擹F=0 鍗矨>B杞Щ銆傛寚浠B琛ㄧず CF=1 涓擹F=0 鍗矨 <B杞Щ銆傝澶氭眹缂栫▼搴忎负绋嬪簭寮鍙戙佹眹缂栨帶鍒躲佽緟鍔╄皟璇曟彁渚...
  • 姹姹囩紪璇█鐨勬墍鏈鎸囦护?
    绛旓細绠楁暟杩愮畻鎸囦护 ADD,ADC 鍔熻兘: 鍔犳硶鎸囦护 璇硶: ADD OP1,OP2 ADC OP1,OP2 鏍煎紡: ADD r1,r2 ADD r,m ADD m,r ADD r,data 褰卞搷鏍囧織: C,P,A,Z,S,O SUB,SBB 鍔熻兘:鍑忔硶鎸囦护 璇硶: SUB OP1,OP2 SBB OP1,OP2 鏍煎紡: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 褰卞搷鏍囧織: ...
  • X86鎸囦护闆嗙殑鍐呭鏈夊摢浜?
    绛旓細x86姹囩紪鎸囦护闆嗘暟鎹紶杈撴寚浠ゅ畠浠湪瀛樿串鍣ㄥ拰瀵勫瓨鍣ㄣ佸瘎瀛樺櫒鍜岃緭鍏ヨ緭鍑虹鍙d箣闂翠紶閫佹暟鎹.1.閫氱敤鏁版嵁浼犻佹寚浠.MOV浼犻佸瓧鎴栧瓧鑺.MOVSX鍏堢鍙锋墿灞,鍐嶄紶閫.MOVZX鍏堥浂鎵╁睍,鍐嶄紶閫.MOVSXreg16,r/m8;o160FBE/r[386]MOVSXreg32,r/m8;o320FBE/r[386]MOVSXreg32,r/m16;o320FBF/r[386]MOVZXreg16,r/m8;o160FB6/...
  • 扩展阅读:快捷指令官网入口 ... 汇编指令大全一览表 ... 汇编指令集大全 ... mc所有指令大全 ... plc所有指令表 ... 指令大全可复制免费 ... 汇编指令大全下载 ... 万能指令 ... 快捷指令库入口 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网