2019/9/11 MOV, 一般传送指令 (1)0F歌1与0PR2位数匹配: MOVAL,BX MOVAL.BL 存不直旋对受寄存限值。必须用内都寄存玻 (2)立即数只能作源操作激,不能作目的操作数, 也不允许在两段膏存器之间直楼传送数据,但可以由段寄存器向 MOW5H,AL MOV AL,5H√ 内部寄存或存储元传送最语。 (③)、不能言被在两个存德单元之间进行数据交换,必须用内部 MOV DS 2000H x MOV DX,2000H 寄存作为过传进。如: MOV DS,BS* MOY DS,DX M0V13000H2000H用¥M0VAL2000H (5)CS和P不能作为目的操作数。 MOV [3000HJAL (6)0V指令不影响标志位, MOV IBXI.ISI MOVBX,SI 41 2.堆栈操作指今PUSH/POP 在8086/8O88系统中,堆找是一段RAM区域. 自◆格式:PUSH SRC:压入堆找指令PUSH 栈底的一端地址较大,栈顶的一增地址较小。 POP DST:弹出堆找指令POP 段基址在SS中,SP始终指向栈顶。 功能:PUSH指令使SP-2SP,然后梅16位的源操作数 压入堆找, 先高位后低位。源操作数可以是通用膏存幕、 堆找操作地终遵守(FIL0)和(LFO)原则,数据的存入和 段寄存和存海。 取出都在找顶进行。 (SP)-(SP)-2 ((SP)+1,(SP))-(SRC) 在8086/8088票统中,PUSH/P0P以字为单位。 P0P指令与PUSH指冷相反,它从找顶弹出16位操 作数到目标操 时 SP间 堆找的主要用造:(1)现场和减同地址的保护 的。目标操作数司以是通用寄存、段存馨CS (2)奇存最内客的绿护 除外)或存岳。 (3)传递多数 (DST)-((SP)+1,(SP))(SP)-(SP)+2 (4)存情局部变量 43
2019/9/11 11 (1)OPR1与OPR2位数匹配; MOV AL , BX MOV AL , BL (2)立即数只能作源操作数,不能作目的操作数。 MOV 5H , AL MOV AL , 5H (3)、不能直接在两个存储单元之间进行数据交换,必须用内部 寄存器作为过渡传送数据。如: MOV [3000H],[2000H] MOV AL,[2000H] MOV [3000H],AL MOV [BX] , [SI] MOV BX , SI MOV,一般传送指令 (4)不能用立即数直接对段寄存器赋值,必须用内部寄存器或 存储单元作为过渡。 也不允许在两段寄存器之间直接传送数据,但可以由段寄存器向 内部寄存器或存储单元传送数据。 MOV DS , 2000H MOV DX , 2000H MOV DS , ES MOV DS , DX (5)CS和IP不能作为目的操作数。 (6)MOV指令不影响标志位。 2.堆栈操作指令PUSH/POP 在8086/8088系统中,堆栈是一段RAM区域。 栈底的一端地址较大,栈顶的一端地址较小。 段基址在SS中,SP始终指向栈顶。 堆栈操作始终遵守(FILO)和(LIFO) 原则,数据的存入和 取出都在栈顶进行。 在8086/8088系统中,PUSH/POP以字为单位。 堆栈的主要用途:(1)现场和返回地址的保护 (2)寄存器内容的保护 (3)传递参数 (4)存储局部变量 指令格式: PUSH SRC;压入堆栈指令PUSH POP DST; 弹出堆栈指令POP 功能:PUSH指令使SP-2SP,然后将16位的源操作数 压入堆栈,先高位后低位。源操作数可以是通用寄存器、 段寄存器和存储器。 (SP)←(SP) –2 , ((SP)+1,(SP)) ←(SRC) POP指令与PUSH指令相反,它从栈顶弹出16位操 作数到目标操作数,同时修改SP+2SP,使SP指向新 的栈顶。目标操作数可以是通用寄存器、段寄存器(CS 除外)或存储器。 (DST) ← ((SP)+1,(SP)) , (SP)←(SP) +2 41 42 43 44
2019/9/11 注意 指执行前 AH AL (1)堆我数据的存取必须以字为单位。 推拉度 PUSH CL PUSH CX√ 任地址 Ax (2)不能用立即数作操作数,PUS1000阳名 (3)可以指定段寄存馨作操作数,但POP指令不能用CS段寄存是。 21 POP AX (4)先进后出。 出授防肉 PUSH DS (AX0-2107H PUSH AX PUSH ES (DST)-SP)+1,(SP)) (AX0-2107H POP ES 高地址 (SP-(SP)+2 (SP-(SP)-2 POP DS ((SP)+1,(SP))-(SRC) (⑤)都不影响标志位, 45 6 交换指令X0HG ?4.查表转换指今XLAT(或称换码指令】 指◆格式:XCHG DST,SRC 指令格式:XLAT成LAT转换表:隐含寄存器为BX,AL 功能:将源操作激SRC的内容与目的操作数DST的内容交换。 操作数同时是字或字节。 被清素费楼中陵烧. 源操作激可以是通用寄存琴、存储播; 特点:对于一些无规律的代网辣换特别方便 目的操作数可以是通用寄存是、存情器。 注意:表的首地址量于BX中,AL中存放对象在表中的相对地址。 注意:不能在两个存德单元之间直漠文换激据; 表中的内容则是所需要转换的代码,表的长度不海超过256个字节, 段奇存器和立即壶不能作为操作数。 指令执行后,所查找的对象自动存于AL中,BX内容保特不变 举例:M0VAX,2244H:AX=2244H XLAT的操作数是隐含的,也可用表的首地址名称来表示图 M0VBX,3366H:BX=3366H XCHG AX,BX:交换后,AX=3366H,B2244H 47 12
2019/9/11 12 指令执行前 堆栈段 ←(SP) (AX)=2107H 低地址 进栈方向 (SP)←(SP) –2 ((SP)+1,(SP)) ←(SRC) 21 07 高地址 (AX)=2107H (DST) ← SP)+1,(SP)) (SP)←(SP) +2 出栈方向 AH AL AX PUSH AX POP AX 注意: (1)堆栈数据的存取必须以字为单位。 PUSH CL PUSH CX (2)不能用立即数作操作数。 PUSH 1000H (3)可以指定段寄存器作操作数,但POP指令不能用CS段寄存器。 (4)先进后出。 PUSH DS PUSH ES POP ES POP DS (5)都不影响标志位。 . 3. 交换指令XCHG 指令格式:XCHG DST, SRC 功能:将源操作数SRC的内容与目的操作数DST的内容交换。 操作数同时是字或字节。 源操作数可以是通用寄存器、存储器; 目的操作数可以是通用寄存器、存储器。 注意:不能在两个存储单元之间直接交换数据; 段寄存器和立即数不能作为操作数。 举例:MOV AX,2244H;AX=2244H MOV BX,3366H;BX=3366H XCHG AX,BX; 交换后,AX=3366H,BX=2244H 4. 查表转换指令XLAT(或称换码指令) 指令格式:XLAT 或XLAT 转换表;隐含寄存器为BX,AL 功能:完成一个字节的查表转换。它将数据段中偏移地址为BX与 AL寄存器之和的存储单元内容送入AL寄存器,即:[BX+AL]AL。 特点:对于一些无规律的代码转换特别方便。 注意:表的首地址置于BX中,AL中存放对象在表中的相对地址。 表中的内容则是所需要转换的代码,表的长度不得超过256个字节。 指令执行后,所查找的对象自动存于AL中, BX内容保持不变 XLAT的操作数是隐含的,也可用表的首地址名称来表示。 45 46 47 48