预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共72页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

3.80863.8086的指令系统3.1数据传送指令(P89)3.2算术运算指令(P96)3.3逻辑运算及移位指令(P107)3.4串操作指令(P114)3.5控制转移指令(P119)3.6输入/输出指令(P134)3.7处理器控制专用指令(P135)3.13.1数据传送指令通用数据传送指令MOV(P90)堆栈操作指令PUSH、POP(P91)交换指令XCHG(P92)查表指令XLAT(P93)地址传送指令LEA、LDS、LES(P93)标志传送指令(P95)LAHF、SAHF、PUSHF、POPF3.13.1数据传送指令通用数据传送指令MOV功能:将源操作数内容复制到目操作数中MOVdst,src;(dst)←(src)Dst:R,M,SR;Src:R,M,SR,Im寄存器(CS不作目的数)立即数段寄存器存储器3.13.1数据传送指令通用数据传送指令MOV例:MOVCX,0MOVAX,SIMOVAX,DSMOVSS,CXMOVDI,[BP]MOVES:[BX+2],CLMOVWORDPTR[DI][BP],4FHCS不能做目操作数3.13.1数据传送指令注意:不影响标志位;立即数、CS段寄存器不能做目的操作数;两个存储单元之间不能直接进行数据传送;两个段寄存器之间不能直接进行数据传送;不能直接给段寄存器送立即数;两操作数必须等长传送可通过通用寄存器3.13.1数据传送指令通用寄存器的桥梁作用seg→r→segMOVAX,ESMOVDS,AXimm→r→segMOVAX,2000HMOVDS,AXMOVDS,ESseg←×→segMOVDS,2000Himm×→segm→r→mMOVAX,[20H]MOV[BX],AXMOV[BX],[20H]m←×→m思考:MOV[BX],20H?3.13.1数据传送指令通用数据传送指令MOV(P90)堆栈操作指令PUSH、POP(P91)交换指令XCHG(P92)查表指令XLAT(P93)地址传送指令LEA、LDS、LES(P93)标志传送指令(P95)LAHF、SAHF、PUSHF、POPF3.13.1数据传送指令堆栈操作指令入栈指令PUSHPUSHsrc;SP←SP-2(SP+1)←src(H)(SP)←src(L)srcreg16mem16seg出栈指令POPPOPdst;dst(L)←(SP)dst(H)←(SP+1)SP←SP+2dstreg16mem16Seg(除CS)例:PUSHAXPUSHWORDPTR[BP]POPESPOPWORDPTR[BP][SI]3.13.1数据传送指令入栈操作示例设有SS=3200H,SP=0800H,AX=105CH。SP=0800H→32800H……StackPUSHAXSP=SP-1→327FFHSP=SP-1→327FEHSP=07FEH5CHAL10HAH3.13.1数据传送指令出栈操作示例设有SS=3200H,SP=07FEHPOPAXSP=SP+1→32800HSP=SP+1→327FFHSP=07FEH→327FEH……Stack10H5CHSP=0800HAX=105CHAHAL5CH10H3.13.1数据传送指令一定是16位操作,即压入和弹出的一定是字单元,且高字节总是在高地址单元;不允许使用立即数作为操作数不能以CS、IP作为目的操作数因为8086系统的堆栈是向下(低地址端)生成的,并且是实栈顶,所以入栈时总是SP先减2再压入字,而出栈时总是先弹出字再将SP加2;堆栈中的数据总是先进后出;不影响标志位堆栈操作注意3.13.1数据传送指令通用数据传送指令MOV(P90)堆栈操作指令PUSH、POP(P91)交换指令XCHG(P92)查表指令XLAT(P93)地址传送指令LEA、LDS、LES(P93)标志传送指令(P95)LAHF、SAHF、PUSHF、POPF3.13.1数据传送指令交换指令XCHG可使用的操作数类型组合:XCHGCL,DH;通用寄存器↔通用寄存器XCHGAX,[BP];通用寄存器↔存储器功能:将源、目操作数的内容互相交换,指令执行后源、目操作数同时被改变指令形式:XCHGop1,op2;(op1)↔(op2)op1:R,M;op2:R,M立即数为什么不能做操作数?寄存器存储器3.13.1数据传送指令交换指令XCHG注意不能直接交换两个存储单元的值;任一个操作数都不能是段寄存器或立即数;不影响标志位3.13.1数据传送指令《例》用MOV、PUSH,POP、XCHG指令完成两寄存器AX、BX中数据的交换(讨论所用机器码数量)•用MOV指令•用PUSH指令POP•用XCHG指令MOVCX,AXMOVAX,BXMOVBX,CX6字节机器码PUSHAXPUSHBXPOPAXPOPBX4字节机器码XCHGAX,BX1字