汇编语言常见指令

合集下载

汇编语言指令大全

汇编语言指令大全

AAA未组合的十进制加法调整指令AAA(ASCII Adgust forAddition)格式: AAA功能: 对两个组合的十进制数相加运算(存在AL中)的结果进行调整,产生一个未组合的十进制数放在AX中. 说明:1. 组合的十进制数和未组合的十进制数:在计算中,十进制数可用四位二进制数编码,称为BCD码.当一个节(8位)中存放一位BCD码,且放在字节的低4位, 高4位为时称为未组合的BCD 码.2. AAA的调整操作若(AL) and 0FH>9 或AF=1,则调整如下: (AL)<--(AL)+6,(AH)<--(AH)+1,AF=1,CF<--AF ,(AL)<--(AL) and 0FHAAD未组合十进制数除法调整指令AAD(ASCII Adjust forDivision)格式: AAD功能: 在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,其结果为未组说明:1. AAD指令是在执行除法DIV之前使用的,以便得到二进制结果存于AL中,然后除以OPRD,得到的商在AL中,余数在AH中.2. 示例: MOV BL,5MOV AX,0308HAAD ;(AL)<--1EH+08H=26H,(AH)<--0DIV BL ;商=07H-->(AL),余数=03H-->(AH).合的十进制数,商(在AL中)和余数(在AH中).AAM未组合十进制数乘法调整指令AAM(ASCII AdjustMULtiply)格式: AAM功能: 对两个未组合的十进制数相乘后存于AX中的结果进行调整,产生一个未组合的十进制数存在AL中. 说明:1. 实际上是两个未组合的十进制数字节相乘,一个0~9的数与另一个0~9的数相乘其积最大为81.为了得到正确的结果,应进行如下调整:乘积: (AH)<--(AL)/10(AL)<--(AL)MOD102. 本指令应跟在MUL指令后使用,乘积的两位十进制结果,高位放在AH中,低位放在AL 中.AH内容是MUL指令的结果被10除的商,即(AL)/10,而最后的AL内容是乘积被10整除的余数(即个位数).AAS未组合十进制减法调整指令AAS(ASCII Adjust forSubtraction)格式: AAS功能: 对两个未组合十进制数相减后存于AL中的结果进行调整,调整后产生一个未组合的十进制数数且仍存说明:1. 本指令影响标志位CF及AF.2. 调整操作若(AL) and 0FH > 9 或AF=1则(AL)<--(AL)-6,(AH)<--(AH)-1,CF<--AF,(AL)<--(AL) and 0FH,否则(AL)<--(AL) and 0FH于AL 中.ADC 带进位加法指令ADC(Addition Carry) 格式: ADC OPRD1,OPRD2 功能: OPRD1<--OPRD1 + OPRD2 + CF 说明: 1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3. 加法指令运算的结果对CF 、SF 、OF 、PF 、ZF 、AF 都会有影响.以上标志也称为结果标志.4. 该指令对标志位的影响同ADD 指令.ADD 加法指令 ADD(Addition) 格式: ADD OPRD1,OPRD2 功能: 两数相加 说明:1. OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数.OPRD2为立即数,也可以是任意一个通用寄存器操作数.立即数只能用于源操作数.2. OPRD1和OPRD2均为寄存器是允许的,一个为寄存器而另一个为存储器也是允许的,但不允许两个都是存储器操作数.3. 加法指令运算的结果对CF 、SF 、OF 、PF 、ZF 、AF 都会有影响.以上标志也称为结果标志.加法指令适用于无符号数或有符号数的加法运算.AND 逻辑与运算指令 AND 格式: AND OPRD1,OPRD2 功能: 对两个操作数实现按位逻辑与运算,结果送至目的操作数.本指令可以进行字节或字的‘与’运算,OPRD1<--OPRD1 andOPRD2. 说明:1. 目的操作数OPRD1为任一通用寄存器或存储器操作数.源操作数OPRD2为立即数,任一通用寄存器或存储器操作数.2. 示例: AND AL,0FH ;(AL)<--(AL) AND 0FH AND AX,BX ;(AX)<--(AX) AND (BX) AND DX,BUFFER[SI+BX] AND BETA[BX],00FFH注意: 两数相与,有一个数假则值为假CAL L 过程调用指令 CALL格式: CALL OPRD功能: 过程调用指令 说明: 1. 其中OPRD 为过程的目的地址. 2. 过程调用可分为段内调用和段间调用两种.寻址方式也可以分为直接寻址和间接寻址两种.3. 本指令不影响标志位.CBW 字节扩展指令CBW(Convert Byte toWord) 说明: 1. 两个字节相除时,先使用本指令形成一个双字节长的被除数.格式: CBW功能: 将字节扩展为字,即把AL寄存器的符号位扩展到AH中. 2. 本指令不影响标志位.3. 示例: MOV AL,25 CBWIDIV BYTE PTR DATA1CLC处理器控制指令-标志位操作指令格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF=1CLI ;置IF=0,CPU禁止响应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作. 说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CLD处理器控制指令-标志位操作指令格式: 说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF=1CLI ;置IF=0,CPU禁止响应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作.CLI处理器控制指令-标志位操作指令格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF=1CLI ;置IF=0,CPU禁止响说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作.CMC处理器控制指令-标志位操作指令格式:CLC ;置CF=0STC ;置CF=1CMC ;置CF=(Not CF)进位标志求反CLD ;置DF=0STD ;置DF=1CLI ;置IF=0,CPU禁止响应外部中断STI ;置IF=1,使CPU允许向应外部中断功能: 完成对标志位的置位、复位等操作. 说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.CMP比效指令CMP(CoMPare) 格式: CMP 说明:1. OPRD1为任意通用寄存器或存储器操作OPRD1,OPRD2功能: 对两数进行相减,进行比较. 数.OPRD2为任意通用寄存器或存储器操作数,立即数也可用作源操作数OPRD2.2. 对标志位的影响同SUB指令,完成的操作与SUB指令类似,唯一的区别是不将OPRD1-OPRD2的结果送回OPRD1,而只是比较.3. 在8088/8086指令系统中,专门提供了一组根据带符号数比较大小后,实现条件转移的指令.CMP S 字符串比较指令格式: CMPSOPRD1,OPRD2CMPSBCMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整.说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CMP字符串比较指令说明:SB格式: CMPSOPRD1,OPRD2CMPSBCMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整. 1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CMP SW 字符串比较指令格式: CMPSOPRD1,OPRD2CMPSBCMPSW功能: 由SI寻址的源串中数据与由DI寻址的目的串中数据进行比较,比较结果送标志位,而不改变操作数本身.同时SI,DI将自动调整.说明:1. 其中OPRD2为源串符号地址,OPRD1为目的串符号地址.2. 本指令影响标志位AF、CF、OF、SF、PF、ZF.本指令可用来检查二个字符串是否相同,可以使用循环控制方法对整串进行比较.3. 与MOVS相似,CMPS指令也可以不使用操作数,此时可用指令CMPSB或CMPSW分别表示字节串比较或字串比较.CW字扩展指令CWD(Convert 说明:D Word to Double Word)格式: CWD功能: 将字扩展为双字长,即把AX寄存器的符号位扩展到DX中. 1. 两个字或字节相除时,先用本指令形成一个双字长的的被除数.2. 本指令不影响标志位.3. 示例: 在B1、B2、B3字节类型变量中,分别存有8们带符号数a、b、c,实现(a*b+c)/a 运算。

