国庆day6

国庆day6

汇编语言的组成
伪操作
不参与程序的执行,但是用于告诉编译器程序该怎么编译 如:

    .text        .global        .end        .if        .else        .endif        .data

汇编指令
汇编器将一条汇编指令编译成一条机器码,在内存里一条指令占4字节内存,一条指令可以实现一个特定的功能。

伪指令
不是指令,但是看似一条指令,可以实现指令类似的功能,一条伪指令可能是由多条指令共同实现。

注释

        单行注释:@
        多行注释:/**/

条件编译

.if 0
@text
.else
@text
.endif

汇编指令的介绍
基本数据操作指令
数据搬移指令:=
数据位移指令:<< >>
数据算数运算指令:+ - * /
位运算指令:$ | ~ ^
数据比较指令:cmp 第一操作数,第二操作寄存器,其有很多条件码,如果条件码满足则执行对应的指令
跳转指令
内存读写指令
状态寄存器读写指令
软中断指令

汇编指令的基本语法格式
基本格式: {cond}{s} Rd,Rn,#oprand2
解释:
opcode:指令码
cond:条件码
指令不加条件码,指令默认无条件执行
指令加条件码,指令有条件执行
s:状态位
指令不加s,指令执行的结果不会影响CPSR寄存器
指令加s,指令执行的结果会影响CPSR寄存器
Rd:目标寄存器
Rn:第一操作寄存器
#oprand2:第二操作数
1)立即数
2)有效数:将一个数取反之后,变成立即数
3)寄存器
4)经过移位的寄存器
注意事项:
1)汇编指令中不区分大小写
2)汇编指令不需要以;号结尾
3){cond}{s}:需要连在一起写
4)Rd,Rn,#oprand2:需要用逗号分隔开
5) {cond}{s}和Rd,Rn,#oprand2需要用空格分隔开

数据搬移指令
指令码:mov mvn

格式:{cond}{s} Rd,#oprand2

@ 代码1:
    mov r0,#0xf @ r0 = 0xf
	mov r1,#0xff
	@ mov r2,#0xfff @ error
	@ mov r3,#0xffff @ error
	@ mov r4,#0xfffff @ error
	mov r5,#0xffffff
	mov r6,#0xfffffff
	mov r7,#0xffffffff
 /*------------------ ------------------ ---------------*/
@ 代码2:
 	mvn r5,#0xff  @ 0xff按位取反之后,赋值给r5
	mov r0,#0xff000000 @ 0xff 8
	mov r1,#0x1f800000 @ 0x7e  10
	mov r2,#0x00ffffff   @ ~r2 = 0xff000000
	mov r3,#0x0fffffff   @ ~r3 = 0xf0000000
	mov r4,#0xffffffff   @ ~r4 = 0x00000000

你可能感兴趣的:(learn,单片机,嵌入式硬件)