找回密码
 注册
关于网站域名变更的通知
查看: 607|回复: 3
打印 上一主题 下一主题

ARM汇编语言

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-5-17 13:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
# V$ Z, ]% H( H! J+ ]) s7 E  C$ z8 p0 }
ARM汇编语言8 P! h( b. ^9 ]: H/ g
汇编语言是一种程序设计语言,arm处理器是一种16/32位的嵌入式RISC微处理器。一开始我把这混为一谈了。ARM汇编的特点:汇编语言,又叫助记符语言。 1)大多数指令都是单周期指令;2)大多数指令都是可以条件执行的。
! U) M. o* t6 P4 u. e/ G0 [" n# o" [' H0 ]7 z3 U
1.首先是arm处理器。
% L# I- c/ ?2 ?* Z
( D# _; V+ x0 Q" ~0 {# m" ~% v处理器由37个寄存器,其中为31个通用寄存器,然后有6个为状态寄存器,这些寄存器都是32位的,但是状态寄存器只利用了其中的12位。
1 d9 S% D4 Z/ ~1 o; m
  y5 |/ Q( O) |( V(1),首先先说到寄存器。它是CPU的重要组成部分。是有限存贮容量的高速存贮部件。主要用来暂存指令,数据,地址。分类也是有很多,有通用寄存器,专用寄存器,控制寄存器。主要参考汇编的寄存器.这是按照功能分类。寄存器主要是2类,电路内部和充当外部接口。; A+ ?  \: W  L+ P: c
4 o! t- J9 m) ]
通用寄存器:' G* B& h- y3 V+ @! a
) F' p/ V: J9 x/ c( E, w) X2 }0 X
1).未分组(未备份)寄存器:R0~R7。未备份寄存器没有被系统用于特别的用途,任何可采用通用寄存器的应用场合都可以使用未备份寄存器。
5 A0 f" F9 ]! l6 R
9 I& h) A; z% d+ B) C! j' C, x8 @2).分组寄存器:R8~R12
4 J* w9 C+ T' J0 O6 X* F, f4 n
( D/ q" O+ d/ b: ]( f  DR13_<mode>  其中<mode>是usr、svc、abt、und、irq和fiq的一种。通常用作堆栈指针,始终指向堆栈的顶部。程序初始化R13,使其指向该模式专用的栈地址。进入此模式,则保存在此中,退出则弹出,实现程序现场保护。
. P1 n  V9 p9 N2 ]2 m1 W1 w! D" z) Q; N1 O# D
R14:连接寄存器(LR),有两种功能:1..自己的物理R14中存放当前子程序的返回地址。2..发生异常中断,R14的值可能与将返回的地址有一个常数的偏移量。
5 Q7 Q3 T- T' {, E) H& ]( G. D* k; m
2 d( r- z0 q6 Z( iR15:程序计数器(PC):用于控制程序中指令的执行顺序。正常运行时,PC指向CPU运行的下一条指令。每次取值后PC的值会自动修改以指向下一条指令,保证了指令按一定的顺序执行。当程序的执行顺序发生改变(如转移)时,需要修改PC的值。: V) B* J, l- ^+ t  d
  B- O$ D% G% S1 C/ s  x
状态寄存器(条件码寄存器)
" c8 o+ }6 [; H2 H% H1 W: L
& x) ?7 A. j: I. x8 R; ?4 \! ?% S作用:用以标记CPU的工作状态程序。存放两类信息一种是体现当前指令执行结果的各种状态信息(条件码),另一种是存放控制信息。CPSR(R16):当前程序状态寄存器,用来保存ALU中的当前操作信息,控制允许和禁止中断、设置处理器的工作模式等。SPSRs:五个部分的程序状态寄存器,用作异常处理,保存CPSR值,有四个条件代码:(1)N:正负,N=1,结果为负,N=0,结果为正或0.(2)Z:零,Z=1结果为0,Z=0,结果非零。(3)C:进位,加法产生进位则C=1,不然为C=0.借位,减肥运算产生了借位则C=0,否则C=1。(4)V:溢出,V=1,有溢出,V=0,无溢出。其中PSW称为标志寄存器,是一个16位的存放、控制标志的寄存器,主要呢用来反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。0 T7 e9 K7 q  Y
$ K8 H# G! J  W8 A  k
地址空间:程序正常执行时,每执行一条ARM指令,当前指令计数器增加4个字节。地址索引 :ARM 指令中的地址索引也是指令的一个功能,索引作为指令的一部分,它影响指令的执行结果。地址索引分为前索引(在指令执行前把偏移量和基址相加/ 减,得到的值作为寻址的地址)、自动索引(自动变址,有时为了修改基址寄存器的内容,使之指向数传送地址,可使用这种方法自动修改基址寄存器)和后索引(后变址,后索引就是用基址寄存器的地址值寻址,找出操作数进行操作,操作完成后,再把地址偏移量和基址相加/ 减,结果送到基址寄存器,作为下一次寻址的基址)." g1 v) ]9 N# B! Y7 Q# }6 C2 B4 t
( m; n! _$ `) O7 y( L8 k
汇编语言
# p/ ^/ Z" ]* m. c2 \/ Z, ^
. g8 u! c+ d7 B[汇编语言基础],计算机系统包括硬件和软件两部分。* F8 a0 m7 h1 H# k7 B! ^2 L& r

5 R& U2 }7 m4 ^8 i1 M1.汇编指令格式<opcode>{<cond>}{S}<Rd>,<Rn>{,<OP2>},格式中<>的内容必不可少,{}中的内容可省略.
; X: g/ O5 z% A7 _% U! X9 B9 W* j2 a1 W6 V- g" e
<opcode>:表示操作码. {<cond>}:表示指令执行的条件域. {S}:决定指令的执行结果是否影响CPSR的值,使用该后缀则指令执行的结果影响CPSR的值,否则不影响. <Rd>:表示目的寄存器. <Rn>:表示第一个操作数,为寄存器. <op2>:表示第二个操作数,可以是立即数、寄存器或寄存器移位操作数.) P- V3 [9 V3 k& X" F
( y5 Q: U; Z& v5 o
然后其中指令可选后缀,如果含有!,指令执行的结果地址值改变,指令执行后的值=执行前的值+地址偏移量。例如 B R0,[R2,#1]! 指令执行后,R2=R2+1- c# }2 T& f( o9 s  @1 ]: S  \

0 O. E* R, c" Y0 O2 X5 q& E2.指令的条件执行
# }1 n1 x# c% V* k/ L9 u
& K8 Q7 u* Z9 j" k- \/ X3.ARM指令分类& u% V% [: D  B/ G$ D
. e! U  j% C/ H& o/ u7 V

( r' y9 ]2 ^; d9 I7 ~4 q, l0 j2 I2 ]7 e  ]

3 h5 c0 a" r: H程序返回 程序结束后,将CPU的控制权交给调用它的程序
6 o2 F% b1 B" _# c( m0 G
7 m6 h) `& a) h9 }  g4.arm寻址方式:8种方式:1.立即数寻址 Mov AL, 12H (12H 是一个立即数)2.寄存器寻址:(1)Mov B,BX(源操作数是寄存器);(2)Mov BX,B(目的操作数是寄存器);(3)Mov AX,BX(两者都是寄存器)3.寄存器间接寻址Mov AX, [DI] (DI 是地址) 4.寄存器移位寻址Mov AX,[SI + 123H] (寄存器 + 立即数)5.基址变址寻址 Mov AX, [AX + SI] (寄存器 + 寄存器)6.多寄存器寻址7.相对寻址 Mov AX, [BX + SI + 123H] (寄存器 + 寄存器 + 立即数)8.堆栈寻址(1). 进栈出栈;(2). PUSH指令+ w# Q9 h/ R# B% e! Q3 g
) h- b1 s5 ~& U, \$ T  R$ U
【idata】 //常量 【bx】 //变量 (结合inc访问由ds开始的连续的一段内存) 【bx+idata】 //变量+常量 (数组) 【bx+si】 //变量+变量
5 G( e. I: N4 }9 h2 K1 X- e- D: w" U9 }0 K' q5 ^. x7 T( f
5.逻辑运算指令,'AND/ORR/EOR{cond} {s} <Rd>, <Rm>, <operand>', 'BIC{cond} {s} <Rd>, <Rm>, <operand>'。这只是其中一部分,主要参考arm最常用的指令。; j: Y9 m7 R* A# X4 d7 A% B5 y

$ v% ?$ Y9 I) `' \- Z% s6 ^6.数据加载与存储指令:1). LDR/STR字数据加载/存储指令,2). LDRB/STRB字节数据加载/存储指令,3). LDRH/STRH半字数据加载/存储指令,4). LDM/STM批量数据加载/存储指令,5). SWP字数据交换指令.
/ E: |0 K) O6 w! h5 _

该用户从未签到

2#
发表于 2021-5-17 14:54 | 只看该作者
ARM汇编语言
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2021-5-17 18:15 | 只看该作者
    ARM汇编语言

    该用户从未签到

    4#
    发表于 2021-5-17 18:16 | 只看该作者
    ARM汇编语言
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 10:42 , Processed in 0.156250 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表