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

合集下载

常用汇编指令

常用汇编指令

常用汇编指令汇编语言是一种低级机器语言的抽象表示,通过使用汇编指令可以编写出与硬件相关的程序。

在计算机科学领域中,汇编指令是非常重要的,是理解计算机底层原理和实现的关键。

本文将介绍一些常用的汇编指令,以帮助读者更好地理解和应用这些指令。

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

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

2. LEA指令:LEA指令用于将内存地址加载到寄存器中。

例如,LEA BX, [SI+10]将[S1+10]的内存地址加载到寄存器BX中。

3. PUSH指令:PUSH指令用于将数据压入栈中。

例如,PUSH AX将AX中的数据压入栈中。

4. POP指令:POP指令用于从栈中弹出数据。

例如,POP BX将栈中的数据弹出到BX中。

二、算术运算指令1. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。

例如,ADD AX, BX将BX的值加到AX中。

2. SUB指令:SUB指令用于将源操作数的值从目标操作数中减去,并将结果存储在目标操作数中。

例如,SUB AX, BX从AX中减去BX的值。

3. MUL指令:MUL指令用于将源操作数与累加器中的值相乘,并将结果存储在累加器中。

例如,MUL BX将累加器的值与BX相乘。

4. DIV指令:DIV指令用于将累加器的值除以源操作数,并将商存储在累加器中,余数存储在另一个寄存器中。

例如,DIV BX将累加器的值除以BX。

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

例如,AND AX, BX将AX与BX进行逻辑与操作。

2. OR指令:OR指令用于对两个操作数进行逻辑或运算,并将结果存储在目标操作数中。

例如,OR AX, BX将AX与BX进行逻辑或操作。

3. NOT指令:NOT指令用于对操作数进行逻辑非运算,并将结果存储在目标操作数中。

汇编语言指令功能总结

汇编语言指令功能总结

汇编语言指令功能总结汇编语言是一种低级语言,主要用于编写机器码指令的程序。

在计算机科学领域中,汇编语言是非常重要的,因为它可以直接操作计算机的硬件资源。

本文将对汇编语言中常用的指令功能进行总结。

1. 数据传输指令数据传输指令用于将数据从一个位置传送到另一个位置。

常用的数据传输指令包括MOV(将数据从一个位置复制到另一个位置)、XCHG(交换两个位置的数据)、PUSH(将数据压入堆栈)、POP (将数据从堆栈中弹出)等。

2. 算术运算指令算术运算指令用于执行各种算术运算,例如加法、减法、乘法和除法。

常用的算术运算指令包括ADD(将两个数相加)、SUB(将一个数减去另一个数)、MUL(将两个数相乘)、DIV(将一个数除以另一个数)等。

3. 逻辑运算指令逻辑运算指令用于执行各种逻辑运算,例如与、或、非和异或。

常用的逻辑运算指令包括AND(对两个数执行与运算)、OR(对两个数执行或运算)、NOT(对一个数执行非运算)、XOR(对两个数执行异或运算)等。

4. 控制转移指令控制转移指令用于实现程序的跳转和循环执行。

常用的控制转移指令包括JMP(无条件跳转到指定的地址)、JZ(如果前一个运算结果为零则跳转)、JC(如果前一个运算结果进位则跳转)等。

5. 位操作指令位操作指令用于对数据的位进行操作。

常用的位操作指令包括AND(将两个数的对应位执行与运算)、OR(将两个数的对应位执行或运算)、NOT(取反操作)等。

6. 字符串操作指令字符串操作指令用于对字符串进行操作。

常用的字符串操作指令包括MOVSB(将一个字节从源地址复制到目的地址)、LODSB(将一个字节从源地址加载到AL寄存器)、STOSB(将AL寄存器中的值存储到目的地址)等。

7. 输入输出指令输入输出指令用于与计算机的输入输出设备进行交互。

常用的输入输出指令包括IN(从指定的端口读取数据)、OUT(将数据发送到指定的端口)等。

总结:汇编语言中的指令功能丰富多样,可以实现各种复杂的操作。

汇编语言各种指令解释及用法2篇

汇编语言各种指令解释及用法2篇

汇编语言各种指令解释及用法2篇汇编语言指令解释及用法汇编语言是一种低级编程语言,用于编写机器指令,直接控制计算机硬件。

它的指令集相对简单,但是非常灵活,可以直接操作寄存器和内存,实现各种功能。

在这篇文章中,我将为大家解释汇编语言中一些常用指令的含义和用法。

第一篇:数据传输与操作指令1. MOV指令:MOVE(MOV)指令用于在寄存器和内存之间传输数据。

例如,MOV AX, BX将BX的值传输到AX寄存器中。

2. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。

例如,ADD AX, 5将AX寄存器的值与5相加,并将结果存储在AX中。

3. SUB指令:SUB指令用于将两个操作数相减,并将结果存储在目标操作数中。

例如,SUB AX, 3将AX寄存器的值减去3,并将结果存储在AX中。

4. INC指令:INC指令用于将目标操作数的值加1。

例如,INC CX将CX寄存器的值增加1。

5. DEC指令:DEC指令用于将目标操作数的值减1。

例如,DEC DX将DX寄存器的值减去1。

6. MUL指令:MUL指令用于将两个无符号操作数相乘,结果保存在一对寄存器中。

例如,MUL BX将AX寄存器的值与BX相乘,并将结果保存在DX:AX寄存器对中。

