汇编基础 汇编指令

汇编基础 汇编指令,第1张

当下的年轻人,有多少人的梦想就是未来进入IT行业,闯一闯。但是IT行业一年比一年发展的快,今天是这种IT技术占据着头条,明天可能是那种IT技术占据着头条,到底学什么样的IT技术好呢今天就跟IT培训一起来关注下,IT行业里选什么比较好呢Java好。

IT行业里能选择学的东西真的是太多了,日新月异,到底学什么样的IT技术好呢其实不管IT行业怎么变,想成为IT行业中的一员,那么就必须懂一门编程语言,编程语言(programminglanguage),是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

进入IT行业,那么就必须懂一门编程语言,那么编程语言的种类也是繁多,该从哪种编程语言学起呢目前来说,在IT行业中最受程序员欢迎的编程语言就是~Java语言,Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等等。

IT行业里选什么比较好呢Java。Java拥有着众多的优势,所以在编程语言市场上屹立不倒,占据着高达20%的份额,其他编程语言完全做不到这样。

选择Code128需要在条码内容前面增加字符编码集选择字符(CODE A, CODE B, or CODE C)。\x0d\ASCII码十六进制十进制\x0d\SHIFT {S 7B,53123,83\x0d\CODE A {A 7B,41 123,65\x0d\CODE B{B 7B,42 123,66\x0d\CODE C {C 7B,43 123,67\x0d\FNC1{1 7B,31 123,49\x0d\FNC2 {27B,32123,50\x0d\FNC3{37B,33 123,51\x0d\FNC4{47B,34 123,52\x0d\“{” {{ 7B,7B123,123\x0d\\x0d\例如你的pwwrite("2013062900001"); 要写成pwwrite("{B2013062900001"),选择CODE B\x0d\Code A、CODE B CODE C的差别如下:\x0d\CODE128A: 标准数字和字母, 控制符, 特殊字符\x0d\CODE128B: 标准数字和字母, 小写字母, 特殊字符\x0d\CODE128C: [00]-[99]的数字对集合, 共100个(只能包含数字,一个条码字符代表两位数字)

16位数据 *** 作指令

名字 功能

ADC 带进位加法(ADD with Carry)

ADD 加法

AND 按位与。这里的按位与和C的”&”功能相同

ASR 算术右移(Arithmetic Shift Right)

BIC 按位清零(把一个数跟另一个无符号数的反码按位与)

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

CMP 比较(Compare,比较两个数并且更新标志)

CMP 把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。

一般CMP做完判断后会进行跳转,后面通常会跟上B指令!

CPY 把一个寄存器的值拷贝(COPY)到另一个寄存器中

EOR 近位异或

LSL 逻辑左移(Logic Shift Left)

LSR 逻辑右移(Logic Shift Right)

MOV 寄存器加载数据,既能用于寄存器间的传输,也能用于加载立即数

MUL 乘法(Multiplication)

MVN 加载一个数的 NOT值(取到逻辑反的值)

NEG 取二进制补码

ORR 按位或

ROR 循环右移

SBC 带借位的减法

SUB 减法(Subtraction)

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位

16位转移指令

名字 功能

B 无条件转移(Branch)

B<cond> 有条件(Condition)转移

BL 转移并连接(Link)。用于呼叫一个子程序,返回地址被存储在LR中

CBZ 比较(Compare),如果结果为零(Zero)就转移(只能跳到后面的指令)

CBNZ 比较,如果结果非零(Non Zero)就转移(只能跳到后面的指令)

IT If-Then

16位存储器数据传送指令

名字 功能

LDR 从存储器中加载(Load)字到一个寄存器(Register)中

LDRH 从存储器中加载半(Half)字到一个寄存器中

LDRB 从存储器中加载字节(Byte)到一个寄存器中

LDRSH 从存储器中加载半字,再经过带符号扩展后存储一个寄存器中

LDRSB 从存储器中加载字节,再经过带符号扩展后存储一个寄存器中

STR 把一个寄存器按字存储(Store)到存储器中

STRH 把一个寄存器存器的低半字存储到存储器中

STRB 把一个寄存器的低字节存储到存储器中

LDMIA 加载多个字,并且在加载后自增基址寄存器

STMIA 存储多个字,并且在存储后自增基址寄存器

PUSH 压入多个寄存器到栈中

POP 从栈中d出多个值到寄存器中

其它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位清0

MOV 加载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 把若干寄存器的值压入堆栈中

POP 从堆栈中d出若干的寄存器的值

32位转移指令

名字 功能

B 无条件转移

BL 转移并连接(呼叫子程序)

TBB 以字节为单位的查表转移。从一个字节数组中选一个8位前向跳转地址并转移

TBH 以半字为单位的查表转移。从一个半字数组中选一个16 位前向跳转的地址并转移

其它32位指令

LDREX 加载字到寄存器,并且在内核中标明一段地址进入了互斥访问状态

LDREXH 加载半字到寄存器,并且在内核中标明一段地址进入了互斥访问状态

LDREXB 加载字节到寄存器,并且在内核中标明一段地址进入了互斥访问状态

STREX 检查将要写入的地址是否已进入了互斥访问状态,如果是则存储寄存器的字

STREXH 检查将要写入的地址是否已进入了互斥访问状态,如果是则存储寄存器的半字

STREXB 检查将要写入的地址是否已进入了互斥访问状态,如果是则存储寄存器的字节

CLREX 在本地的处理上清除互斥访问状态的标记(先前由 LDREX/LDREXH/LDREXB做的标记)

MRS 加载特殊功能寄存器的值到通用寄存器

MSR 存储通用寄存器的值到特殊功能寄存器

NOP 无 *** 作

SEV 发送事件

WFE 休眠并且在发生事件时被唤醒

WFI 休眠并且在发生中断时被唤醒

ISB 指令同步隔离(与流水线和 MPU等有关——译注)

DSB 数据同步隔离(与流水线、MPU 和cache等有关——译注)

DMB 数据存储隔离(与流水线、MPU 和cache等有关——译注)

以上就是关于IT培训分享IT行业可以学哪些技术全部的内容,包括:IT培训分享IT行业可以学哪些技术、用ESC/POS指令如何打印CODE128的条形码、汇编基础 汇编指令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/8840628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-22
下一篇 2023-04-22

发表评论

登录后才能评论

评论列表(0条)

保存