1、指令类型:()数据传送指令()算术运算指令()逻辑运算指令()移位指令()标志处理指令和CPU控制指令()转移和循环控制指令()调用和返回指令()字符串操作指令(9)输入、输出指令缩写与符号OPR:操作数SRC:源操作数DST:目的操作数REG:寄存器CNT:计数DISP:位移量ADDR:地址EA:有效地址4.2.1数据传送类指令通用传送指令包括:传送指令进栈指令出栈指令交换指令1.传送指令(MOV)功能:将源操作数SRC的一个字节或一个字传送到目的操作数DST所指单元。格式:MOV DST,SRC;(DST)(SRC)其中SRC表示源操作数,DST表示目的操作数。源操作数:通用寄存器、段寄存
2、器、立即数和内存单元。目的操作数:通用寄存器、段寄存器和内存单元。常用的六种格式(1)通用寄存器之间(2)通用寄存器和存储单元之间(3)通用寄存器和段寄存器之间(4)段寄存器和存储单元之间(5)立即数传送到通用寄存器(6)立即数传送到存储单元例如:MOVAX,BXMOVAL,DLMOVAX,02MOVSI,BXMOVAL,4DIMOVAX,BX+2MOVBXDI,DX变量的定义:DATA1DW20H,30HDATA2DB50H,60H,70HDATA3 DW10HDUP(?)相应传送指令:MOVAX,DATA1MOVDATA3,BXMOVAL,DATA2DIMOVDATA3SI,DXMOVCX
3、,LENGTHDATA3MOVBX,SIZEDATA3MOVSI,OFFSETDATA2指令中传送的是一个字还是一个字节,通常由操作数的类型确定。下列指令中,没有确定的类型,是错误的。MOVDATA3SI,02HMOV2SI,ALMOV4DI,02可以采用如下方式纠正:MOVBYTEPTR4DI,02如果两个操作数的类型不一致,也是错误的:DATA1DW05HDATA2DB0FH,10H,0AHDATA3DB5DUP(?)MOVAX,BLMOVAL,DATA1MOVBX,DATA3SI可以采用如下方式纠正:MOVAL,BYTEPTRDATA1内容归纳(1)两操作数进行数据传送的正常通路寄存器间
4、接寻址、寄存器相对寻址、基址变址寻址和基址变址相对寻址方式只能使用变址寄存器DI,SI和基址寄存器BX,BP。(3)寄存器相对寻址和寄存器基址变址相对寻址方式的位移量DISP可以是常量、变量,并且有多种书写方式MOVAX,DISPBXMOVAX,BX+DISPMOVAX,BX.DISPMOVAX,BX+DISP(4)段寄存器不是DS,而是ES时,用如下方式表示:MOVAX,ES:SI对BP寄存器MOVAL,DATA2BP;对应DS段MOVAL,10BP;对应SS段3.2.1 数据传送类指令数据传送类指令 2、取有效地址指令(LEA)将源操作数SRC的有效地址(偏移地址)送入寄存器REG中比较:
5、MOVAX,10HDILEAAX,10HDI(DI)=0500H,(DS)=0200H3.2.1 数据传送类指令数据传送类指令3.取地址指针指令取地址指针指令LDS/LES目标寄存器,目标寄存器,源操作数源操作数指针传送指令指针传送指令ADDRDD1A2B3C4DH LDS SI,ADDR4.数据交换指令数据交换指令XCHG 操作数操作数1,操作数操作数2交换指令,操作数交换指令,操作数1、2不能同为内存操作数不能同为内存操作数XCHG AX,SI+0400H3.2.1 数据传送类指令数据传送类指令 5.堆栈操作指令堆栈操作指令堆栈堆栈PUSH 源操作数源操作数进栈指令进栈指令:先调整堆栈指针,再把源操作数压先调整堆栈指针,再把源操作数压栈。栈。PUSH AXPUSH SI+53.2.1 数据传送类指令数据传送类指令POP 目标操作数目标操作数出栈指令出栈指令:先将栈顶先将栈顶2字节送目标操作数,再字节送目标操作数,再调整调整堆栈指针。堆栈指针。POP AXPOP SI+5PUSHF POPF16位标志寄存器进栈位标志寄存器进栈/出栈指令出栈指令