ARM汇编语言算数操作




寻址方式就是操作地址,只不过和普通的c语言或者上层语言,jave语言不同的是:jave语言操作地址时,操作内存地址就行,汇编更多的是还要操作寄存器地址,因为它要和硬件打交道,所以汇编既要操作内存地址也要操作寄存器地址  

  

1.数据操作(ALU操作) 运算操作


count1.png


要学习20几个命令其中最常用的一些命令根据28理论最常用的一些命令我们都会去使用


count2.png


count3.png


把这20几个命令分为三类:数学操作,逻辑操作,比较操作


根据:“程序=数据结构+算法” 学编程语言,所以要去学寻址,数据结构,基础的数据类型等 。


就拿上层语言jave来说。第一:学习jave 的运算操作:加减乘除,这就是ALU单元进行处理的一些工作,包括浮点,但是浮点在底层复杂一点,所以单独说 。第二,学习逻辑操作包括“与” “或” “非” “异或”。第三,学习基本的比较符号“> < >= <=”。这些学习流程if then 循环while。上面三点和今天学习的对比,数学操作就像加减乘除,逻辑操作就像逻辑操作 “与” “或” “非” “异或”,比较操作就像比较符号“> < >= <=” 。     


这样理解就容易,只不过这要和很多寄存器打交道,这是汇编语言和指令的一个特性。


回顾,汇编指令由操作(op),条件( conditional),状态(S)包括(Z零,N负数,C进位,V溢出),操作数也可分三段。普通的指令比如MOV ,在进行寻址时可以在后面跟条件就表示相等MOVEG,还可以跟上一个S表示标识位MOVEGS,在比方说ADD后跟一个S,ADDS表示把添加结果保存到标志位上,就涉及到状态的操作 。


进行汇编学习,加减乘除,除“/”是一个浮点,涉及到浮点运算是比较复杂的,所以不讲那么多,要根据具体的芯片来进行处理,就像之前学的计算机基本原理。 减法“-”实际上是通过补码的方式把它变成加法“+”,除法“/”是比较复杂的但也是一样的。一般情况下在以前CPU是不支持除法运算的,只是把它进行转换,所以主要就是看加法“+”和乘法“×”。


想象一下是32位的进行加法时 就是按位加的,最后进行一些换算,做这样一些处理。但是在上层语言就不是按位来加的。




【本文由麦子学院独家原创,转载请注明出处并保留原文链接】

logo
© 2012-2016 www.maiziedu.com
蜀ICP备13014270号-4 Version 5.0.0 release20160127

您有狂欢嘉年华礼包未领取

客服热线 400-862-8862

回到顶部