7. DIV指令:DIV指令用于将两个无符号操作数相除,商保存在AL中,余数保存在AH中。

例如,DIV CX将DX:AX寄存器对的值除以CX,并将商保存在AL中,余数保存在AH中。

8. CMP指令:CMP指令用于比较两个操作数的值,并设置相应的标志位。

例如,CMP AX, BX将AX寄存器的值与BX进行比较。

第二篇:跳转指令与循环指令1. JMP指令:JMP指令用于无条件跳转到目标地址。

例如,JMP LABEL将程序跳转到标签LABEL处执行。

2. JZ指令:JZ指令用于判断前一次的比较结果是否为零,如果为零则跳转到目标地址。

例如,JZ LABEL将在前一次比较结果为零时跳转到标签LABEL处。

汇编语言基本指令详解

汇编语言基本指令详解

汇编语言基本指令详解在计算机科学和计算机工程领域,汇编语言是一种计算机底层编程语言,用于直接控制计算机硬件。

它是机器语言的文本形式,使用符号和助记符来代表机器指令,相对于高级编程语言来说更加底层。

汇编语言基本指令是使用汇编语言进行编程时必不可少的内容。

下面将详细介绍汇编语言中常用的基本指令。

1. 数据传送指令数据传送指令用于在寄存器之间传递数据,常见的指令有MOV、ADD、SUB、MUL等。

MOV指令用于将数据从一个位置传送到另一个位置,格式为MOV 目标操作数, 源操作数。

例如,MOV AX, BX可以将BX的值传送给AX。

ADD指令用于将两个操作数相加,并将结果保存到目标操作数中。

格式为ADD 目标操作数, 源操作数。

例如,ADD AX, BX可以将AX与BX的值相加,并将结果保存在AX中。

SUB指令用于将源操作数的值从目标操作数中减去,并将结果保存到目标操作数中。

格式为SUB 目标操作数, 源操作数。

例如,SUB AX, BX可以将BX的值从AX中减去,并将结果保存在AX中。

MUL指令用于将两个操作数相乘,并将结果保存到目标操作数中。

格式为MUL 目标操作数, 源操作数。

例如,MUL AX, BX可以将AX与BX的值相乘,并将结果保存在AX中。

2. 算术逻辑指令算术逻辑指令用于进行各种算术和逻辑运算,例如加法、减法、乘法、除法、与、或、非等。

ADD指令在前面已经提到,用于将两个操作数相加。

SUB指令在前面已经提到,用于将源操作数的值从目标操作数中减去。

MUL指令在前面已经提到,用于将两个操作数相乘。

DIV指令用于将目标操作数除以源操作数,并将商保存到目标操作数,余数保存在DX中。

格式为DIV 操作数。

例如,DIV BX可以将AX的值除以BX,并将商保存在AX中,余数保存在DX中。

AND指令用于对两个操作数进行按位与运算,并将结果保存到目标操作数中。

格式为AND 目标操作数, 源操作数。

例如,AND AX,BX可以将AX与BX的值按位与,并将结果保存在AX中。

汇编常用指令

汇编常用指令

汇编常用指令汇编语言是计算机底层的一种编程语言,通过编写汇编指令可以直接控制机器的硬件和内存。

在使用汇编语言编写程序时,掌握一些常用指令是非常重要的。

本文将介绍一些常用的汇编指令,帮助读者更好地理解和应用汇编语言。

一、数据传输指令数据传输指令用于在寄存器和内存之间传输数据,包括将数据从内存加载到寄存器中,以及将寄存器中的数据存储到内存中。

常用的数据传输指令包括: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"表示将BX的值加到AX中。

2. SUB:将第一个操作数减去第二个操作数。

例如,"SUB AX, BX"表示用BX的值减去AX,并将结果存储到AX中。

3. MUL:将两个操作数相乘。

例如,"MUL AX, BX"表示将AX乘以BX,并将结果存储到一组寄存器中。

4. DIV:将第一个操作数除以第二个操作数。

例如,"DIV AX, BX"表示用AX的值除以BX,并将商存储到一组寄存器中。

5. AND:对两个操作数执行逻辑与运算。

例如,"AND AX, BX"表示将AX和BX进行逻辑与操作。

6. OR:对两个操作数执行逻辑或运算。

汇编指令大全(有注释)_IT计算机_专业资料

汇编指令大全(有注释)_IT计算机_专业资料

汇编指令大全(有注释)_IT计算机_专业资料汇编指令大全(有注释)为了方便开发者理解和使用汇编语言,本文汇编指令大全提供了对常用指令的详细注释。

汇编语言是一种低级编程语言,直接操作计算机的硬件和寄存器。

掌握汇编语言对于理解计算机底层原理和优化程序性能至关重要。

下面列举了一些常用的汇编指令,以供参考。

1. MOV指令:用于将一个数据从一个位置复制到另一个位置。

可以在寄存器和内存之间传输数据。

示例:MOV AX, 10h ; 将数据10h复制到寄存器AX中MOV [BX], AX ; 将寄存器AX中的数据复制到内存地址BX指向的位置2. ADD指令:用于将两个数据相加,并将结果存储在指定的位置。

示例:ADD AX, BX ; 将寄存器AX和BX中的数据相加,并将结果保存在AX中ADD [BX], CX ; 将内存地址BX指向的数据与寄存器CX中的数据相加,并将结果保存在内存地址BX指向的位置3. SUB指令:用于将两个数据相减,并将结果存储在指定的位置。

