Skip to main content
 首页 » 新能源

汇编指令大全(汇编指令大全简介)

2026-02-06 12:02:0998117

今天给各位分享汇编指令大全的汇编汇编知识,其中也会对汇编指令大全下载进行解释,指令指令如果能碰巧解决你现在面临的大全大全问题,别忘了关注本站,简介现在开始吧!汇编汇编

汇编基础 汇编指令

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)

Bcond 有条件(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 从栈中弹出多个值到寄存器中

其它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 从堆栈中弹出若干的寄存器的值

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等有关——译注)

实用汇编指令

1.跳转指令

B 无条件跳转

BL 带链接的无条件跳转

BX 带状态切换的无条件跳转 根据目标地址最低位切换状态(arm/thumb)

BLX 带链接和状态切换的无条件跳转

B loc_地址

BEQ,BNE

2.存储器与寄存器交互数据指令 核心

3.数据传送指令

MOV:将立即数或寄存器的数据传送到目标寄存器 ←

MOV R0, #8 R0=8

4.数据算术运算指令

ADD,SUB,MUL,DIV

有符号,无符号运算;带进位运算

5.数据逻辑运算指令

与:AND

或:ORR

异或:EOR

移位:实质是乘,除,类似于小数点移位,但相反。小数点左移,数变小;右移变大。

但逻辑移位,左移变大,右移变小,且按2的倍数进行,因为是2进制。

LSL:逻辑左移←

LSR:逻辑右移←

6.比较指令

CMP:比较

CMP R0 #0 R0寄存器中的值与0比较

标志位:如z位,这个都可以在动态调试时,寄存器窗口看到

7.其他指令

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

伪指令:DCB

8.寄存器寻址方式

立即寻址: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,#0x14+var_20]

汇编语言指令大全,要详细的 !!!!

最佳答案IBM-PC汇编语言指令集

数据传送指令集

MOV

功能: 把源操作数送给目的操作数

语法: MOV 目的操作数,源操作数

格式: MOV r1,r2

MOV r,m

MOV m,r

MOV r,data

XCHG

功能: 交换两个操作数的数据

语法: XCHG

格式: XCHG r1,r2 XCHG m,r XCHG r,m

PUSH,POP

功能: 把操作数压入或取出堆栈

语法: PUSH 操作数 POP 操作数

格式: PUSH r PUSH M PUSH data POP r POP m

PUSHF,POPF,PUSHA,POPA

功能: 堆栈指令群

格式: PUSHF POPF PUSHA POPA

LEA,LDS,LES

功能: 取地址至寄存器

语法: LEA r,m LDS r,m LES r,m

XLAT(XLATB)

功能: 查表指令

语法: XLAT XLAT m

算数运算指令

ADD,ADC

功能: 加法指令

语法: ADD OP1,OP2 ADC OP1,OP2

格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data

影响标志: C,P,A,Z,S,O

SUB,SBB

功能:减法指令

语法: SUB OP1,OP2 SBB OP1,OP2

格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data

影响标志: C,P,A,Z,S,O

INC,DEC

功能: 把OP的值加一或减一

语法: INC OP DEC OP

格式: INC r/m DEC r/m

影响标志: P,A,Z,S,O

NEG

功能: 将OP的符号反相(取二进制补码)

语法: NEG OP

格式: NEG r/m

影响标志: C,P,A,Z,S,O

MUL,IMUL

功能: 乘法指令

语法: MUL OP IMUL OP

格式: MUL r/m IMUL r/m

影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)

DIV,IDIV

功能:除法指令

语法: DIV OP IDIV OP

格式: DIV r/m IDIV r/m

CBW,CWD

功能: 有符号数扩展指令

语法: CBW CWD

AAA,AAS,AAM,AAD

功能: 非压BCD码运算调整指令

语法: AAA AAS AAM AAD

影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)

DAA,DAS

功能: 压缩BCD码调整指令

语法: DAA DAS

影响标志: C,P,A,Z,S

位运算指令集

AND,OR,XOR,NOT,TEST

功能: 执行BIT与BIT之间的逻辑运算

语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m

影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位

SHR,SHL,SAR,SAL

