文档详情

第三章汇编语言80x86的指令系统和寻址方式.ppt

发布:2016-08-16约字共224页下载文档
文本预览下载声明
MOV d, s MOV:数据传送指令 d : 目的操作数(DST) s :源操作数 (SRC) 指令执行后,把s送到d。 MOV AX,BX 指令执行前, (AX)=0306H(BX)=1234H 指令执行后, (AX)= 1234H (BX)=1234H 默认段选择规则 不允许使用段跨越前缀的3中情况 串处理指令的目的串必须用ES段; PUSH指令的目的操作数和POP指令的源操作数必须用SS段 指令必须存放在CS段中。 例:MOV AX, [ 2000H ] EA=2000H, 假设(DS)=3000H, 那么 PA=32000H. 如图: 8086为了使指令字不要过长,规定双操作数指令的两个操作数中,只能有一个使用存储器寻址方式,这就是一个变量常常先要送到寄存器的原因。 寄存器:16位寻址时可用BX,BP,SI,DI. 32位寻址时可用EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI. 注意: BP,ESP,EBP,默认是SS段。其他寄存器默认是DS段。 寄存器相对寻址方式 MOV AX,COUNT[SI] 或 MOV AX,[COUNT+SI] 通用数据传送指令 MOV MOVSX MOVZX PUSH POP PUSHA/PUSHAD POPA/POPAD XCHG 该组指令不影响标志位。 MOV 指令的机器语言有7种格式 1、MOV mem/reg1,mem/reg2 2、MOV reg,data 3、MOV ac,mem 4、MOV mem,ac 5、MOV segreg,mem/reg 6、MOV mem/reg,segreg 7、MOV mem/reg,data Reg8 AH AL BH BL CH CL DH DL Reg16 AX BX CX DX SI DI BP SP Reg32 EAX EBX ECX EDX ESI EDI EBP ESP Segreg CS DS SS ES FS GS DST与SRC必须类型匹配,即同时是字节、字或双字类型。以下几点要注意: 寄存器具有明确的类型,如AL,AX 立即数没有明确的类型,MASM负责将立即数零扩展与目的操作数位数相同;但有时MASM不能确定内存操作数的类型,需要用Byte ptr,Word ptr和Dword ptr明确指出操作类型。 MOV dl,05h Mov dx,05h Mov edx,05h Mov eax,ecx Mov al,[bx] Mov ax,[bx] 2.MOVSX带符号扩展传送指令 格 式: MOVSX? DST, SRC 两种格式: MOVSX reg1,reg2 MOVSX reg,mem 传送时把原操作数符号扩展送入目的操作数。 例3.25 MOVSX EAX, CL 把CL寄存器中的8位数,符号扩展为32位,送到EAX。 例3.26 MOVSX EDX, [EDI] 3.MOVZX带零扩展传送指令 格 式: MOVSX? DST, SRC 两种格式: MOVSX reg1,reg2 MOVSX reg,mem MOVSX和?MOVZX区别: MOVSX的源操作数是带符号数,所以做符号扩展; MOVZX的源操作数是无符号数,所以做零扩展 MOVSX和?MOVZX与一般双操作数指令的区别: 一般双操作数指令的源操作数和目的操作数的长度一致; MOVSX和?MOVZX的源操作数长度一定要小于目的操作数长度。 例3.27 MOVZX DX, AL 例3.28 MOVZX EAX,DATA PUSH指令的四种格式 PUSH reg/mem/data/segreg 8086不允许PUSH使用立即数寻址 POP指令格式 POP reg/mem/segreg POP指令不允许使用立即数寻址方式 注意:PUSH SP 该指令入栈的是已修改了的sp的新值。 PUSH ESP 该指令入栈的是执行该指令之前的旧值。 例3.31 PUSH [EAX] 例3.32 PUSH 12H 286以后的机器允许使用。 PUSHA /PUSHAD 所有寄存器进栈指令 PUSHA:16位通用寄存器依次进栈,次序:AX,CX,DX,BX,指令执行前的SP,BP,SI,DI.指令执行后(SP) (SP)-16 PUSHAD:32位通用寄存器依次进栈,次序:EAX,ECX,EDX,EBX,指令执行前的ESP,EBP,E
显示全部
相似文档