资讯详情

ARM汇编笔记

    B      无条件跳转:标志寄存器Z标志等于零,跳转到BEQ后的标签处     BL     无条件跳转带链接     BX     带状态切换的无条件跳转     BLX    带链接和状态切换的无条件跳转     B loc_地址     BEQ BNE     BNE 跳转指令, 标志寄存器Z标志位不等于零时, 跳转到BNE后的标签处 

存储器(主存, 内存) 存储器中的数据,可以是字符串,可以是数,也可以是地址,它可以放置各种类型的数据 存储地址单元:地址:(如0x000040000)存在于地址的值  LDR:   将数据从存储器加载到寄存器<--- Load LDR R8,[R9, #4]  R8为待加载数据的寄存器, 加载值R9   0x4指向的存储单元   STR:存储存器的数据存储在存储器中 ---->Store STR R8,[R9, #4]将R8寄存器的数据存储到R9 0x4指向存储单元  LDM:将存储器的数据加载到寄存器列表中----> LDM R0,{ 
       R1~R3}将R0指向存储单元的数据依次加载到R1, R2, R3寄存器中  STM:将寄存器列表的数据存储在指定的存储器中<---  PUSH:将寄存器值推入堆栈 POP:将堆栈值推向寄存器 SWP:交换寄存器和存储之间的数据 SWP R1, R1 [R0]将R1寄存器与R交换0指向存储单元的内容   堆, 队列:数据结构 栈是竖的:后进先出,数据只能从栈顶依次填充 

 MOV 将立即数或寄存器的数据输送到目标寄存器  MOV R0, #8 R0=8 

 ADD , SUB , MUL, DIV  有符号,无符号运算,带进位运算 

 与:AND  或:ORR  异或:EOR  移位:实质是乘, 除, 类似于小数点移位,但相反,小数点左移,数变小,右移变大  但逻辑移位,左移变大,右移变小,且按2的倍数进行,因为是2进制
	LSL:逻辑左移
	LSR:逻辑右移
	LSL R0, R1 #2 R0=R1 * 4

	CMP:比较
	CMP R0 #0 R0寄存器中的值与0比较
	标志位:如z位,这个都可以在动态调试时,寄存器窗口看到

	立即寻址:MOV R0, #1234 R0=0X1234
	寄存器寻址: MOV R0, R1  R0=R1
	寄存器移位寻址:MOV R0, R1,LSL #2 R0=R1*4
	寄存器间接寻址 LDR R0,[R1] 将R1寄存器中的值作为地址, 取出地址中的值赋予R0
	寄存器间接基址偏移寻址:LDR R0,[R1, #-4]将R1寄存器的值-0x4的值作为地址,取出地址中的值给R0
	对int a=0 这一句简单高级语言的汇编理解,首先开辟一个内存存储单元,然后把0x0这个数放入R0寄存器,然后在把R0寄存器的数据放入存储单元,所以
	MOV R0, #0
	STR R0,[R11, #014 + var_20]

八.其他指令:

	协处理器指令:SWT(切换用户模式)
	伪指令: DCB

	<opcode>{ 
       <cond>}{ 
       S} <Rd>, <Rn>{ 
       , <opcode2>}
	其中, <>内的项是必须的, { 
       }内的项是可选的,如<opcode>是指令助记符,是必须的,而{ 
       <cond>}为指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)
	opcode             指令助记符, 如LDR STR等
	cond  				执行条件,如EQ, NE等
	S					是否影响CPSR寄存器的值, 书写时影响CPSR, 否则不影响
	Rd					目标寄存器
	Rn					第一个操作数的寄存器
	opcode2 			第二个操作数

	举例说明:
		LDR R0, [R1]  读取R1地址上存储器单元内容,执行条件AL
		BEQ   DATAEVEN :跳转指令,执行条件EQ, 即相等跳转到DATAEVEN
		ADDS R1, R1, #1 :加法指令, R1 + 1 = R1 影响CPSR寄存器, 带有S
		SUBNES R1, R1, #0xD :条件执行减法运算(NE), R1-0xD=>R1, 影响CPSR寄存器,带有S

标签: swt131变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台