x86汇编语言(二)

来源:互联网 发布:p2p摄像头软件下载 编辑:程序博客网 时间:2024/05/16 12:38

数据传送指令

MOV指令

MOV基本格式:

MOV dst,src

左边是目的操作数,右边是源操作数,该指令有以下限制:

两个操作数必须大小一致;

两个操作数不能同时为内存操作数;

指令寄存器不能作为目的操作数;

MOV的标准格式:

MOV reg,reg

MOV mem,reg

MOV reg,mem

MOV mem,imm

MOV reg,imm

实现内存到内存的数据传送需要借助中间寄存器。

整数的全零/符号扩展

MOVZX指令(进行全零扩展并传送),该指令只用于无符号数,MOVSX指令(进行符号扩展并传送),该指令只用于有符号数。

以上两条指令的目的操作数必须位寄存器且源操作数的长度必须短于目的操作数且源操作数不能为常数。

.data

byteval byte 10001111b

.code

movsx ax,byteval

执行以上代码后,ax的值为1111111110001111b

LAHF与SAHF

LAHF将EFLAGS寄存器的低字节复制到AH,SAFH将AH复制到EFLAGS的低字节

XCHG指令

交换两个操作数,有三种形式:

XCHG reg,reg

XCHG mem,reg

XCHG reg,mem

.386.model flat,stdcall.stack 4096ExitProcess PROTO,dwExitCode:DWORD.dataval1 word 1000hval2 word 2000harrayB byte 10h,20h,30h,40h,50harrayW word 100h,200h,300harrayD dword 10000h,20000h,30000h.codemain PROCmov bx,0a69bhmovzx eax,bxmovzx edx,blmovzx cx,blmov bx,0a69bhmovsx eax,bxmovsx edx,blmov bl,7bhmovsx cx,blmov ax,val1xchg ax,val2mov val1,axmov al,arrayBmov al,[arrayB+1]mov al,arrayb+2mov ax,arrayWmov ax,arrayW+2mov eax,arrayD+4INVOKE EXITPROCESS,0main ENDPEND main