2022年ARM汇编指令 .pdf
《2022年ARM汇编指令 .pdf》由会员分享,可在线阅读,更多相关《2022年ARM汇编指令 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 / 21 汇编指令处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器()处理指令、加载存储指令、协处理器指令和异常产生指令大指令。一、跳转指令跳转指令用于实现程序流程的跳转,在程序中有以下两种方法可以实现程序流程的跳转。.使用专门的跳转指令;.直接向程序计数器写入跳转地址值,通过向程序计数器写入跳转地址值,可以实现在的地址空间中的任意跳转,在跳转之前结合使用,等类似指令, 可以保存将来的返回地址值,从而实现在连续的线性地址空间的子程序调用。指令集中的跳转指令可以完成从当前指令向前或向后的的地址空间的跳转,包括以下条指令:、指令指令的格式为:条件 目标地址指令是最简单的跳转指令。一
2、旦遇到一个指令,处理器将立即跳转到给定的目标地址,从那里继续执行。注意存储在跳转指令中的实际值是相对当前值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是位有符号数,左移两位后有符号扩展为位,表示的有效偏移为位(前后的地址空间)。以下指令:;程序无条件跳转到标号处执行,;当寄存器中的条件码置位时,程序跳转到标号处执行、指令指令的格式为:条件 目标地址是另一个跳转指令,但跳转之前,会在寄存器中保存的当前内容,因此,可以通过将的内容重新加载到中,来返回到跳转指令之后的那个指令处执行。该指令是实现子程序调用的一个基本但常用的手段。以 下指令:;当程序无条件跳转
3、到标号处执行时,同时将当前的值保存到; ()中、指令指令的格式为:目标地址指令从指令集跳转到指令中所指定的目标地址,并将处理器的工作状态有状态切换到状态,该指令同时将的当前内容保存到寄存器中。因此,当子程序使用指令集,而调用者使用指令集时,可以通过指令实现子程序的调用和处理器工作状态的切换。同时,子程序的返回可以通过将寄存器值复制到中来完成。、指令指令的格式为:条件 目标地址指令跳转到指令中所指定的目标地址,目标地址处的指令既可以是指令,也可以是指令。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - -
4、 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 2 / 21 二、数据处理指令数据处理指令可分为数据传送指令、算术逻辑运算指令和比较指令等。数据传送指令用于在寄存器和存储器之间进行数据的双向传输;算术逻辑运算指令完成常用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器中,同时更新中的相应条件标志位;比较指令不保存运算结果,只更新中相应的条件标志位。数据处理指令共以下条。、指令(传送)指令的格式为:条件 目的寄存器,源操作数指令可完成从另一个寄存器、被移位的寄存器或将一个立即数加载到目的寄存器。其中选项决定指令的操作是否影响中条件标志位的值,
5、当没有时指令不更新中条件标志位的值。指令示例:,;将寄存器的值传送到寄存器,;将寄存器的值传送到,常用于子程序返回, ,;将寄存器的值左移位后传送到、指令(求反)指令的格式为:条件 目的寄存器,源操作数指令可完成从另一个寄存器、被移位的寄存器、或将一个立即数加载到目的寄存器。与指令不同之处是在传送之前按位被取反了,即把一个被取反的值传送到目的寄存器中。其中决定指令的操作是否影响中条件标志位的值,当没有时指令不更新中条件标志位的值。指令示例:,;将立即数取反传送到寄存器中,完成后、指令(比较)指令的格式为:条件 操作数,操作数指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更
6、新中条件标志位的值。 该指令进行一次减法运算,但不存储结果,只更改条件标志位。标志位表示的是操作数与操作数的关系(大、小、相等 ),例如,当操作数大于操作操作数,则此后的有后缀的指令将可以执行。指令示例:,;将寄存器的值与寄存器的值相减,并根据结果设置的标;志位,;将寄存器的值与立即数相减,并根据结果设置的标志位、指令(负数比较)指令的格式为:条件 操作数,操作数指令用于把一个寄存器的内容和另一个寄存器的内容或立即数取反后进行比较,同时更新中条件标志位的值。该指令实际完成操作数和操作数相加,并根据结果更改条件标志位。指令示例:,;将寄存器的值与寄存器的值相加,并根据结果设置;的标志位,;将寄存
7、器的值与立即数相加,并根据结果设置的标志位名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 3 / 21 、指令(测试)指令的格式为:条件 操作数,操作数指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的与运算,并根据运算结果更新中条件标志位的值。操作数是要测试的数据,而操作数是一个位掩码,该指令一般用来检测是否设置了特定的位。指令示例:,;用于测试在寄存器中是否设置了最低位(表示二进制数),;将
8、寄存器的值与立即数按位与,并根据结果设置;的标志位、指令(测试相等)指令的格式为:条件 操作数,操作数指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行按位的异或运算,并根据运算结果更新中条件标志位的值。该指令通常用于比较操作数和操作数是否相等。指令示例:,;将寄存器的值与寄存器的值按位异或,并根据结果设置;的标志位、指令(相加)指令的格式为: 条件 目的寄存器,操作数,操作数指令用于把两个操作数相加,并将结果存放到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。指令示例:, ,;, ,;, , ,;( ) 、指令(带进位相加)指令的格式为:条
9、件 目的寄存器,操作数,操作数指令用于把两个操作数相加,再加上中的条件标志位的值,并将结果存放到目的寄存器中。它使用一个进位标志位,这样就可以做比位大的数的加法,注意不要忘记设置后缀来更改进位标志。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。以下指令序列完成两个位数的加法,第一个数由高到低存放在寄存器,第二个数由高到低存放在寄存器,运算结果由高到低存放在寄存器:, ,; 加低端的字, ,; 加第二个字,带进位, ,; 加第三个字,带进位, ,; 加第四个字,带进位、指令(相减)指令的格式为:条件 目的寄存器,操作数,操作数指令用于把操作数减去操作数,并将结果存放
10、到目的寄存器中。操作数应是一个寄存器,操名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 4 / 21 作数可以是一个寄存器,被移位的寄存器,或一个立即数。该指令可用于有符号数或无符号数的减法运算。指令示例:, ,;, ,;, , ,;( ) 、指令指令的格式为:条件 目的寄存器,操作数,操作数指令用于把操作数减去操作数,再减去中的条件标志位的反码,并将结果存放到目的寄存器中。操作数应是一个寄存器,操作数可以是
11、一个寄存器, 被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于位的减法,注意不要忘记设置后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。指令示例:, ,;! ,并根据结果设置的进位标志位、指令指令的格式为:条件 目的寄存器,操作数,操作数指令称为逆向减法指令,用于把操作数减去操作数,并将结果存放到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。该指令可用于有符号数或无符号数的减法运算。指令示例:, ,;, ,;, , ,;( ) 、指令(反向带进位减)指令的格式为:条件 目的寄存器,操作数,操作数指令用于把操作
12、数减去操作数,再减去中的条件标志位的反码,并将结果存放到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。该指令使用进位标志来表示借位,这样就可以做大于位的减法,注意不要忘记设置后缀来更改进位标志。该指令可用于有符号数或无符号数的减法运算。指令示例:, ,;!、指令(逻辑位与)指令的格式为: 条件 目的寄存器,操作数,操作数指令用于在两个操作数上进行逻辑与运算,并把结果放置到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于屏蔽操作数的某些位。指令示例:, ,;该指令保持的、位,其余位清零。、指令(逻辑
13、位或)指令的格式为:名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 5 / 21 条件 目的寄存器,操作数,操作数指令用于在两个操作数上进行逻辑或运算,并把结果放置到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于设置操作数的某些位。指令示例:, ,;该指令设置的、位,其余位保持不变。、指令(逻辑位异或)指令的格式为: 条件 目的寄存器,操作数,操作数指令
14、用于在两个操作数上进行逻辑异或运算,并把结果放置到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。该指令常用于反转操作数的某些位。指令示例:, ,;该指令反转的、位,其余位保持不变。、指令(位清零)指令的格式为: 条件 目的寄存器,操作数,操作数指令用于清除操作数的某些位,并把结果放置到目的寄存器中。操作数应是一个寄存器,操作数可以是一个寄存器,被移位的寄存器,或一个立即数。操作数为位的掩码,如果在掩码中设置了某一位,则清除这一位。未设置的掩码位保持不变。指令示例:, ,;该指令清除中的位、 、和,其余的位保持不变。三、乘法指令与乘加指令微处理器支持的
15、乘法指令与乘加指令共有条,可分为运算结果为位和运算结果为位两类,与前面的数据处理指令不同,指令中的所有操作数、目的寄存器必须为通用寄存器,不能对操作数使用立即数或被移位的寄存器,同时,目的寄存器和操作数必须是不同的寄存器。乘法指令与乘加指令共有以下条:、指令(相乘)指令的格式为: 条件 目的寄存器,操作数,操作数指令完成将操作数与操作数的乘法运算,并把结果放置到目的寄存器中,同时可以根据运算结果设置中相应的条件标志位。其中,操作数和操作数均为位的有符号数或无符号数。指令示例:, ,;, ,;,同时设置中的相关条件标志位、指令(带累加的相乘)指令的格式为: 条件 目的寄存器,操作数,操作数,操作
16、数指令完成将操作数与操作数的乘法运算,再将乘积加上操作数,并把结果放置到目的寄存器中,同时可以根据运算结果设置中相应的条件标志位。其中,操作数和操作数均为位的有符号数或无符号数。指令示例:名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 6 / 21 , , ,;, , ,;,同时设置中的相关条件标志位、指令指令的格式为: 条件 目的寄存器,目的寄存器,操作数,操作数指令完成将操作数与操作数的乘法运算,并把结果
17、的低位放置到目的寄存器中,结果的高位放置到目的寄存器中,同时可以根据运算结果设置中相应的条件标志位。其中,操作数和操作数均为位的有符号数。指令示例:, , ,;( )的低位;( )的高位、指令指令的格式为:条件 目的寄存器,目的寄存器,操作数,操作数指令完成将操作数与操作数的乘法运算,并把结果的低位同目的寄存器中的值相加后又放置到目的寄存器中,结果的高位同目的寄存器中的值相加后又放置到目的寄存器中,同时可以根据运算结果设置中相应的条件标志位。其中,操作数和操作数均为位的有符号数。对于目的寄存器,在指令执行前存放位加数的低位,指令执行后存放结果的低位;对于目的寄存器,在指令执行前存放位加数的高位
18、,指令执行后存放结果的高位。指令示例:, , ,;( )的低位;( )的高位、指令指令的格式为:条件 目的寄存器,目的寄存器,操作数,操作数指令完成将操作数与操作数的乘法运算,并把结果的低位放置到目的寄存器中,结果的高位放置到目的寄存器中,同时可以根据运算结果设置中相应的条件标志位。其中,操作数和操作数均为位的无符号数。指令示例:, , ,;( )的低位;( )的高位、指令指令的格式为:条件 目的寄存器,目的寄存器,操作数,操作数指令完成将操作数与操作数的乘法运算,并把结果的低位同目的寄存器中的值相加后又放置到目的寄存器中,结果的高位同目的寄存器中的值相加后又放置到目的寄存器中,同 时可以根据
19、运算结果设置中相应的条件标志位。其中,操作数和操作数均为位的无符号数。对于目的寄存器,在指令执行前存放位加数的低位,指令执行后存放结果的低位;对于目的寄存器,在指令执行前存放位加数的高位,指令执行后存放结果的高位。指令示例:, , ,;( )的低位;( )的高位四、程序状态寄存器访问指令、指令名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 6 页,共 21 页 - - - - - - - - - 7 / 21 指令的格式为:条件 通用寄存器程序状态寄存器(或)指令用
20、于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下两种情况:.当需要改变程序状态寄存器的内容时,可用将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。.当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。指令示例:,;传送的内容到,;传送的内容到、指令指令的格式为: 条件 程序状态寄存器(或),操作数指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。 用于设置程序状态寄存器中需要操作的位,位的程序状态寄存器可分为个域:位:为条件位域,用表示;位:为状态位域,用表示;位: 为扩展
21、位域,用表示;位: 为控制位域,用表示;该指令通常用于恢复或改变程序状态寄存器的内容,在使用时, 一般要在指令中指明将要操作的域。指令示例:,;传送的内容到,;传送的内容到,;传送的内容到,但仅仅修改中的控制位域五、加载存储指令。 微处理器支持加载存储指令用于在寄存器和存储器之间传送数据,加载指令用于将存储器中的数据传送到寄存器,存储指令则完成相反的操作。常用的加载存储指令如下:、指令指令的格式为:条件 目的寄存器, 指令用于从存储器中将一个位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取位的字数据到通用寄存器,然后对数据进行处理。当程序计数器作为目的寄存器时,指令从存储器中读取的字
22、数据被当作目的地址,从而可以实现程序流程的跳转。该指令在程序设计中比较常用,且寻址方式灵活多样,请读者认真掌握。指令示例:, ;将存储器地址为的字数据读入寄存器。, ;将存储器地址为的字数据读入寄存器。, ;将存储器地址为的字数据读入寄存器。, !;将存储器地址为的字数据读入寄存器,并将新地址;写入。, !;将存储器地址为的字数据读入寄存器,并将新地址;写入。名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 7 页,共 21 页 - - - - - - - - - 8
23、 / 21 , ,;将存储器地址为的字数据读入寄存器,并将新地址;写入。, , ! ;将存储器地址为 的字数据读入寄存器,并;将新地址 写入。, , ,;将存储器地址为的字数据读入寄存器,并将新地;址 写入。、指令指令的格式为: 条件 目的寄存器, 指令用于从存储器中将一个位的字节数据传送到目的寄存器中,同时将寄存器的高位清零。该指令通常用于从存储器中读取位的字节数据到通用寄存器,然后对数据进行处理。当程序计数器作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。指令示例:, ;将存储器地址为的字节数据读入寄存器,并将的高;位清零。, ;将存储器地址为的字节
24、数据读入寄存器,并将的;高位清零。、指令指令的格式为: 条件 目的寄存器, 指令用于从存储器中将一个位的半字数据传送到目的寄存器中,同时将寄存器的高位清零。该指令通常用于从存储器中读取位的半字数据到通用寄存器,然后对数据进行处理。当程序计数器作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。指令示例:, ;将存储器地址为的半字数据读入寄存器,并将的高;位清零。, ;将存储器地址为的半字数据读入寄存器,并将的;高位清零。, ;将存储器地址为的半字数据读入寄存器,并将的;高位清零。、指令指令的格式为: 条件 源寄存器, 指令用于从源寄存器中将一个位的字数据传送
25、到存储器中。该指令在程序设计中比较常用,且寻址方式灵活多样,使用方式可参考指令。指令示例:, ,;将中的字数据写入以为地址的存储器中,并将新地址;写入。, ;将中的字数据写入以为地址的存储器中。、指令指令的格式为: 条件 源寄存器, 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -精心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 8 页,共 21 页 - - - - - - - - - 9 / 21 指令用于从源寄存器中将一个位的字节数据传送到存储器中。该字节数据为源寄存器中的低位。指令示例:, ;将寄存器中的字节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年ARM汇编指令 2022 ARM 汇编 指令
限制150内