首页 > 编程语言 >汇编指令大全

汇编指令大全

时间:2024-05-15 23:51:43浏览次数:16  
标签:汇编 传送 DI 地址 CX 指令 寄存器 大全

8080汇编手册数据传输指令

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。

通用数据传送指令

  • MOV 传送字或字节。
  • MOVSX 先符号扩展,再传送。
  • MOVZX 先零扩展,再传送。
  • PUSH 把字压入堆栈。
  • POP 把字弹出堆栈。
  • PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈。
  • POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈。
  • PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈。
  • POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈。
  • BSWAP 交换32位寄存器里字节的顺序。
  • XCHG 交换字或字节。( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
  • CMPXCHG 比较并交换操作数。( 第二个操作数必须为累加器AL/AX/EAX )
  • XADD 先交换再累加。( 结果在第一个操作数里 )
  • XLAT 字节查表转换。
    • BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果。 ( [BX+AL]->AL )

输入输出端口传送指令

  • IN I/O端口输入。 ( 语法: IN 累加器, {端口号│DX} )
  • OUT I/O端口输出。 ( 语法: OUT {端口号│DX},累加器 )

输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535。

目的地址传送指令

  • LEA 装入有效地址。
    • 例: LEA DX,string ;把偏移地址存到DX。
  • LDS 传送目标指针,把指针内容装入DS。
    • 例: LDS SI,string ;把段地址:偏移地址存到DS:SI。
  • LES 传送目标指针,把指针内容装入ES。
    • 例: LES DI,string ;把段地址:偏移地址存到ES:DI。
  • LFS 传送目标指针,把指针内容装入FS。
    • 例: LFS DI,string ;把段地址:偏移地址存到FS:DI。
  • LGS 传送目标指针,把指针内容装入GS。
    • 例: LGS DI,string ;把段地址:偏移地址存到GS:DI。
  • LSS 传送目标指针,把指针内容装入SS。
    • 例: LSS DI,string ;把段地址:偏移地址存到SS:DI。

标志传送指令

  • LAHF 标志寄存器传送,把标志装入AH。
  • SAHF 标志寄存器传送,把AH内容装入标志寄存器。
  • PUSHF 标志入栈。
  • POPF 标志出栈。
  • PUSHD 32位标志入栈。
  • POPD 32位标志出栈。

二、算术运算指令

  • ADD 加法

  • ADC 带进位加法

  • INC 加 1

  • AAA 加法的ASCII码调整

  • DAA 加法的十进制调整

  • SUB 减法

  • SBB 带借位减法

  • DEC 减 1

  • NEC 求反(以 0 减之)

  • CMP 比较

  • AAS 减法的ASCII码调整

  • DAS 减法的十进制调整

  • MUL 无符号乘法

  • IMUL 整数乘法

  • AAM 乘法的ASCII码调整

  • DIV 无符号除法

  • IDIV 整数除法

  • AAD 除法的ASCII码调整

  • CBW 字节转换为字

  • CWD 字转换为双字

  • CWDE 字转换为双字

  • CDQ 双字扩展

三、逻辑运算指令

  • AND 与运算

  • OR 或运算

  • XOR 异或运算

  • NOT 取反

  • TEST 测试

  • SHL 逻辑左移

  • SAL 算术左移

  • SHR 逻辑右移

  • SAR 算术右移

  • ROL 循环左移

  • ROR 循环右移

  • RCL 通过进位的循环左移

  • RCR 通过进位的循环右移

四、串指令

  • DS:SI:源串段寄存器:源串变址。
  • ESI:目标串段寄存器:目标串变址。
  • CX:重复次数计数器。
  • AL/AX:扫描值。
  • D标志:0表示重复操作中SI和DI应自动增量;1表示应自动减量。
  • Z标志:用来控制扫描或比较操作的结束。

指令列表:

  • MOVS:串传送。 (MOVSB 传送字符,MOVSW 传送字,MOVSD 传送双字)
  • CMPS:串比较。 (CMPSB 比较字符,CMPSW 比较字)
  • SCAS:串扫描。
  • LODS:装入串。(LODSB 传送字符,LODSW 传送字,LODSD 传送双字)
  • STOS:保存串。

重复前缀:

  • REP:当CX/ECX<>0时重复。
  • REPE/REPZ:当ZF=1或比较结果相等,且CX/ECX<>0时重复。
  • REPNE/REPNZ:当ZF=0或比较结果不相等,且CX/ECX<>0时重复。
  • REPC:当CF=1CX/ECX<>0时重复。
  • REPNC:当CF=0CX/ECX<>0时重复。

五、程序转移指令

1. 无条件转移指令 (长转移)

  • JMP:无条件转移指令。
  • CALL:过程调用。
  • RET/RETF:过程返回。

2. 条件转移指令 (短转移,-128到+127的距离内)

  • JA/JNBE:不小于或不等于时转移。
  • JAE/JNB:大于或等于转移。
  • JB/JNAE:小于转移。
  • JBE/JNA:小于或等于转移。
  • ... (其他条件转移指令)

3. 循环控制指令(短转移)

  • LOOPCX不为零时循环。
  • LOOPE/LOOPZCX不为零且标志Z=1时循环。
  • LOOPNE/LOOPNZCX不为零且标志Z=0时循环。
  • JCXZCX为零时转移。
  • JECXZECX为零时转移。

4. 中断指令

  • INT:中断指令。
  • INTO:溢出中断。
  • IRET:中断返回。

5. 处理器控制指令

  • HLT:处理器暂停,直到出现中断或复位信号才继续。
  • WAIT:当芯片引线TEST为高电平时使CPU进入等待状态。
  • ... (其他处理器控制指令)

六、伪指令

  • DW:定义字(2字节)。
  • PROC:定义过程。
  • ENDP:过程结束。
  • SEGMENT:定义段。
  • ASSUME:建立段寄存器寻址。
  • ENDS:段结束。
  • END:程序结束。

标签:汇编,传送,DI,地址,CX,指令,寄存器,大全
From: https://www.cnblogs.com/jeanhua/p/18195072/assembly-code

相关文章

  • win32下vs2013汇编传参和局部变量栈的分配
    1、传参无论是用寄存器还是栈,最终都要压入栈中。2、第一个参数的位置是ebp+8,少于4byte的数据类型按照4Byte压栈,第n个参数的地址是[ebp+4+4n],ebp+4是返回地址。8byte的数据类型,会先开辟8字节的栈空间esp-8,再把数据放入栈中。下一个参数的地址相应的要加8。3、局部变量用函数自己......
  • win32下汇编代码结构学习
    通常win32下三种不同的调用模式,不同版本的编译器,对汇编出来的代码都会代理一些差别。__cdecl是默认的方式,采用外平栈。__stdcall,采用内平栈。__fastcall,因为采用2个寄存器传参,所以多于2个参数后也会用外平栈的方式。传入的第一个参数位置在ebp+8,后面依次加4个字节,即第n个参数的......
  • x64汇编——汇编指令
     汇编指令 movdest,srcmovmove的简称将src的内容赋值给dest,类似于dest=src[地址值]中扩号[]里面放的都是内存地址一个变量的地址值,是它所有字节地址中的最小值word是2字节,dword是4字节(doubleword),qword是8字节(quadword)  注意地址取值是向高位扩展,如......
  • 用指令创建表
    #用指令创建表CREATETABLE`user`( idINT, `name`VARCHAR(255), `password`VARCHAR(255), `birthday`DATE) CHARACTERSETutf8COLLATEutf8_binENGINEINNODB;#CREATETABLE表的名字(比如table_name)#(#field1datatype,#field2datatype,#field3datatype,#里......
  • 汇编语言——寄存器
    寄存器程序的本质软件/程序的执行过程硬盘中程序或者软件打开后,会被装载到内存中,由CPU进行读取内存中的机器指令,再由CPU控制计算机进行相应操作CPU组成寄存器:信息存储运算器:信息处理控制器:控制其他器件进行工作寄存器与内存通常,CPU会先将内存中的数据存储到寄......
  • Git指令回顾
    Git指令回顾由于在Lab1到Lab3的操作中项目的版本结构都比较简单且并不涉及多人协作,实验者基本只使用比较常用的git指令(如:git项目库初始化,绑定github在线库,添加追踪文件,推送到github在线库等),并未对版本结构复杂的项目进行管理。这里对git的基本指令及较复杂版本管理指令做出回顾......
  • 鲁迅全集20卷目录大全
    第一卷:坟、呐喊、野草第二卷:热风、彷徨、朝花夕拾、故事新编第三卷:华盖集、华盖集续编、华盖集续编的续编、而已集第四卷:三闲集、二心集、伪自由书第五卷:南腔北调集、准风月谈、花边文学第六卷:且介亭杂文、且介亭杂文二编、且介亭杂文续编第七卷:致许广平书信集、集外集、集......
  • __asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法 AT&T ASM Syntax
    1Overview 开发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇......
  • linux常用指令
    ls -查看文件信息ls-al-查看目录下所有文件信息(前面有.的表示隐藏文件)mkdirxxx-创建一个目录touchxxx.txt-创建一个文件pwd-查看当前所在路径cdxxx/-切换路径cd..-切换至上一级目录cd/-切换至根目录cd~-切换至上一次打开的路径......
  • IDA Pro - 大名鼎鼎的交互式反汇编工具+SCons - 嵌入式项目里最常用的自动化构建工具
    1、libjpeg-广泛使用的JPEG编解码库libjpeg是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。这个库由独立JPEG工作组维护。项目源码:http://www.ijg.org/files/2、FatFs-面向小型嵌入式系统的FAT文件系统FatFs是日本的大......