示例:SUB AX, BX ; 将寄存器AX的数据减去BX的数据,并将结果保存在AX中SUB [BX], CX ; 将内存地址BX指向的数据减去寄存器CX的数据,并将结果保存在内存地址BX指向的位置4. INC指令:用于将指定位置的数据加1。

示例:INC AX ; 将寄存器AX的数据加1INC [BX] ; 将内存地址BX指向的数据加15. DEC指令:用于将指定位置的数据减1。

示例:DEC AX ; 将寄存器AX的数据减1DEC [BX] ; 将内存地址BX指向的数据减16. JMP指令:用于无条件跳转到指定的代码位置。

示例:JMP label1 ; 无条件跳转到标签label1处JMP 100h ; 无条件跳转到内存地址100h处7. CMP指令:用于比较两个数据的大小,并根据比较结果设置条件码寄存器。

示例:CMP AX, BX ; 比较寄存器AX和BX的数据大小,并设置条件码寄存器CMP [BX], CX ; 比较内存地址BX指向的数据和寄存器CX的数据大小,并设置条件码寄存器8. JE指令:用于在两个数据相等时跳转到指定的代码位置。

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

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

汇编语言各种指令的解释与用法汇编语言是一种低级语言,通过编写汇编程序可以直接操作计算机硬件。

在汇编语言中,各种指令起到了关键的作用。

本文将对常用的汇编语言指令进行解释,并说明其用法。

1. 数据传输指令数据传输指令用于在存储器和寄存器之间传输数据。

常用的数据传输指令包括MOV、PUSH和POP。

- MOV指令用于将数据从一个位置传送到另一个位置。

语法格式为:MOV 目的地,源。

- PUSH指令用于将数据压入栈中。

语法格式为:PUSH 寄存器/内存地址。

- POP指令用于从栈中弹出数据并存放到指定位置。

语法格式为:POP 寄存器/内存地址。

2. 算术运算指令算术运算指令用于进行各种算术运算,如加法、减法、乘法和除法。

常用的算术运算指令有ADD、SUB、MUL和DIV。

- ADD指令实现两个操作数的加法。

语法格式为:ADD 目的操作数,源操作数。

- SUB指令实现两个操作数的减法。

语法格式为:SUB 目的操作数,源操作数。

- MUL指令实现两个操作数的乘法。

语法格式为:MUL 操作数。

- DIV指令实现两个操作数的除法。

语法格式为:DIV 操作数。

3. 分支控制指令分支控制指令用于根据条件来选择不同的执行路径,包括条件跳转和无条件跳转。

常用的分支控制指令有JMP、JZ、JE和JNE。

- JMP指令用于无条件跳转到指定的地址。

语法格式为:JMP 标号/偏移量。

- JZ指令用于在零标志位为1时跳转到指定地址。

语法格式为:JZ标号/偏移量。

- JE指令用于在相等标志位为1时跳转到指定地址。

语法格式为:JE 标号/偏移量。

- JNE指令用于在不相等标志位为1时跳转到指定地址。

语法格式为:JNE 标号/偏移量。

4. 逻辑运算指令逻辑运算指令用于实现与、或、非、异或等逻辑运算。

常用的逻辑运算指令有AND、OR、NOT和XOR。

- AND指令用于执行按位与运算。

语法格式为:AND 目的操作数,源操作数。

- OR指令用于执行按位或运算。

汇编各类指令用法及含义分析

汇编各类指令用法及含义分析

汇编各类指令用法及含义分析
什幺是汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。

在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。

在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。

普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。

有的汇编语言编程工具经常会提供宏,它们也被称为宏汇编器。

汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。

在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。

驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。

汇编语言指令大全及实例解析

汇编语言指令大全及实例解析

汇编语言指令大全及实例解析
汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。

在汇编语言中,指令是最基本的操作单位,通过指令可以实现对计算机硬件的控制和操作。

本文将为大家介绍一些常用的汇编语言指令,并通过实例解析它们的具体用法和功能。

1. MOV指令。

MOV指令用于将数据从一个位置复制到另一个位置。

例如,下面的汇编代码将把寄存器AX中的值移动到寄存器BX中:
MOV BX, AX.
这条指令将AX中的值复制到BX中。

2. ADD指令。

ADD指令用于将两个操作数相加,并将结果存储到目标操作数中。

例如,下面的汇编代码将把寄存器AX和BX中的值相加,并将结果存储到AX中:
ADD AX, BX.
3. SUB指令。

SUB指令用于将目标操作数减去源操作数,并将结果存储到目标操作数中。

例如,下面的汇编代码将把寄存器AX中的值减去BX 中的值,并将结果存储到AX中:
SUB AX, BX.
4. CMP指令。

CMP指令用于比较两个操作数的大小,并根据比较结果设置标志位。

例如,下面的汇编代码将比较AX和BX中的值:
CMP AX, BX.
以上是一些常用的汇编语言指令及其实例解析。

通过学习和理解这些指令,我们可以更好地理解和掌握汇编语言的编程技巧,从而更好地编写高效的汇编语言程序。

希望本文对大家有所帮助。

汇编教程汇编指令详解

汇编教程汇编指令详解

汇编教程汇编指令详解汇编语言是一种底层的计算机语言,通过使用汇编指令对计算机进行编程。

本文将对汇编指令进行详细解释,帮助读者理解和使用汇编语言。

1.数据传送指令:数据传送指令用于将数据从一个位置传送到另一个位置。

