汇编语言指令详解
常用汇编指令

常用汇编指令汇编语言是一种低级机器语言的抽象表示,通过使用汇编指令可以编写出与硬件相关的程序。
在计算机科学领域中,汇编指令是非常重要的,是理解计算机底层原理和实现的关键。
本文将介绍一些常用的汇编指令,以帮助读者更好地理解和应用这些指令。
一、数据传输指令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(将数据发送到指定的端口)等。
总结:汇编语言中的指令功能丰富多样,可以实现各种复杂的操作。
汇编语言指令详解

汇编语言指令详解汇编语言是一种低级语言,它直接操作计算机的硬件。
与高级语言相比,汇编语言更具操作性,可以更精确地控制计算机的执行过程。
在编写汇编语言程序时,我们需要使用指令来完成各种操作,并且对不同的指令进行详细的了解。
本文将详细介绍一些常用的汇编语言指令及其功能。
一、数据传输指令数据传输指令用于在寄存器间传输数据或将数据从寄存器传送到内存中。
常用的数据传输指令包括MOV、LDA、STA等。
MOV指令用于将数据从一个寄存器传送到另一个寄存器。
例如,MOV AX, BX表示将寄存器BX中的数据传送到寄存器AX中。
LDA指令用于将一个内存单元的数据传送到累加器中。
例如,LDA 1000H将内存单元1000H中的数据传送到累加器中。
STA指令用于将累加器的数据传送到一个内存单元中。
例如,STA 2000H将累加器中的数据传送到内存单元2000H中。
二、算术运算指令算术运算指令用于对数据进行加、减、乘、除等运算操作。
常用的算术运算指令包括ADD、SUB、MUL、DIV等。
ADD指令用于将两个操作数相加,并将结果存储在目的操作数中。
例如,ADD AX, BX表示将寄存器AX和寄存器BX的数据相加,并将结果存储在寄存器AX中。
SUB指令用于将目的操作数减去源操作数,并将结果存储在目的操作数中。
例如,SUB AX, BX表示将寄存器AX减去寄存器BX的数据,并将结果存储在寄存器AX中。
MUL指令用于执行无符号整数乘法运算。
例如,MUL AX, BX表示将寄存器AX和寄存器BX的数据相乘,并将结果存储在寄存器AX 中。
DIV指令用于执行无符号整数除法运算。
例如,DIV AX, BX表示将寄存器AX的数据除以寄存器BX的数据,并将商存储在寄存器AX 中,余数存储在寄存器DX中。
三、逻辑运算指令逻辑运算指令用于对数据进行逻辑操作,如与、或、非、位移等。
常用的逻辑运算指令包括AND、OR、NOT、SHL等。
AND指令用于对两个操作数执行位与操作,并将结果存储在目的操作数中。
汇编语言基本指令详解

汇编语言基本指令详解在计算机科学和计算机工程领域,汇编语言是一种计算机底层编程语言,用于直接控制计算机硬件。
它是机器语言的文本形式,使用符号和助记符来代表机器指令,相对于高级编程语言来说更加底层。
汇编语言基本指令是使用汇编语言进行编程时必不可少的内容。
下面将详细介绍汇编语言中常用的基本指令。
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计算机_专业资料汇编指令大全(有注释)为了方便开发者理解和使用汇编语言,本文汇编指令大全提供了对常用指令的详细注释。
汇编语言是一种低级编程语言,直接操作计算机的硬件和寄存器。
掌握汇编语言对于理解计算机底层原理和优化程序性能至关重要。
下面列举了一些常用的汇编指令,以供参考。
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指令用于执行按位或运算。
汇编常用指令

