相关文章
汇编指令大全
2024-11-10 17:26

以下都是作者在学习IMX6ULL开发板的时候用到的指令。16位数据操作指令 名字 功能BIC  按位清零(把一个数跟另一个无符号数的反码按位与)

汇编指令大全

CPS 直接修改CPSR寄存器的bit位。即在特权模式下(除了用户模式,剩余的模式都是特权模式),可以通过CPS指令直接修改CPSR寄存器bit位,让处理器进入不同的模式。    例如:cps #0x13      就是把CPSR寄存器的bit4-0更改为0x13,让处理器进入SVC模式。       cps #0x12  就是把CPSR寄存器的bit4-0更改为0x12,让处理器进入IRQ模式。

POP  从堆栈中弹出若干的寄存器的值,  出栈。举个例子:

      答案是:5685被从栈中弹出,已不再栈中,原本存放5685的地方依然存在为5685,但他不再属于栈,所以5685已不再栈中。

PUSH    进栈

SUB   减法(Subtraction)不带借位的减法指令。——————ADD  加法 

    add和sub指令同mov一样,都有两个操作对象,它们也可以有以下几种形式:

      add 寄存器, 数据           add ax,9        把ax中的值加9放到ax中。      add 寄存器, 寄存器         add ax,bx        类似      add 寄存器,内存单元        add ax,[0]        类似      add 内存单元,寄存器        add [0],ax        类似

      sub 寄存器, 数据          sub ax,9        把ax中的值减9放到ax中。      sub 寄存器,寄存器      sub 寄存器,内存单元      sub 内存单元,寄存器

MUL  乘法(Multiplication)两个数位数一样,即都为8 | 16 | 32位。  乘数和被乘数的大小必须保持一致,乘积的大小则是它们的一倍。这三种类型都可以使用寄存器和内存操作数,但不能使用立即数:由于目的操作数是被乘数和乘数大小的两倍,因此不会发生溢岀。

DIV  除法  

CMP  比较(Compare,比较两个数并且更新标志) CPY  把一个寄存器的值拷贝(COPY)到另一个寄存器中 EOR  近位异或 LSL  逻辑左移(Logic Shift Left) LSR  逻辑右移(Logic Shift Right) MOV  寄存器加载数据,既能用于寄存器间的传输,也能用于加载立即数 MVN  加载一个数的 NOT值(取到逻辑反的值)NEG  取二进制补码ORR  按位或ROR  循环右移SBC  带借位的减法TST  测试(Test,执行按位与操作,并且根据结果更新Z)REV  在一个32位寄存器中反转(Reverse)字节序REVH  把一个32位寄存器分成两个(Half)16位数,在每个16位数中反转字节序REVSH  把一个32位寄存器的低16位半字进行字节反转,然后带符号扩展到32位SXTB  带符号(Signed)扩展一个字节(Byte)到 32位SXTH  带符号(Signed)扩展一个半字(Half)到 32位UXTB  无符号(Unsigned)扩展一个字节(Byte)到 32位UXTH  无符号(Unsigned)扩展一个半字(Half)到 32位

CMN  负向比较(把一个数跟另一个数据的二进制补码相比较)

ADC  带进位加法(ADD with Carry) AND  按位与。这里的按位与和C的”&”功能相同 ASR  算术右移(Arithmetic Shift Right)

16位转移指令 名字 功能B  无条件转移(Branch)B<cond>  有条件(Condition)转移BL  转移并连接(link)。用于呼叫一个子程序,返回地址被存储在LR中CBZ  比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)CBNZ  比较,如果结果非零(Non Zero)就转移(只能跳到后面的指令)IT  If-Then