例如,MOV指令可以将数据从一个寄存器移动到另一个寄存器,或从存储器中读取数据并将其移动到寄存器中。

2.算术运算指令:算术运算指令用于执行各种算术运算,如加法、减法、乘法和除法。

例如,ADD指令可以将两个操作数相加,而MUL指令可以将两个操作数相乘。

3.逻辑运算指令:逻辑运算指令用于执行逻辑运算,如与、或、非和异或。

例如,AND指令可以对两个操作数执行按位与运算,而OR指令可以对两个操作数执行按位或运算。

4.控制转移指令:控制转移指令用于在程序执行过程中改变控制流。

例如,JMP指令可以无条件地将程序跳转到指定的地址,而条件分支指令(如JE、JNE等)可以根据特定的条件决定是否跳转。

5.程序调用指令:程序调用指令用于调用子程序。

例如,CALL指令可以将控制交给一个子程序,并在子程序执行完后返回到调用点。

6.中断指令:中断指令用于触发计算机的中断处理程序。

例如,INT 指令可以使计算机执行与指定中断向量相关联的中断处理程序。

7.输入输出指令:输入输出指令用于与计算机的外部设备进行数据交换。

例如,IN指令可以从外部设备中读取数据,而OUT指令可以向外部设备发送数据。

除了上述常用的汇编指令外,不同的计算机体系结构可能还有其他特定的指令。

因此,在学习和使用汇编语言时,了解特定体系结构的指令集是很重要的。

此外,汇编语言还包括一些程序框架和编程技巧,如标号、注释、宏定义、条件编译等。

这些工具和技巧可用于简化和优化汇编程序的开发过程。

总结起来,汇编语言是一种底层的计算机语言,通过使用各种指令对计算机进行编程。

掌握和理解各种汇编指令对于编写高效和优化的汇编程序非常重要。

希望本文能够帮助读者更好地理解和使用汇编语言。

汇编语言常用指令大全

汇编语言常用指令大全

汇编语言常用指令大全汇编语言是一种计算机编程语言,使用指令来控制计算机硬件执行特定的操作。

在本文中,我们将介绍一些常用的汇编语言指令,以帮助读者更好地理解和学习汇编语言。

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

例子:MOV AX, BX 将寄存器BX中的值复制到寄存器AX中。

2. PUSH:将数据压入堆栈。

例子:PUSH AX 将寄存器AX中的值压入堆栈。

3. POP:从堆栈中弹出并获取数据。

例子:POP AX 从堆栈中弹出一个值,并将其存入寄存器AX中。

二、算术指令1. ADD:将两个操作数相加。

例子:ADD AX, BX 将寄存器AX和BX中的值相加,并将结果存入寄存器AX中。

2. SUB:将一个操作数从另一个操作数中减去。

例子:SUB AX, BX 将寄存器BX中的值从寄存器AX中减去,并将结果存入寄存器AX中。

3. MUL:将两个操作数相乘。

例子:MUL AX, BX 将寄存器AX和BX中的值相乘,并将结果存入寄存器AX中。

三、逻辑指令1. AND:进行逻辑与操作。

例子:AND AX, BX 对寄存器AX和BX中的值进行逻辑与操作,并将结果存入寄存器AX中。

2. OR:进行逻辑或操作。

例子:OR AX, BX 对寄存器AX和BX中的值进行逻辑或操作,并将结果存入寄存器AX中。

3. NOT:进行逻辑非操作。

例子:NOT AX 对寄存器AX中的值进行逻辑非操作。

四、条件分支指令1. JMP:无条件跳转到指定的地址。

例子:JMP label 跳转到标记为label的地址。

2. JZ:当操作数为零时跳转到指定的地址。

例子:JZ label 如果寄存器AX中的值为零,则跳转到标记为label 的地址。

3. JC:当进位标志为1时跳转到指定的地址。

例子:JC label 如果进位标志位为1,则跳转到标记为label的地址。

五、循环指令1. LOOP:当计数器不为零时,循环执行指定的代码块。

汇编指令大全+很全的汇编指令

汇编指令大全+很全的汇编指令

for Addition)
1. 调整操作如下
格式: DAA
(1) 若(AL) and 0FH>9 或 AF=1
,则(AL)<--(AL)+6,AF<--1,对低
功能: 对AL中的两个组合进制数相加的结果进行调 四位的调整.
整,调整结果仍放在AL中,进位标志放在CF中.
(2) 若(AL) and 0F0H>90H 或
6 LAHF 标志传送指令 LAHF 格式: LAHF
2. 本指令不影响状态标位,表格 长度不超过256字节.
说明: 该指令不影响FLAG的原来 内容,AH只是复制了原FLAG的低8 位内容.
功能: 取FLAG标志寄存器低8位至AH寄存器.(AH)<-
-(FLAG)7~0
7 SAHF 标志传送指令 SAHF
说明:
格式: DEC OPRD 功能: OPRD<--OPRD-1
1. OPRD 为寄存器或存储器操作 数.
2. 这条指令执行结果影响AF、 OF、PF、SF、ZF标志位,但不影 响CF标志位.
页码,4/22
星尘-易尘
302 NEG 303 CMP
304 AAS 305 DAS 306 MUL
取补指令 NEG(NEGate)
未组合的十进制加法调整指令 AAA(ASCII Adgust 说明:
for Addition)
1. 组合的十进制数和未组合的
格式: AAA
十进制数:在计算中,十进制数可
用四位二进制数编码,称为BCD
功能: 对两个组合的十进制数相加运算(存在AL中) 码.
的结果进行调整,产生一个未组合的十进制数放在
AX中.
SUB [BX+25],AX