汇编常用指令1. 前言汇编语言是一种低级别的计算机语言,它是由一些指令组成的。
指令是一条计算机执行的命令,从基本上讲,这些指令代表着标准的操作,例如加、减、乘、除、移位和比较等。
汇编语言可以通过编写程序来控制一个计算机的行为,这些程序通常被称为汇编程序。
本文将介绍汇编语言中一些常用的指令。
2. 数据传送指令数据传送指令是汇编语言中最基本的指令之一,它主要用来将数据从一个位置传送到另一个位置。
在汇编语言中,数据传送指令通常使用MOV语句来实现。
下面是一些常用的数据传送指令:- MOV AX, BX:将BX中存储的数据传送到AX中。
- MOV AX, [BX]:将BX中存储的地址所指向的数据传送到AX中。
- MOV [BX], AX:将AX中存储的数据传送到BX所指向的地址中。
3. 算术运算指令算术运算指令主要用来执行各种数学运算,例如加法、减法、乘法和除法等操作。
下面是一些常用的算术运算指令:- ADD AX, BX:将BX中存储的数据与AX中存储的数据相加,并将结果存储在AX中。
- SUB AX, BX:将BX中存储的数据从AX中存储的数据中减去,并将结果存储在AX中。
- MUL BX:将AX中存储的数据与BX中存储的数据相乘,并将结果存储在AX中。
- DIV BX:将AX中存储的数据除以BX中存储的数据,并将结果存储在AX和DX中。
4. 位运算指令位运算是一种在二进制数字级别上的运算,它可以执行各种位操作,例如AND、OR、XOR和NOT等操作。
下面是一些常用的位运算指令:- AND AX, BX:将BX中存储的数据与AX中存储的数据按位进行AND运算,并将结果存储在AX中。
- OR AX, BX:将BX中存储的数据与AX中存储的数据按位进行OR 运算,并将结果存储在AX中。
- XOR AX, BX:将BX中存储的数据与AX中存储的数据按位进行XOR运算,并将结果存储在AX中。
- NOT AX:将AX中存储的数据按位进行取反操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一讲第三章 指令系统--寻址方式回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过程。
重点和纲要:指令系统--寻址方式。
有关寻址的概念;6种基本的寻址方式及有效地址的计算。
教学方法、实施步骤时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等讲 授 40” ×2 提 问 3” ×2 小 结2” ×2讲授内容:3.1 8086/8088寻址方式首先,简单讲述一下指令的一般格式:操作码 操作数 …… 操作数计算机中的指令由操作码字段和操作数字段组成。
操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。
操作数:指在指令执行操作的过程中所需要的操作数。
该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。
寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。
8086/8088的基本寻址方式有六种。
1.立即寻址所提供的操作数直接包含在指令中。
它紧跟在操作码的后面,与操作码一起放在代码段区域中。
如图所示。
例如:MOV AX ,3000H立即数可以是8位的,也可以是16位的。
若是16位的,则存储时低位在前,高位在后。
立即寻址主要用来给寄存器或存储器赋初值。
2.直接寻址操作数地址的16位偏移量直接包含在指令中。
它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。
如图2-2所示。
例如: MOV AX,DS:[2000H];图2-2(对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。
8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。
此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。
MOV AX,[2000H] ;数据段MOV BX,ES:[3000H] ;段超越,操作数在附加段即绝对地址=(ES)*16+3000H3.寄存器寻址操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。
例如:MOV DS,AXMOV AL,BH4.寄存器间接寻址操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。
可以分成两种情况:(1)以SI、DI、BX间接寻址,则通常操作数在现行数据段区域中,即数据段寄存器(DS)*16加上SI、DI、BX中的16位偏移量,为操作数的地址,例如: MOV AX, [SI] 操作数地址是:(DS)*16+(SI)(2)以寄存器BP间接寻址,则操作数在堆栈段区域中。
即堆栈段寄存器(SS)*16与BP的内容相加作为操作数的地址,例如:MOV AX,[BP] 操作数地址是:(SS)*16+(BP)若在指令中规定是段超越的,则BP的内容也可以与其它的段寄存器相加,形成操作数地址。
例如: MOV AX,DS:[BP] 操作数地址是:(DS)*16+(BP)5.变址寻址由指定的寄存器内容,加上指令中给出的8位或16位偏移量(当然要由一个段寄存器作为地址基准)作为操作数的偏移地址。
(操作数在存贮器中)可以作为寄存器变址寻址的四个寄存器是SI、DI、BX、BP。
⑴若用SI、DI和BX作为变址,则与数据段寄存器相加,形成操作数的地址即默认在数据段;⑵若用BP变址,则与堆栈段寄存器相加,形成操作数的地址即默认在堆栈段例如: MOV AX,COUNT[SI];操作数地址是:(DS)*16+(SI)+COUNT但是,只要在指令中指定是段超越的,则可以用别的段寄存器作为地址基准。
6.基址加变址寻址把BX和BP看成是基址寄存器,把SI、DI看着是变址寄存器,把一个基址寄存器(BX或BP)的内容加上一个变址寄存器(SI或DI)的内容,再加上指令中指定的8位或16位偏移量(当然要以一个段寄存器作为地址基准)作为操作数的偏移地址,如图所示。
操作数在存贮器中,其偏移地址由(基址寄存器)+(变址寄存器)+相对偏移量形成基址寄存器――BX:数据段、BP:堆栈段;变址寄存器――SI、DI。
例如:MOV AX,[BX][SI] 或 MOV AX,[BX+SI]也可放置一个相对偏移量,如COUNT 、MASK等等,用于表示相对寻址。
MOV AX,MASK[BX][SI]MOV BH,COUNT[DI][BP];MOV BH,COUNT[BP+DI]✧若用BX作为基地址,则操作数在数据段区域✧若用BP作为基地址,则操作数在堆栈段区域但若在指令中规定段是超越的,则可用其它段寄存器作为地址基准。
P.28 表2-1 段寄存器使用的基本约定习题与思考:1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量VAL 的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?其物理地址是多少?(1)MOV AX,0ABH (2)MOV AX,[100H](3)MOV AX,VAL (4)MOV BX,[SI](5)MOV AL,VAL[BX] (6)MOV CL,[BX][SI](7)MOV VAL[SI],BX (8)MOV [BP][SI],1002.已知SS=0FFA0H,SP=00B0H,先执行两条把8057H和0F79H分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和SP内容变化的过程示意图。
(标出存储单元的地址)第二讲3.2 指令系统--数据传输、算术运算回顾:8086/8088的内部结构和寄存器,8086/8088的工作过程。
8086/8088的寻址方式及操作数地址的计算。
重点和纲要:要求学生了解指令的功能,掌握数据传送类,算术运算类指令的使用方法。
(掌握指令内涵,会用)讲授内容:3.2 8086/8088 指令系统8086/8088的指令系统可以分为以下六个功能组。
1.数据传送(Data Transter) 2.算术运算(Arithmetic)3.逻辑运算(Logic) 4.串操作(String menipulation)5.程序控制(Program Control) 6.处理器控制(Processor Control)一、数据传送指令主要介绍 MOV,XCHG、堆栈和地址传送指令。
1.数据传送MOV指令一般格式:MOV OPRD1,OPRD2MOV 是操作码,OPRD1和OPRD2分别是目的操作数和源操作数。
功能:完成数据传送具体来说,一条数据传送指令能实现:⑴CPU内部寄存器之间数据的任意传送(除了代码段寄存器CS和指令指针IP以外)。
MOV AL,BL;字节传送MOV CX,BX;字传送MOV DS,BX⑵立即数传送至CPU内部的通用寄存器组(即AX、 BX、CX、DX、BP、SP、SI、DI),MOV CL,4MOV AX,03FFHMOV SI,057BH⑶CPU内部寄存器(除了CS和IP以外)与存储器(所有寻址方式)之间的数据传送。
MOV AL,BUFFERMOV AX,[SI]MOV [DI],CXMOV SI,BLOCK[BP]MOV DS,DATA[SI+BX]MOV DEST[BP+DI],ES⑷能实现用立即数给存储单元赋值例如:MOV [2000H],25HMOV [SI],35H对于MOV 指令应注意几个问题:①存储器传送指令中,不允许对CS和IP进行操作;②两个操作数中,除立即寻址之外必须有一个为寄存器寻址方式,即两个存储器操作数之间不允许直接进行信息传送;如我们需要把地址(即段内的地址偏移量)为AREAl的存储单元的内容,传送至同一段内的地址为AREA2的存储单元中去,MOV指令不能直接完成这样的传送,但我们可以用CPU内部寄存器为桥梁来完成这样的传送:MOV AL,AREAlMOV AREA2,AL③两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;如:MOV AX,0;MOV DS,AX④目的操作数,不能用立即寻址方式。
2.堆栈指令(简述堆栈的概念及存取特点,如先进后出)包括入栈(PUSH)和出栈(POP)指令两类。
仅能进行字运算。
(操作数不能是立即数)⑴入栈指令PUSH一般格式:PUSH OPRD源操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(所有寻址方式)。
入栈操作对象必须是16位数。
功能:将数据压入堆栈执行步骤为:SP=SP-2;[SP]=操作数低8位;[SP+1]= 操作数高8位例如:PUSH BX执行过程为:SP=SP-1,[SP]=BH;SP=SP-1,[SP]=BL,如图2-8所示。
⑵出栈指令POP一般格式:POP OPRD功能:将数据弹出堆栈对指令执行的要求同入栈指令。
例如:POP AX 图2-8POP [BX]POP DS3.交换指令 XCHG一般格式:XCHG OPRD1,OPRD2功能:完成数据交换这是—条交换指令,把一个字节或一个字的源操作数与目的操作数相交换。
交换能在通用寄存器与累加器之间、通用寄存器之间、通用寄存器与存储器之间进行。
但段寄存器和立即数不能作为一个操作数,不能在累加器之间进行。
例如: XCHG AL,CLXCHG AX,DIXCHG BX,SIXCHG AX,BUFFERXCHG DATA[SI],DH4.累加器专用传送指令有三种,输入、输出和查表指令。
前两种又称为输入输出指令。
⑴ IN 指令一般格式:IN AL,n ; B AL←[n]IN AX,n ; W AX←[n+1][n]IN AL,DX ; B AL←[DX]IN AX,DX ; W AX←[DX+1][DX]功能:从I/O端口输入数据至AL或AX。
输入指令允许把一个字节或一个字由一个输入端口传送到AL或AX中。
若端口地址超过255时,则必须用DX保存端口地址,这样用DX作端口寻址最多可寻找64K个端口。
⑵ OUT 指令一般格式:OUT n,AL ; B AL→[n]OUT n,AX ; W AX→[n+1][n]OUT DX,AL ; B AL→[DX]OUT DX,AX ; W AX→[DX+1][DX]功能:将AL或AX的内容输出至I/O端口。
该指令将AL或AX中的内容传送到一个输出端口。
端口寻址方式与IN指令相同。
⑶ XLAT指令一般格式:XLAT ; AL=(DX)×16+(BX)+(AL))功能:完成一个字节的查表转换。