16位存储器数据传送指令 名字 功能LDR  从存储器中加载(Load)字到一个寄存器(Register)中————————————————————————STR  存储指令   把一个寄存器按字存储(Store)到存储器中    也就是把寄存器中的数据存储到存储器地址中去   格式:   str 源寄存器  <存储器地址>

      str   r1,[r2]        ; 将r1中的值存到r2所指定的地址中

      str  r1,[r2,#4]   ;将r1中的值存到r2+4所指定的地址中

      str   r1,[r2],#4  ;将r1中的值存到r2所指定的地址中, 同时r2=r2+4

 

 

LDRH  从存储器中加载半(Half)字到一个寄存器中LDRB  从存储器中加载字节(Byte)到一个寄存器中LDRSH  从存储器中加载半字,再经过带符号扩展后存储一个寄存器中LDRSB  从存储器中加载字节,再经过带符号扩展后存储一个寄存器中STRH  把一个寄存器存器的低半字存储到存储器中STRB  把一个寄存器的低字节存储到存储器中LDMIA  加载多个字,并且在加载后自增基址寄存器STMIA  存储多个字,并且在存储后自增基址寄存器PUSH  压入多个寄存器到栈中POP  从栈中弹出多个值到寄存器中

其它16位指令 名字 功能SVC  系统服务调用(Service Call)BKPT  断点(Break Point)指令。如果调试被使能,则进入调试状态(停机)。NOP  无操作(No Operation)CPSIE  使能 PRIMASK(CPSIE i)/FAULTMASK(CPSIE f)——清零相应的位CPSID  除能 PRIMASK(CPSID i)/FAULTMASK(CPSID f)——置位相应的位

32位数据操作指令名字 功能ADC  带进位加法ADD  加法ADDW  宽加法(可以加 12 位立即数)AND  按位与(原文是逻辑与,有误——译注)ASR  算术右移BIC  位清零(把一个数按位取反后,与另一个数逻辑与)BFC  位段清零BFI  位段插入CMN  负向比较(把一个数和另一个数的二进制补码比较,并更新标志位)CMP  比较两个数并更新标志位CLZ  计算前导零的数目EOR  按位异或LSL  逻辑左移LSR  逻辑右移MLA  乘加MLS  乘减MOVW  把 16 位立即数放到寄存器的底16位,高16位清0MOV  加载16位立即数到寄存器(其实汇编器会产生MOVW——译注)MOVT  把 16 位立即数放到寄存器的高16位,低 16位不影响MVN  移动一个数的补码MUL  乘法ORR  按位或(原文为逻辑或,有误——译注)ORN  把源操作数按位取反后,再执行按位或(原文为逻辑或,有误——译注)RBIT  位反转(把一个 32 位整数先用2 进制表达,再旋转180度——译注)REV  对一个32 位整数做按字节反转REVH/REV16 对一个32 位整数的高低半字都执行字节反转REVSH  对一个32 位整数的低半字执行字节反转,再带符号扩展成32位数ROR  圆圈右移RRX  带进位的逻辑右移一格(最高位用C 填充,且不影响C的值——译注)SFBX  从一个32 位整数中提取任意的位段,并且带符号扩展成 32 位整数SDIV  带符号除法SMLAL  带符号长乘加(两个带符号的 32 位整数相乘得到 64 位的带符号积,再把积加到另一个带符号 64位整数中)SMULL  带符号长乘法(两个带符号的 32 位整数相乘得到 64位的带符号积)SSAT  带符号的饱和运算SBC  带借位的减法SUB  减法SUBW  宽减法,可以减 12 位立即数SXTB  字节带符号扩展到32位数TEQ  测试是否相等(对两个数执行异或,更新标志但不存储结果)TST  测试(对两个数执行按位与,更新Z 标志但不存储结果)UBFX  无符号位段提取UDIV  无符号除法UMLAL  无符号长乘加(两个无符号的 32 位整数相乘得到 64 位的无符号积,再把积加到另一个无符号 64位整数中)UMULL  无符号长乘法(两个无符号的 32 位整数相乘得到 64位的无符号积)USAT  无符号饱和操作(但是源操作数是带符号的——译注)UXTB  字节被无符号扩展到32 位(高24位清0——译注)UXTH  半字被无符号扩展到32 位(高16位清0——译注)

32位存储器数据传送指令 名字 功能LDR  加载字到寄存器LDRB  加载字节到寄存器LDRH  加载半字到寄存器LDRSH  加载半字到寄存器,再带符号扩展到 32位LDM  从一片连续的地址空间中加载多个字到若干寄存器LDRD  从连续的地址空间加载双字(64 位整数)到2 个寄存器STR  存储寄存器中的字STRB  存储寄存器中的低字节STRH  存储寄存器中的低半字STM  存储若干寄存器中的字到一片连续的地址空间中STRD  存储2 个寄存器组成的双字到连续的地址空间中PUSH  把若干寄存器的值压入堆栈中

32位转移指令 名字 功能B  无条件转移BL  转移并连接(呼叫子程序)TBB  以字节为单位的查表转移。从一个字节数组中选一个8位前向跳转地址并转移TBH  以半字为单位的查表转移。从一个半字数组中选一个16 位前向跳转的地址并转移

    以上就是本篇文章【汇编指令大全】的全部内容了,欢迎阅览 ! 文章地址:http://nhjcxspj.xhstdz.com/news/2462.html 
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 物流园资讯移动站 http://nhjcxspj.xhstdz.com/mobile/ , 查看更多   
最新文章
适合中老年游戏活动的项目有哪些?
引言:为何中老年游戏活动尤为重要 随着社会的不断发展和生活水平的提升,中老年人的生活方式也随之改变。对于他们来说,健康和快乐成为了生活的重要组成部分。而游戏活动,不仅能够增加社交互动,还能锻炼身体与思维。因此,选择适合中老
上海旅游攻略:探访繁华之都的风情韵味
引言:开启上海的奇妙之旅 上海,这座迷人的城市,拥有着深厚的文化底蕴与现代化的繁华景象,无论是初次造访还是再次归来,都会让人惊叹于它独特的风情韵味。在这里,历史与现代交融,传统与创新并存,等待着你去探索这座繁华之都的每个角
高新企业网站优化方法大揭秘!
高新企业网站的重要性 随着互联网的快速发展,企业网站已经成为企业宣传、推广和营销的重要渠道。对于高新技术企业来说,网站更是展示企业形象、产品技术、行业影响力的窗口。因此,如何优化企业网站,提升网站的曝光率和用户体验成为了高
探索旅游景区的独特魅力:人文、自然与体验的完美结合”
引言:旅游景区的魅力所在 在如今快节奏的生活中,越来越多的人选择通过旅行来放松身心,寻找内心的宁静。在旅游的过程中,景区的选择则显得尤为重要。一个优质的旅游景区不仅仅是壮丽的自然风光,还有深厚的人文底蕴和丰富的体验活动。本
提升健康与活力:探索运动健身的多样化内容与方法
引言:健身的时代已来临 随着人们生活水平的提高,越来越多的人开始关注自身的健康与活力。运动健身不再是一种单一的方式,而是发展出了多样化的内容与方法。无论是为了减肥、塑形,还是增强体质,运动健身都成为了许多人的日常习惯和生活
80岁老人旅游规定的常见问题及注意事项解析
引言:老年人的旅游热潮 随着社会的发展和生活水平的提升,越来越多的老年人开始积极参与到旅游活动中。他们用实际行动证明,年龄并不是旅途的限制,反而是丰富人生经验的体现。虽然老年游客在旅途中享有更多的自由和乐趣,但在旅游规定及
AI写作论文是否会被检测?解密检测机制!
引言:AI写作的崛起 近年来,人工智能(AI)技术的发展迅猛,尤其是在写作领域。AI写作工具不仅能生成高质量的文章,还能满足不同用户的需求,成为内容创作的得力助手。然而,伴随着AI写作的普及,一个新的问题也逐渐显现出来:AI写作论文
几月份去兰州旅游最宜?
探索兰州的四季魅力 兰州,作为甘肃省的省会,坐落于黄河之畔,是一座历史悠久的城市,兼具独特的自然风貌与深厚的人文底蕴。每个季节,兰州展现出不同的面貌,吸引着四面八方的游客前来探索。那到底几月份去兰州旅游最为宜人呢?接下来,
探索中国旅游标志的原型与文化内涵的深度解读
探索中国旅游标志的原型与文化内涵 中国作为一个拥有悠久历史和丰富文化的国家,其旅游标志更是象征着一种独特的文化内涵。中国旅游标志的原型多取材于中国传统艺术元素,加之对中国文化的理解与诠释,形成了独具魅力的形象。 中国国徽与中
轻松搞定!服务器配置RAID:提高性能数据安全双保险!
轻松搞定!服务器配置RAID:提高性能数据安全双保险! 随着信息技术的不断发展,服务器在企业中扮演着至关重要的角色。为了提高性能和数据安全,服务器配置RAID已经成为了一种常见的选择。RAID(Redundant Array of Independent Disks)即
相关文章