汇编指令大全

汇编指令大全

汇编指令大全汇编语言是一种低级语言,它直接面向计算机硬件,使用符号指令来代替机器语言指令,能够直接控制计算机硬件。

汇编指令是汇编语言中最基本的部分,它直接对应着计算机的机器指令,是程序员编写程序时直接使用的指令集合。

在汇编指令大全中,我们将详细介绍常见的汇编指令及其功能,帮助读者更好地理解和掌握汇编语言。

1. 数据传送指令。

数据传送指令是汇编语言中最基本的指令之一,用于在寄存器和内存之间传送数据。

常见的数据传送指令包括MOV、XCHG等,它们可以将数据从一个位置传送到另一个位置,是程序中最常用的指令之一。

2. 算术运算指令。

算术运算指令用于对数据进行算术运算,包括加法、减法、乘法、除法等。

常见的算术运算指令有ADD、SUB、MUL、DIV等,它们可以对寄存器或内存中的数据进行相应的算术运算,并将结果存储到指定的位置。

3. 逻辑运算指令。

逻辑运算指令用于对数据进行逻辑运算,包括与、或、非、异或等。

常见的逻辑运算指令有AND、OR、NOT、XOR等,它们可以对数据进行相应的逻辑运算,并将结果存储到指定的位置。

4. 控制转移指令。

控制转移指令用于改变程序的执行顺序,包括无条件转移和条件转移两种。

常见的控制转移指令有JMP、JZ、JG等,它们可以根据指定的条件改变程序的执行流程,实现程序的控制流转移。

5. 程序中断指令。

程序中断指令用于在程序执行过程中产生中断,包括内部中断和外部中断两种。

常见的程序中断指令有INT、IRET等,它们可以在特定的条件下中断程序的执行,并在中断处理程序执行完毕后恢复程序的执行。

6. 栈操作指令。

栈操作指令用于对栈进行操作,包括入栈和出栈两种操作。

常见的栈操作指令有PUSH、POP等,它们可以将数据压入栈中或从栈中弹出数据,实现程序中的数据传递和保存。

以上就是汇编指令大全的简要介绍,通过学习和掌握这些指令,读者可以更好地理解汇编语言的基本原理和运行机制,从而能够编写出高效、精确的汇编程序。

汇编指令分类及使用方法

汇编指令分类及使用方法

汇编指令分类及使用方法汇编指令可以分为以下几类:数据传输指令、算术运算指令、逻辑运算指令、转移指令和其他指令等。

一、数据传输指令1. MOV(Move)指令:用于将数据从源操作数传输到目的操作数。

例如:MOV AX, BX 将BX寄存器中的数据传输到AX寄存器中。

2. PUSH(Push)指令:将数据压栈。

例如:PUSH AX 将AX寄存器中的数据压入栈中。

3. POP(Pop)指令:将数据从栈弹出。

例如:POP AX 将栈顶数据弹出然后存入AX寄存器中。

二、算术运算指令1. ADD(Addition)指令:将两个操作数相加。

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

2. SUB(Subtraction)指令:将第二个操作数从第一个操作数中减去。

例如:SUB AX, BX 将AX寄存器中的数据减去BX寄存器中的数据并存储在AX寄存器中。

3. MUL(Multiply)指令:将两个操作数相乘,结果存储在一个乘法寄存器中。

例如:MUL AX, BX 将AX寄存器中的数据与BX寄存器中的数据相乘并存储在AX:DX寄存器对中。

三、逻辑运算指令1. AND(And)指令:对两个操作数逐位执行逻辑与运算。

例如:AND AX, BX 将AX和BX寄存器中的数据逐位执行逻辑与运算并存储在AX寄存器中。

2.OR(Or)指令:对两个操作数逐位执行逻辑或运算。

例如:ORAX,BX将AX和BX寄存器中的数据逐位执行逻辑或运算并存储在AX寄存器中。

3. XOR(Exclusive Or)指令:对两个操作数逐位执行逻辑异或运算。

例如:XOR AX, BX 将AX和BX寄存器中的数据逐位执行逻辑异或运算并存储在AX寄存器中。

四、转移指令1.JMP(JuMP)指令:无条件跳转到一些标号或地址。

例如:JMPLABEL1将程序转移到LABEL1处。

2. JE(Jump Equal)指令:当两个操作数相等时跳转。

汇编指令大全(完整版有注释)

汇编指令大全(完整版有注释)

