嵌入式硬件篇---常用的汇编语言指令
- 其他
- 2025-08-29 12:18:01

文章目录 前言汇编语言简介1. 数据传送指令MOVPUSHPOPXCHG 2. 算术运算指令ADDSUBMULDIVINCDEC 3. 逻辑运算指令ANDORXORNOTSHL/SHR 4. 控制转移指令JMPCALLRETJE/JZJNE/JNZJG/JNLEJL/JNGE 5. 比较与测试指令CMPTEST 6. 标志寄存器操作指令STCCLCSTDCLD 7. 字符串操作指令MOVSLODSSTOSBREP 8. 输入输出指令INOUT 9. 处理器控制指令NOPHLTINTIRET 10. 其他常用指令LEANEG 总结总结
前言
本文仅仅简单介绍了汇编语言中常用的指令。
汇编语言简介
汇编语言是一种低级编程语言,与机器语言非常接近,通常用于编写底层系统软件或优化性能关键代码。汇编语言指令与CPU架构密切相关,不同架构(如x86、ARM、MIPS等)的指令集不同。以下是常见的汇编语言指令分类及其功能介绍:
1. 数据传送指令用于在寄存器、内存和I/O端口之间传输数据。
MOVMOV:将数据从源操作数复制到目标操作数。 MOV AX, BX ; 将BX的值复制到AX
PUSHPUSH:将数据压入栈。 PUSH AX ; 将AX的值压入栈
POPPOP:从栈中弹出数据。 POP BX ; 将栈顶数据弹出到BX
XCHGXCHG:交换两个操作数的值。 XCHG AX, BX ; 交换AX和BX的值
2. 算术运算指令用于执行基本的算术运算。
ADDADD:将两个操作数相加。 ADD AX, BX ; AX = AX + BX
SUBSUB:将两个操作数相减。 SUB AX, BX ; AX = AX - BX
MULMUL:无符号乘法。 MUL BX ; AX = AX * BX(结果存储在DX:AX中)
DIVDIV:无符号除法。 DIV BX ; AX = AX / BX(商在AX,余数在DX)
INCINC:将操作数加1。 INC AX ; AX = AX + 1
DECDEC:将操作数减1。 DEC AX ; AX = AX - 1
3. 逻辑运算指令用于执行逻辑操作。
ANDAND:按位与操作。 AND AX, BX ; AX = AX & BX
OROR:按位或操作。 OR AX, BX ; AX = AX | BX
XORXOR:按位异或操作。 XOR AX, BX ; AX = AX ^ BX
NOTNOT:按位取反操作。 NOT AX ; AX = ~AX
SHL/SHRSHL/SHR:逻辑左移/右移。 SHL AX, 1 ; 将AX左移1位 SHR AX, 1 ; 将AX右移1位
4. 控制转移指令用于改变程序的执行流程。
JMPJMP:无条件跳转。 JMP label ; 跳转到label处
CALLCALL:调用子程序。 CALL func ; 调用func函数
RETRET:从子程序返回。 RET ; 返回到调用者 条件跳转指令:根据标志寄存器状态跳转。
JE/JZJE/JZ:等于/为零时跳转。 JE label ; 如果ZF=1,跳转到label
JNE/JNZJNE/JNZ:不等于/不为零时跳转。 JNE label ; 如果ZF=0,跳转到label
JG/JNLEJG/JNLE:大于时跳转。 JG label ; 如果ZF=0且SF=OF,跳转到label
JL/JNGEJL/JNGE:小于时跳转。 JL label ; 如果SF≠OF,跳转到label
5. 比较与测试指令用于比较或测试操作数的值。
CMPCMP:比较两个操作数(相当于SUB,但不保存结果)。 CMP AX, BX ; 比较AX和BX,设置标志寄存器
TESTTEST:按位与操作(不保存结果)。 TEST AX, BX ; AX & BX,设置标志寄存器
6. 标志寄存器操作指令用于操作标志寄存器。
STCSTC:设置进位标志(CF=1)。 STC ; CF = 1
CLCCLC:清除进位标志(CF=0)。 CLC ; CF = 0
STDSTD:设置方向标志(DF=1,字符串操作从高地址向低地址)。 STD ; DF = 1
CLDCLD:清除方向标志(DF=0,字符串操作从低地址向高地址)。 CLD ; DF = 0
7. 字符串操作指令用于处理字符串或数据块。
MOVSMOVS:移动字符串(从源地址复制到目标地址)。 MOVSB ; 复制一个字节 MOVSW ; 复制一个字
LODSLODS:加载字符串到累加器。 LODSB ; 加载一个字节到AL
STOSBSTOS:将累加器的值存储到字符串。 STOSB ; 将AL的值存储到目标地址
REPREP:重复执行指令(通常与MOVS、LODS、STOS等配合使用)。 REP MOVSB ; 重复复制字节,直到CX=0
8. 输入输出指令用于与I/O端口通信。
ININ:从I/O端口读取数据。 IN AL, 60h ; 从端口60h读取一个字节到AL
OUTOUT:向I/O端口写入数据。 OUT 60h, AL ; 将AL的值写入端口60h
9. 处理器控制指令用于控制CPU行为。
NOPNOP:空操作(用于延时或占位)。 NOP ; 无操作
HLTHLT:暂停CPU。 HLT ; 暂停CPU
INTINT:触发软中断。 INT 21h ; 触发中断21h
IRETIRET:从中断返回。 IRET ; 返回到中断前的状态
10. 其他常用指令 LEALEA:加载有效地址。 LEA AX, [BX+SI+10] ; 将BX+SI+10的地址加载到AX
NEGNEG:取反操作。 NEG AX ; AX = -AX
总结汇编语言指令直接操作硬件,因此需要熟悉目标CPU的指令集和寄存器结构。常用的指令包括数据传送、算术运算、逻辑运算、控制转移、字符串操作等。掌握这些指令是编写高效汇编代码的基础。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了汇编语言中常用的指令。
嵌入式硬件篇---常用的汇编语言指令由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“嵌入式硬件篇---常用的汇编语言指令”