功能: 移位指令

语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

影响标志: C,P,Z,S,O

ROR,ROL,RCR,RCL

功能: 循环移位指令

语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL

影响标志: C,P,Z,S,O

程序流程控制指令集

CLC,STC,CMC

功能: 设定进位标志

语法: CLC STC CMC

标志位: C

CLD,STD

功能: 设定方向标志

语法: CLD STD

标志位: D

CLI,STI

功能: 设定中断标志

语法: CLI STI

标志位: I

CMP

功能: 比较OP1与OP2的值

语法: CMP r/m,r/m/data

标志位: C,P,A,Z,O

JMP

功能: 跳往指定地址执行

语法: JMP 地址

JXX

功能: 当特定条件成立则跳往指定地址执行

语法: JXX 地址

注:

A: ABOVE,当C=0,Z=0时成立

B: BELOW,当C=1时成立

C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立

E: EQUAL,当Z=1时成立

G: GREATER(大于),当Z=0且S=0时成立

L: LESS(小于),当S不为零时成立

N: NOT(相反条件),需和其它符号配合使用

O: OVERFLOW,O=1时成立

P: PARITY,P=1时成立

PE: PARITY EVEN,P=1时成立

PO: PARITY ODD,P=0时成立

S: SIGN,S=1时成立

Z: ZERO,Z=1时成立

LOOP

功能: 循环指令集

语法: LOOP 地址

LOOPE(Z)

地址 LOOPNE(Z) 地址

标志位: 无

CALL,RET

功能: 子程序调用,返回指令

语法: CALL 地址 RET RET n

标志位: 无

INT,IRET

功能: 中断调用及返回指令

语法: INT n IRET

标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器

字符串操作指令集

MOVSB,MOVSW,MOVSD

功能: 字符串传送指令

语法: MOVSB MOVSW MOVSD

标志位: 无

CMPSB,CMPSW,CMPSD

功能: 字符串比较指令

语法: CMPSB CMPSW CMPSD

标志位: C,P,Z,S,O

SCASB,SCASW

功能: 字符串搜索指令

语法: SCASB SCASW

标志位: C,P,Z,S,O

LODSB,LODSW,STOSB,STOSW

功能: 字符串载入或存贮指令

语法: LODSB LODSW STOSB STOSW

标志位: 无

REP,REPE,REPNE

功能: 重复前缀指令集

语法: REP 指令S REPE 指令S REPNE 指令S

标志位: 依指令S而定

对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。

这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与amay联系,amay加以更新。

1)数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。

数据传送指令类型 指 令 说 明

通用数据传送指令 MOV(传送)、PUSH(进栈)、POP(出栈)、XCHG(交换)

累加器专用传送指令 IN(输入指令) 、OUT(输入指令)

地址传送指令 LEA(有效地址送寄存器)、LDS(指针送寄存器和DS)、LES(指针送寄存器和ES)

标志寄存器传送指令 LAHF(标志送AH)、SAHF(AH送标志寄存器)、PUSHF(标志进栈)、POPF(标志出栈)

2)算术指令:用来执行算术运算。

算术指令类型 指 令 说 明

加法指令 ADD(加法)、ADC(带进位加法)、INC(加1)

减法指令 SUB(减法)、SBB(带借位减法)、DEC(减1)、NEG(求补)、CMP(比较)

乘法指令 MUL(无符号数乘法)、IMUL(带符号数乘法)

除法指令 DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)

3)逻辑指令:对字或字节执行逻辑运算。

逻辑指令类型 指 令 说 明

逻辑运算指令 AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)

移动指令 SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)

4)串处理指令:处理存放存储器里的数据串。

串处理指令类型 指 令 说 明

指 令 MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)

5)控制转移指令:用来控制程序的执行流程。

控制转移指令类型 指 令 说 明

无条件转移指令 JMP(段间和段内转移)

条件转移指令 JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)

循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)

子程序指令 CALL(调用指令)、RET(返回指令)

中断指令 INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)

汇编指令大全的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于汇编指令大全下载、汇编指令大全的信息别忘了在本站进行查找喔。

评论列表暂无评论
发表评论