汇编指令大全(有注释)一、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.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 )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535.3. 目的地址传送指令.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.4. 标志传送指令.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 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如MOV CL,04SHL AX,CL四、串指令───────────────────────────────────────DS:SI 源串段寄存器:源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令───────────────────────────────────────1>无条件转移指令(长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令(短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为"0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为"1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环. LOOPNE/LOOPNZ CX不为零且标志Z=0时循环. JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态. ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令───────────────────────────────────────DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.七、处理机控制指令:标志处理指令CLC(进位位置0指令)CMC(进位位求反指令)STC(进位位置为1指令)CLD(方向标志置1指令)STD(方向标志位置1指令)CLI(中断标志置0指令)STI(中断标志置1指令)NOP(无操作)HLT(停机)WAIT(等待)ESC(换码)LOCK(封锁)。

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

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

【算术指令】
一、加法指令 12、加法指令 ADD (addition) 指令的汇编格式�add dst,src 指令的基本功能�(dst)<-(src)+(dst) 指令支持的寻址方式�他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外�源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响�SF=1 加法结果为负数�符号位为 1� SF=0 加法结果为正数�符号位为 0� ZF=1 加法结果为零 ZF=0 加法结果不为零 CF=1 最高有效位向高位有进位 CF=0 最高有效位向高位无进位 OF=1 两个同符号数相加�正数+正数或负数+负数��结果符号与其相反。 OF=0 两个不同符号数相加�或同符号数相加�结果符号与其相同。 13、带进为加法指令 ADC (add with carry) 指令的汇编格式�ADD dst,src 指令的基本功能�(dst)<-(src)+(dst)+CF 指令支持的寻址方式�他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况 外�源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响�SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零 CF=1 最高有效位向高位有进位 CF=0 最低有效位相高位无进位 OF=1 两个同符号数相加�结果符号与其相反� OF=0 两个同符号数相加�或同符号相加�结果符号与其相同 14、加 1 指令 INC (increament) 指令的汇编格式�INC opr 指令的基本功能�(opr)<-(opr) 指令支持的寻址方式 可以使用除立即数方式外的任何寻址方式 指令对标志位的影响�SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零 OF=1 两个同符号数相加�结果符号与其相反� OF=0 两个同符号数相加�或同符号相加�结果符号与其相同。 二、减法指令 15、减法指令 SUB (subtract) 指令的汇编格式�SUB dst,src 指令的基本功能�(dst)<-(dst)-(src) 指令支持的寻址方式�他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况

汇编语言常用指令大全解释

汇编语言常用指令大全解释

汇编语言常用指令大全解释汇编语言常用指令大全解释常用汇编指令:MOV指令为双操作数指令,两个操作数中必须有一个是寄存器.MOV DST , SRC // Byte / Word执行操作: dst = src1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器).2.立即数不能直接送段寄存器3.不允许在两个存储单元直接传送数据4.不允许在两个段寄存器间直接传送信息PUSH入栈指令及POP出栈指令: 堆栈操作是以"后进先出"的方式进行数据操作.PUSH SRC //Word入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器.入栈时高位字节先入栈,低位字节后入栈.POP DST //Word出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器.执行POP SS指令后,堆栈区在存储区的位置要改变.执行POP SP 指令后,栈顶的位置要改变.XCHG(eXCHanG)交换指令: 将两操作数值交换.XCHG OPR1, OPR2 //Byte/Word执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp1.必须有一个操作数是在寄存器中2.不能与段寄存器交换数据3.存储器与存储器之间不能交换数据.XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码.XLAT (OPR 可选) //Byte执行操作: AL=(BX+AL)指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码.LEA(Load Effective Address) 有效地址传送寄存器指令LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中.执行操作: REG = EAsrc注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONEMOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中LDS(Load DS with pointer)指针送寄存器和DS指令LDS REG , SRC //常指定SI寄存器。

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

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

】 令指 输传 据 数【
。值的位志标定确来值入装由�响影的位志标对令指 2+)PS(-<)PS( ))PS(,1+)PS((-<51-0)SGALF(�能功本基的令指 FPOP�式格编汇的令指 )SEGALF eht pop( FPOP 栈出志标、11 。位志标响影不�响影的位志标对令指 51-0)SGALF(-<))PS(,1+)PS(( 2-)PS(-<)PS(�能功本基的令指 FHSUP�式格编汇的令指 )sgalf eht hsup( FHSUP 栈进志标、01 。值的位志标定确来值入装由�响影的位志标对令指 )HA(-<7-0)SGALF(�能功本基的令指 FHAS�式格的令指 )SGALF otni HA erots(FHAS 节字低器存寄志标送 HA、9 位志标响影不�响影的位志标对令指 7-0)SGALF(-<)HA(�能功本基的令指 FHAL�式格编汇的令指 )SGALF htiw HA daol( FHAL HA 送节字低的器存寄志标、8 令指送传器存寄志标、四 �器存寄段是能不 GER 中令指�求要殊特的令指 。位志标响影不�响影的位志标对令指 式方址寻器储存为须必 crs�式方址寻的持支令指 )2+crs(-<)SE( )crs(-<)ger( crs,ger SEL )2+crs(-<)SD( )crs(-<)ger( crs,ger SDL 。的供提元单字继相个两的定指 crs 由是�针指址地称也�址地段和址地移偏个这 。SE 或 SD 址地段�器存寄送址地移偏的置位元单存内定确把令指 SEL 和 SDL�能功本基的令指 crs,ger SEL crs,ger SDL�式格编汇的令指 )tniop htiw SE daol( SEL SE 和器存寄送针指 )tniop htiw SD daol( SDL SD 和器存寄送针指、7 �器存寄段是能不 ger 中令指�求要出特的令指 。位志标响影不�响影的位志标对令指 。式方址寻器储存种各�式方址寻的持支令指 。的定确式方址寻器储存种一的定 选 crs 由是址地效有个这�器存寄的定指到送址地效有的数作操源把令指 AEL�能功本基的令指 crs�ger AEL�式格编汇的令指 )sserdda evitceffe daol( AEL 器送传址地效有、6 令指送传址地、三 。性读可的序程高提则有�无可有 可中令指码换在 rpo 以所�器存寄 XB 入存已址地移偏的示表所 rpo 为因�址地首的格表为 rpo 。LA 器存寄位 8 是的量移位放存为因�节字 652 过超能不度长的格表节字建所�求要殊特的令指 。位志标响影不:响影的位志标对令指 ))LA(+)XB(+61*)SD((-<)LA( 。中 LA 在存换码代的中格表节字的使指 XB 将 �量移位的供提器存寄 LA 据根令指条这 �能功本基的令指 TALX 或 rpo TALX�式格编汇的令指

常见汇编语言指令及解释

常见汇编语言指令及解释

常见汇编语言指令及解释#1 常见汇编语言指令解释:1.Rn 表示R0~R7中的一个2.#data 表示8位的数值00H~FFH3.direct 表示8位的地址00H~FFH4.#data16 16位立即数5.@Ri 表示寄存器间接寻址只能是R0或者R16.@DPTR 表示数据指针间接寻址,用于外部64k的RAM/ROM寻址7.bit 表示位地址8.$ 表示当前地址寄存器寻址MOV A,R1 将R1中的数值赋予A直接寻址MOV A,3AH 将地址3AH中的数值赋予A立即寻址MOV A,#3AH 将3AH数值赋予Amov dptr,#1828h寄存器间址MOV A,@Ri 将Ri中地址的数值赋予A, Ri或是R0或是R1MOV A,@DPTR变址寻址MOVC A,@A+DPTR 以A中的数值为地址偏移量进行查表;变址寻址区是程序存储器ROM,而不是数据存储器RAM相对寻址AJMP MAIN 跳转到行号为MAIN处位寻址MOV C,7FH 将位地址7FH的数值赋予CMOV C,2FH.7;MOV C,ACC.7MOV A,#3AH 数据传输、赋值命令PUSH direct 将direct为地址的数值压入堆栈中POP direct 将direct为地址的数值弹出堆栈XCH A,direct 将direct中的数值与A进行交换ADD A,direct 将direct中的数值与A中的数值相加INC direct 将direct中的数值加1SUBB A,direct 将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零CLR CDEC direct 将direct中的数值减1DA A 用于对BCD码加减法后进行10进制调整MUL AB 将A和B相乘,并把高八位放在B中,低八位放在A中DIV AB 将A和B相除,并把商的整数部分放在A中,余数放在B中ANL A,direct 将A与direct中的数值进行与运算,结果保留在A中(与运算规律:有0出0,全1出1)ORL A,direct 将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0)XRL A,direct 将A与direct中的数值进行异或运算,结果保留在A中(异或运算规律:全0出0,全1出0,01、10出1)CLR A 对A清零CPL A 对A取反RL A 对A中数左移RR A 对A中数右移RLC A 对A中数带Cy左移RRC A 对A中数带Cy右移SWAP A 对A中的数高4位低4位互相交换LJMP 长跳转指令,64K地址范围AJMP 短跳转指令,2K地址范围JZ rel 如果A为0就跳转到rel行号处JNZ rel 如果A不为0就跳转到rel行号处CJNE A,#data,rel 如果A不等于data就跳转到rel行号处DJNZ R1,rel 如果R1减1后不为0就跳转到rel行号处ACALL rel 调用rel子程序,2K地址以内LCALL rel 调用rel子程序,64K地址以内RET 子程序返回指令RETI 中断程序返回指令NOP 空操作指令MOV C,bit 将位地址bit中的值赋予CCLR bit 将bit位地址清0SETB bit 将bit位地址置1CPL bit 将bit位地址取反ANL C,bit 将地址bit中的值和C做与运算,结果存放在C中ORL C,bit 将地址bit中的值和C做或运算,结果存放在C中JC rel 如果Cy为1,就跳转到rel行号处JNC rel 如果Cy为0,就跳转到rel行号处JB bit,rel ;若BIT=1则转移JNB bit,rel ;若BIT=0则转移JBC bit,reL ;若BIT=1则转移,且BIT置11 加法指令:ADD A,Rn ;ADD A,direct ;ADD A,@Ri ;ADD A,#DATA2 带CY的加法指令:ADDC A,Rn ;ADDC A,direct ;ADDC A,@Ri ;ADDC A,#DATA3 加一指令:INC A ;INC Rn ;INC direct ;INC @Ri ;INC DPTR4 减法指令:SUBB A,Rn ;SUBB A,direct ;SUBB A,@Ri ;SUBB A,#data5 减一指令:DEC A ;DEC Rn ;DEC direct ;DEC @Ri6 十进制调整指令:DA A7 乘法和除法指令:MUL AB ;乘积高八位放在B中,低八位放在A中DIV AB ;商的整数放在A中,余数放在B中8 逻辑异或:XRL A,Rn。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编语言各种指令的解释与用法【数据传输指令】一、通用数据传送指令1、传送指令MOV (move)指令的汇编格式:MOV DST,SRC指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。

指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。

指令的执行对标志位的影响:不影响标志位。

指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器;目的操作数DST不能是CS,也不能用立即数方式。

2、进栈指令PUSH (push onto the stack)出栈指令POP (pop from the stack)指令的汇编格式:PUSH SRC ;POP DST指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。

PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC)POP DST (DST)<-((SP));(SP)<-(SP)指令支持的寻址方式:push 和pop指令不能不能使用立即数寻址方式。

指令对标志位的影响:PUSH 和POP指令都不影响标志位。

指令的特殊要求:PUSH 和POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者-2;POP指令的DST不允许是CS寄存器;3、交换指令XCHG (exchange)指令的汇编格式:XCHG OPR1,OPR2指令的基本功能:(OPR1)<->(OPR2)指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。

指令对标志位的影戏:不影响标志位。

指令的特殊要求:不允许使用段寄存器。

二、累加器专用传送指令4、输入指令IN (input)输出指令OUT (output)指令的汇编格式:IN ac,port port<=0FFHIN ac,DX port>0FFHOUT port,ac port<=0FFHOUT DX,ac port>0FFH指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。

IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。

IN ac,port port<=0FFH (AL)<-(port)传送字节或(AX)<-(port+1,port)传送字IN ac,DX port>0FFH (AL)<-((DX))传送字节或(AX)<-((DX)+1,(DX))传送字OUT port,ac port<=0FFH (port)<-(AL)传送字节或(port+1,port)<-(AX)传送字OUT DX,ac port>0FFH (DX)<-(AL)传送字节或((DX)+1,(DX))<-(AX)传送字指令对标志位的影响:不影响标志位。

指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。

传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。

5、换码指令XLAT (translate)指令的汇编格式:XLAT opr 或XLAT指令的基本功能:这条指令根据AL寄存器提供的位移量,将BX 指使的字节表格中的代码换存在AL中。

(AL)<-((DS)*16+(BX)+(AL)) 指令对标志位的影响:不影响标志位。

指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。

opr为表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则提高程序的可读性。

三、地址传送指令6、有效地址传送器LEA (load effective address)指令的汇编格式:LEA reg,src指令的基本功能:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。

指令支持的寻址方式:各种存储器寻址方式。

指令对标志位的影响:不影响标志位。

指令的特出要求:指令中reg不能是段寄存器;7、指针送寄存器和DS LDS (load DS with point)指针送寄存器和ES LES (load ES with point)指令的汇编格式:LDS reg,src LES reg,src指令的基本功能:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址DS或ES。

这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。

LDS reg,src (reg)<-(src) (DS)<-(src+2)LES reg,src (reg)<-(src) (ES)<-(src+2)指令支持的寻址方式:src必须为存储器寻址方式指令对标志位的影响:不影响标志位。

指令的特殊要求:指令中REG不能是段寄存器;四、标志寄存器传送指令8、标志寄存器的低字节送AH LAHF (load AH with FLAGS)指令的汇编格式:LAHF指令的基本功能:(AH)<-(FLAGS)0-7指令对标志位的影响:不影响标志位9、AH送标志寄存器低字节SAHF(store AH into FLAGS)指令的格式:SAHF指令的基本功能:(FLAGS)0-7<-(AH)指令对标志位的影响:由装入值来确定标志位的值。

10、标志进栈PUSHF (push the flags)指令的汇编格式:PUSHF指令的基本功能:(SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15指令对标志位的影响:不影响标志位。

11、标志出栈POPF (pop the FLAGES)指令的汇编格式:POPF指令的基本功能:(FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2 指令对标志位的影响:由装入值来确定标志位的值。

【算术指令】一、加法指令12、加法指令ADD (addition)指令的汇编格式:add dst,src指令的基本功能:(dst)<-(src)+(dst)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。

即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。

指令对标志位的影响:SF=1 加法结果为负数(符号位为1)SF=0 加法结果为正数(符号位为0)ZF=1 加法结果为零ZF=0 加法结果不为零CF=1 最高有效位向高位有进位CF=0 最高有效位向高位无进位OF=1 两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。

OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。

13、带进为加法指令ADC (add with carry)指令的汇编格式:ADD dst,src指令的基本功能:(dst)<-(src)+(dst)+CF指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。

即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。

指令对标志位的影响:SF=1 加法结果为负数SF=0 加法结果为正数ZF=1 加法结果为零ZF=0 加法结果不为零CF=1 最高有效位向高位有进位CF=0 最低有效位相高位无进位OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同14、加1指令INC (increament)指令的汇编格式:INC opr指令的基本功能:(opr)<-(opr)指令支持的寻址方式可以使用除立即数方式外的任何寻址方式指令对标志位的影响:SF=1 加法结果为负数SF=0 加法结果为正数ZF=1 加法结果为零ZF=0 加法结果不为零OF=1 两个同符号数相加,结果符号与其相反,OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。

二、减法指令15、减法指令SUB (subtract)指令的汇编格式:SUB dst,src指令的基本功能:(dst)<-(dst)-(src)指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。

即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。

指令对标志位的影响:SF=1 减法结果为负数(符号位为1)SF=0 减法结果为正数(符号位为0)ZF=1 减法结果为零ZF=0 减法结果不为零CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。

OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

16、带借位减法指令SBB (subtract with borrow)指令的汇编格式:SBB dst,src指令的基本功能:(dst)<-(dst)-(src)-CF指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。

即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。

指令对标志位的影响:SF=1 减法结果为负数(符号位为1)SF=0 减法结果为正数(符号位为0)ZF=1 减法结果为零ZF=0 减法结果不为零CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。

OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

17、减1指令DEC (decrement)指令的汇编格式:DEC opr指令的基本功能:(opr)<-(opr)-1指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。

指令对标志位的影响:SF=1 减法结果为负数(符号位为1)SF=0 减法结果为正数(符号位为0)ZF=1 减法结果为零ZF=0 减法结果不为零OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。

OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。

18、比较指令CMP (compare)指令的汇编格式:CMP opr1,opr2指令的基本功能:(opr1)-(opr2),根据相减结果设置条件码,但不回送结果。

指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。

相关文档
最新文档