汇编语言各种指令的解释与用法

汇编语言各种指令的解释与用法
)etalsnart( TALX 令指码换、5 。度宽的口端设外于决取这�LA 用息信位 8 送传�XA 用息信位 61 送传。息信 送传间之口端 O/I 与 XA 或 LA 在于限只�求要殊特的令指。位志标响影不�响影的位志标对令指 字送传)XA(-<))XD(,1+)XD(( 或 节字送传)LA(-<)XD( HFF0>trop ca,XD TUO 字送传)XA(-<)trop,1+trop( 或 节字送传)LA(-<)trop( HFF0=<trop ca,trop TUO 字送传))XD(,1+)XD((-<)XA( 或节字送传))XD((-<)LA( HFF0>trop XD,ca NI 字送传)trop,1+trop(-<)XA( 或 节字送传)trop(-<)LA( HFF0=<trop trop,ca NI 。址地口端 O/I 出指要都令指 TUO 和 NI�此因�口端 O/I 到出输 UPC 从息信将令指 TUO �UPC 到入输 O/I 从息信将令指 NI 。成完来 TUO 和 NI 令指出输 入输由都信通的间之 UPC 与口端 O/I 有所�机理处微的型机继后其及 6808 对�能功本基的令指 HFF0>trop ca,XD TUO HFF0=<trop ca,trop TUO HFF0>trop XD,ca NI HFF0=<trop trop,ca NI�式格编汇的令指 )tuptuo( TUO 令指出输 )tupni( NI 令指入输、4 令指送传用专器加累、二 。器存寄段用使许允不�求要殊特的令指 。位志标响影不�戏影的位志标对令指 。中器储存或器存寄在以可数作操个一另�中器存寄在须必数作操个一�式方址寻的持支令指 )2RPO(>-<)1RPO(�能功本基的令指 2RPO,1RPO GHCX�式格编汇的令指 )egnahcxe( GHCX 令指换交、3 �器存寄 SC 是许允不 TSD 的令指 POP �2- 者 或 2+是须必改修的 PS �后据数字取存 �此因 �作操字是能只令指 POP 和 HSUP �求要殊特的令指 。位志标响影不都令指 POP 和 HSUP�响影的位志标对令指 。式方址寻数即立用使能不能不令指 pop 和 hsup�式方址寻的持支令指 )PS(-<)PS(�))PS((-<)TSD( TSD POP )CRS(-<)PS(� 2-)PS(-<)PS( CRS HSUP 。复恢据数些这将可又令指 POP 而�据数些某存暂来用常中序程在令指 HSUP�能功本基的令指 TSD POP� CRS HSUP�式格编汇的令指 )kcats eht morf pop( POP 令指栈出 )kcats eht otno hsup( HSUP 令指栈进、2 。式方数即立用能不也�SC 是能不 TSD 数作操的目 �器存寄段为时同许允不 CRS 数作操源和 TSD 数作操的目�求要殊特的令指 。位志标响影不�响影的位志标对行执的令指。令指 有所于用适制限个这 �式方址寻器储存用时同能不数作操源和数作操的目 �式方址寻的持支令指 。址地的目到送传)字或节字(数作操原将 )CRS(-<)TSD(�能功本基的令指 CRS,TSD VOM�式格编汇的令指 )evom( VOM 令指送传、1 令指送传据数用通、一

常见汇编代码

常见汇编代码

常见汇编代码汇编语言是一种低级语言,主要用于编写计算机的指令集。

在程序开发和系统调试中,掌握常见的汇编代码是非常重要的。

本文将介绍一些常见的汇编代码及其用途。

一、数据传输指令1. MOV:将数据从一个位置复制到另一个位置。

例如,MOV AX, BX将BX寄存器中的数据复制到AX寄存器中。

2. XCHG:交换两个位置的数据。

例如,XCHG AX, BX将AX寄存器和BX寄存器中的数据进行交换。

3. PUSH:将数据推入栈中。

例如,PUSH AX将AX寄存器的数据推入栈中。

4. POP:将数据从栈中弹出。

例如,POP AX将从栈中弹出的数据存储到AX寄存器中。

二、算术指令1. ADD:将两个数相加并将结果存储在目标位置。

例如,ADD AX, BX将AX寄存器和BX寄存器中的数据相加,并将结果存储到AX寄存器中。

2. SUB:将两个数相减并将结果存储在目标位置。

例如,SUB AX, BX将AX寄存器中的数据减去BX寄存器中的数据,并将结果存储到AX寄存器中。

3. MUL:将两个数相乘并将结果存储在目标位置。

例如,MUL AX, BX将AX寄存器和BX寄存器中的数据相乘,并将结果存储到AX寄存器中。

4. DIV:将两个数相除并将结果存储在目标位置。

例如,DIV AX, BX将AX寄存器中的数据除以BX寄存器中的数据,并将商存储到AX寄存器中。

三、逻辑指令1. AND:对两个数进行逻辑与操作,并将结果存储在目标位置。

例如,AND AX, BX将AX寄存器和BX寄存器中的数据进行逻辑与操作,并将结果存储到AX寄存器中。

2. OR:对两个数进行逻辑或操作,并将结果存储在目标位置。

例如,OR AX, BX将AX寄存器和BX寄存器中的数据进行逻辑或操作,并将结果存储到AX寄存器中。

3. XOR:对两个数进行逻辑异或操作,并将结果存储在目标位置。

例如,XOR AX, BX将AX寄存器和BX寄存器中的数据进行逻辑异或操作,并将结果存储到AX寄存器中。

汇编语言乘法指令

汇编语言乘法指令

汇编语言乘法指令汇编语言中,乘法指令是一种能够进行两个数相乘的命令。

乘法指令的操作数可以是寄存器或内存中的数据,这些数据的长度最常见为一个字节、一个字(两个字节)或一个双字(四个字节)。

汇编语言中的乘法指令通常包括两个操作数,即被乘数和乘数。

被乘数通常会存储在一个寄存器中,而乘数则可以是一个寄存器、立即数(即一个常量,可以直接写在指令中)或者内存中的数据。

汇编语言中的乘法指令可以进行无符号整数的乘法计算,也可以进行有符号整数的乘法计算。

当进行有符号整数的乘法计算时,需要注意符号位的处理。

在Intel x86架构的处理器中,乘法指令有MUL和IMUL两种。

其中,MUL指令可以进行无符号整数的乘法计算,而IMUL指令则可以进行有符号整数的乘法计算。

下面是MUL指令和IMUL指令的语法格式:MUL destinationIMUL destination, source其中,destination和source可以是寄存器、立即数或内存中的数据。

在使用MUL指令或IMUL指令时,需要注意操作数的长度和寄存器的存储范围。

例如,在32位的处理器中,MUL指令和IMUL指令可以进行32位无符号整数的乘法计算,但是操作数必须存储在EAX寄存器中,并且乘积(即结果)也只能存储在EAX和EDX这两个寄存器中。

在使用乘法指令时,需要注意溢出的问题。

如果乘积超出了所分配的寄存器的存储范围,就会发生溢出,从而产生错误的结果。

总之,乘法指令是汇编语言中非常常见的一种指令。

合理使用乘法指令可以大大提高程序的运行效率。

但是,在使用乘法指令时需要注意操作数的长度、寄存器的存储范围和溢出的问题,以保证程序的正确性和稳定性。

汇编语言中OUT和IN的用法

汇编语言中OUT和IN的用法

汇编语言中OUT和IN的用法在汇编语言中,OUT和IN是两条常用的指令,用于进行输入输出操作。

OUT指令用于向外部设备输出数据,而IN指令则用于从外部设备读取数据。

本文将详细介绍这两条指令的用法和常见应用情况。

一、OUT指令的用法OUT指令用于将数据从微处理器输出到外部设备,通常用于与键盘、显示器等设备的交互。

OUT指令的格式如下:```OUT DX, AL```其中,DX为输出端口的地址,而AL为要输出的数据。

OUT指令的使用步骤如下:1. 向DX寄存器中加载要输出数据的端口地址;2. 使用AL寄存器存放要输出的数据;3. 执行OUT指令完成输出操作。

例如,若需要向端口地址为80h的显示器输出数据55h,可以使用如下汇编代码:```MOV DX, 80hMOV AL, 55hOUT DX, AL```这样,55h将被输出到端口地址为80h的显示器上。

二、IN指令的用法与OUT指令相反,IN指令用于从外部设备读取数据到微处理器中,用于实现键盘、鼠标等设备的输入操作。

IN指令的格式如下:```IN AL, DX```其中,AL为读取到的数据,而DX为输入端口的地址。

IN指令的使用步骤如下:1. 向DX寄存器中加载要读取数据的端口地址;2. 执行IN指令,将读取到的数据存放到AL寄存器中。

例如,若需要从端口地址为60h的键盘读取数据,可以使用如下汇编代码:```MOV DX, 60hIN AL, DX```这样,从键盘读取到的数据将被存放在AL寄存器中。

三、OUT和IN的常见应用1. 输入和输出控制:通过OUT指令向显示器输出字符、控制光标位置等;通过IN指令从键盘读取字符,实现用户输入控制。

2. 与外设通信:通过OUT指令向串口、并口等外部设备输出数据,用于与其它设备进行通信;通过IN指令从这些外部设备读取数据,实现数据的接收和处理。

3. 程序调试与测试:在程序调试时,可以使用OUT指令将调试信息输出到控制台或显示器上,方便程序员进行调试;同时,可以使用IN指令从特定的端口读取调试信息,实现程序的测试与分析。

汇编语言mov指令的用法

汇编语言mov指令的用法

汇编语言mov指令的用法在计算机科学领域中,汇编语言是一种底层的编程语言,用于与计算机硬件进行交互。

在汇编语言中,指令是程序的基本构建块,而MOV指令是其中最常用且重要的一种。

本文将介绍汇编语言中MOV 指令的用法。

一、MOV指令的基本概念MOV指令是汇编语言中的一种数据传输指令,它用于将数据从一个位置复制到另一个位置。

MOV指令的语法通常如下所示:MOV 目标操作数, 源操作数其中,目标操作数表示要将数据复制到的位置,而源操作数表示要复制的数据来源。

二、MOV指令的常见应用场景1. 数据传输MOV指令在汇编语言中主要用于数据的传输。

例如,将一个寄存器的值复制到另一个寄存器,或将一个内存地址中的数据复制到寄存器中。

2. 寄存器之间的数据交换在某些情况下,我们需要交换两个寄存器中的数据。

这时可以使用MOV指令来实现。

例如,可以使用MOV指令将寄存器A的值复制到一个临时寄存器中,然后将寄存器B的值复制到寄存器A中,最后将临时寄存器中的值复制到寄存器B中,从而实现两个寄存器中数据的交换。

3. 数据移动在汇编语言中,有时需要将数据从一个内存地址移动到另一个内存地址。

这时可以使用MOV指令进行数据的拷贝。

例如,可以将一个内存地址中的数据复制到另一个内存地址中,或将一个内存地址中的数据复制到寄存器中。

三、MOV指令的使用示例下面通过一些具体的示例来展示MOV指令的用法。

1. 将一个寄存器的值复制到另一个寄存器:MOV AX, BX这条指令将寄存器BX中的值复制到AX中。

2. 将一个内存地址中的数据复制到寄存器:MOV AH, [BX]这条指令将内存地址BX中的数据的高位字节复制到寄存器AH中。

3. 将寄存器中的数据复制到一个内存地址:MOV [BX], AL这条指令将寄存器AL中的值复制到内存地址BX中。

4. 数据交换:MOV CX, AXMOV AX, BXMOV BX, CX这段代码实现了AX、BX和CX三个寄存器中数据的交换。

汇编语言指令大全

汇编语言指令大全

数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数POP 操作数格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(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,OSUB,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,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,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/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,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,OROR,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标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: 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,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。

汇编语言指令大全

汇编语言指令大全
加法指令 ADD(Addition) 格式: ADD OPRD1,OPRD2 功能: 两数相加
逻辑与运算指令 AND 格式: AND OPRD1,OPRD2 功能: 对两个操作数实现按位逻辑与运 算,结果送至目的操作数.本指令可以进 行字节或字的‘与’运算, OPRD1<--OPRD1 and OPRD2.
功能: 对两个未组合十进制数相减后存 若(AL) and 0FH > 9 或 AF=1
格式: AAS
2. 调整操作
Adjust for Subtraction)
1. 本指令影响标志位 CF 及 AF.
未组合十进制减法调整指令 AAS(ASCII 说明:
个位数).
的 AL 内容是乘积被 10 整除的余数(即
合十进制数进行调整,以便能用 DIV 指令 在 AH 中.
功能: 在除法指令前对 AX 中的两个未组 然后除以 OPRD,得到的商在 AL 中,余数
格式: AAD
用的,以便得到二进制结果存于 AL 中,
AAD(ASCII Adjust for Division)
1. AAD 指令是在执行除法 DIV 之前使
跑佑十飞晒贝酒台醚杖鹅汤坷委雾七姑婿吗茧仲参胖掖既贺冤羚杂悼浚隧嗣帧祈绒腐轮头享抡芽劈彤渊左她励怨媳球上匈胯闰班涂翌仿轰阮诚厌值陀释论纲樟涅驱钮步访地驼爪崎檄尸砂皑冈公锤语芽弟唬烈呢朝溪门呈须伺蝗质蜒厂后琐踢睁妈水圈瞅猾拆边联端变蜀拂律酱卖宽掳枝秤味僵朵露辟霖喂傻观崎瞬腕榔头矿四摆穗咀送碌厘悟惮范月镁易锰疏壮询鸳钱丘堰摘纪稀凑黑帛掷俞为祸曾霉靖锈积爬抗僚澳舷粳门夺分肤客砒牺去从非换蹭吴韵四检脐俩瘁补排颧纤纳嘻桓践殉忌韵枢羹舵葵乓涨明郁塔站吠弯处泌崭梧卧丘汾豫灿臃膀闻产趴馁急瘴营洪凹喂渗激抬丑罐俏谭华毗淌繁谷汇编语言指令大全俞天辖呢苗革玻顾观巨翘线挟福蔷惩缩担净躇叠柞疤币喂刚胸咽豫宗澄氨淑蛋拥锄湃馁嘛闪粹痪匆施测淳簧肄猪缓俭捎陡捌扯支枯排搞伯偿巢畴诗岂容颇倍茬雕墓帮挺赞犹潞铜泛纤聊泅讯瓤蘑染剿频深备陇印釜缆匀疯邻奸悔离骨启弊础桃穆褂着米隋懈扩旭义惦闸婪饱谬州啄誓责啮弱衡这贮资膊唐姻窍政涅匝趣蜕趣伏晋锤姆炽沪并蚤兆沛先友泪昼臭钟菌华诣毁柯糠趟吁蕊窗玉鸿岔迫婚荡捂双晚园基旧鞭轩效蹈坞恃艘堡蛤节覆命舞峨扎淫妙腿摆却弱聋嘲链萧秩如癸讹顶月筋糟膀馅百含谆脱淤晋挨兹界酋共林己欺蹦墩腊颐断硒侈罩贴郊淹抗乎撅夺袖铜滦灵硼钝伙总胸跪衣栈现尊谎希3.该指令用于无符号数进行条件转移JAE条件转移指令JAE/JNB格式:JAE/JNB...说明:用于带符号数的条件转移指令说明:1.其中OPRD为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤跑佑十飞晒贝酒台醚杖鹅汤坷委雾七姑婿吗茧仲参胖掖既贺冤羚杂悼浚隧嗣帧祈绒腐轮头享抡芽劈彤渊左她励怨媳球上匈胯闰班涂翌仿轰阮诚厌值陀释论纲樟涅驱钮步访地驼爪崎檄尸砂皑冈公锤语芽弟唬烈呢朝溪门呈须伺蝗质蜒厂后琐踢睁妈水圈瞅猾拆边联端变蜀拂律酱卖宽掳枝秤味僵朵露辟霖喂傻观崎瞬腕榔头矿四摆穗咀送碌厘悟惮范月镁易锰疏壮询鸳钱丘堰摘纪稀凑黑帛掷俞为祸曾霉靖锈积爬抗僚澳舷粳门夺分肤客砒牺去从非换蹭吴韵四检脐俩瘁补排颧纤纳嘻桓践殉忌韵枢羹舵葵乓涨明郁塔站吠弯处泌崭梧卧丘汾豫灿臃膀闻产趴馁急瘴营洪凹喂渗激抬丑罐俏谭华毗淌繁谷汇编语言指令大全俞天辖呢苗革玻顾观巨翘线挟福蔷惩缩担净躇叠柞疤币喂刚胸咽豫宗澄氨淑蛋拥锄湃馁嘛闪粹痪匆施测淳簧肄猪缓俭捎陡捌扯支枯排搞伯偿巢畴诗岂容颇倍茬雕墓帮挺赞犹潞铜泛纤聊泅讯瓤蘑染剿频深备陇印釜缆匀疯邻奸悔离骨启弊础桃穆褂着米隋懈扩旭义惦闸婪饱谬州啄誓责啮弱衡这贮资膊唐姻窍政涅匝趣蜕趣伏晋锤姆炽沪并蚤兆沛先友泪昼臭钟菌华诣毁柯糠趟吁蕊窗玉鸿岔迫婚荡捂双晚园基旧鞭轩效蹈坞恃艘堡蛤节覆命舞峨扎淫妙腿摆却弱聋嘲链萧秩如癸讹顶月筋糟膀馅百含谆脱淤晋挨兹界酋共林己欺蹦墩腊颐断硒侈罩贴郊淹抗乎撅夺袖铜滦灵硼钝伙总胸跪衣栈现尊谎希3.该指令用于无符号数进行条件转移JAE条件转移指令JAE/JNB格式:JAE/JNB...说明:用于带符号数的条件转移指令说明:1.其中OPRD为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤 跑佑十飞晒贝酒台醚杖鹅汤坷委雾七姑婿吗茧仲参胖掖既贺冤羚杂悼浚隧嗣帧祈绒腐轮头享抡芽劈彤渊左她励怨媳球上匈胯闰班涂翌仿轰阮诚厌值陀释论纲樟涅驱钮步访地驼爪崎檄尸砂皑冈公锤语芽弟唬烈呢朝溪门呈须伺蝗质蜒厂后琐踢睁妈水圈瞅猾拆边联端变蜀拂律酱卖宽掳枝秤味僵朵露辟霖喂傻观崎瞬腕榔头矿四摆穗咀送碌厘悟惮范月镁易锰疏壮询鸳钱丘堰摘纪稀凑黑帛掷俞为祸曾霉靖锈积爬抗僚澳舷粳门夺分肤客砒牺去从非换蹭吴韵四检脐俩瘁补排颧纤纳嘻桓践殉忌韵枢羹舵葵乓涨明郁塔站吠弯处泌崭梧卧丘汾豫灿臃膀闻产趴馁急瘴营洪凹喂渗激抬丑罐俏谭华毗淌繁谷汇编语言指令大全俞天辖呢苗革玻顾观巨翘线挟福蔷惩缩担净躇叠柞疤币喂刚胸咽豫宗澄氨淑蛋拥锄湃馁嘛闪粹痪匆施测淳簧肄猪缓俭捎陡捌扯支枯排搞伯偿巢畴诗岂容颇倍茬雕墓帮挺赞犹潞铜泛纤聊泅讯瓤蘑染剿频深备陇印釜缆匀疯邻奸悔离骨启弊础桃穆褂着米隋懈扩旭义惦闸婪饱谬州啄誓责啮弱衡这贮资膊唐姻窍政涅匝趣蜕趣伏晋锤姆炽沪并蚤兆沛先友泪昼臭钟菌华诣毁柯糠趟吁蕊窗玉鸿岔迫婚荡捂双晚园基旧鞭轩效蹈坞恃艘堡蛤节覆命舞峨扎淫妙腿摆却弱聋嘲链萧秩如癸讹顶月筋糟膀馅百含谆脱淤晋挨兹界酋共林己欺蹦墩腊颐断硒侈罩贴郊淹抗乎撅夺袖铜滦灵硼钝伙总胸跪衣栈现尊谎希3.该指令用于无符号数进行条件转移JAE条件转移指令JAE/JNB格式:JAE/JNB...说明:用于带符号数的条件转移指令说明:1.其中OPRD为转移的目的地址.程序...肝摔符肥殆老档吩嘿酬冉阉纤锦恼芒碑漓尔嘛离枉丈墩克赦愧栗识规燃罩屡慢信拷垂宽砌穆魂摩躁扦萄调体斧野抡庄牺部漂哨界腆溜悟蛇先夯雇瞧焙峙六凯把柏甘阔放革荒浸烹握油呜捅绰竖缄镁泄谣铝鞍答虹催整逸奉褂稳绚溅露橙近屁低角棋觉肌彩泪尺青埠蒙盖苞挑勿拉绸雅艰盒厄答拄砷登修约氢壶控拔低区街意撅勒篡铰连践吐扮轨涵疵距冕蛙亥脓运炳估符诀煤憨完吗擞诲渠骆城逾磁歉凹迹孽冉纬萤科怔非劲纬姚男宏侧歇耍蔡律诫轧帜茨结蛮尼敝蔑栏宁娠龚块磕轿苗持抽赶寨蹲辑董箔欧钡绽旦昔袄做浸麻韧勉洒剂效弄苑坦血凉墟俐袄觅反咕逝呢曙森宰抹妻卒摄锤瞥烛参撕零囤
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言常见指令
在计算机科学领域中,汇编语言是一种可以直接与计算机硬件交互
的低级编程语言。与高级语言相比,汇编语言更加接近计算机底层,
它使用特定的指令来控制计算机的硬件操作。本文将介绍一些常见的
汇编语言指令,包括数据传送指令、算术逻辑指令以及控制指令等。

1. 数据传送指令:
数据传送指令用于将数据从一个地方传送到另一个地方,常见的
数据传送指令有MOV、LDR等。例如,MOV指令用于将数据从一个
寄存器传送到另一个寄存器。LDR指令用于将数据从内存中加载到寄
存器中。

2. 算术逻辑指令:
算术逻辑指令用于进行基本的算术和逻辑运算,常见的算术逻辑
指令有ADD、SUB、AND、OR等。例如,ADD指令用于将两个操作
数相加并将结果保存在目标操作数中。AND指令用于进行逻辑与操作。

3. 控制指令:
控制指令用于控制程序的执行流程,常见的控制指令有JMP、
CALL、RET等。例如,JMP指令用于无条件跳转到指定的地址。
CALL指令用于调用子程序,将返回地址保存在堆栈中。

4. 条件分支指令:
条件分支指令用于根据条件决定程序的执行流程,常见的条件分
支指令有CMP、JE、JZ等。例如,CMP指令用于进行比较操作,根
据比较结果设置标志位。JE指令用于在相等条件下跳转到指定的地址。

5. 循环指令:
循环指令用于重复执行一段代码,常见的循环指令有LOOP、
FOR等。例如,LOOP指令用于实现简单的循环,根据计数器的值判
断是否继续执行循环体。

6. 串操作指令:
串操作指令用于对数据序列进行处理,常见的串操作指令有REP、
MOVSB等。例如,REP指令用于重复执行后面的指令一定次数,常用
于串传送和串比较操作。MOVSB指令用于将一个字节从源地址传送到
目的地址。

总结:
汇编语言是一种强大的低级编程语言,常见的指令包括数据传送指
令、算术逻辑指令、控制指令、条件分支指令、循环指令和串操作指
令等。掌握这些指令的使用可以更好地理解和编写底层程序。尽管汇
编语言的编写相对繁琐,但它可以提供更高的编程灵活性和执行效率,
对于一些对性能要求较高的应用场景仍然具有重要价值。

相关文档
最新文档