movsx指令c语言代码,MOVZX、MOVSX、LAHF、SAHF、XCHG指令

MOVZX指令

MOVZX指令将源操作数的内容复制到目的操作数中,并将该值零扩展至16位或32位。该指令仅适用于无符号整数。

Movzx r32,r/m8

Movzx r32,r/m16

Movzx r16,r/m8

mov bx,10001111b

movzx ax,bl # ax = 00000000 10001111b

mov bx,0A69Bh

movzx eax,bx # eax = 0000A69Bh

MOVSX指令

MOVSX指令将源操作数的内容复制到目的操作数中,并将该值符号扩展至16位或32位。该指令仅适用于有符号整数。

Movsx r32,r/m8

Movsx r32,r/m16

Movsx r16,r/m8

mov bx,10001111b

movsx ax,bl # ax = 11111111 10001111b

mov bx,0A69Bh

movsx eax,bx # eax = FFFFA69Bh

LAHF指令

LAHF指令将EFLAGS寄存器的低字节复制到AH寄存器,被复制的标志包括:符号标志(SF),零标志(ZF),辅助进位标志(AF),奇偶标志(PF),进位标志(CF)。

lahf # 状态标志送ah

SAHF指令

SAHF指令复制AH寄存器的值至EFLAGS寄存器的低字节,被复制的标志包括:符号标志(SF),零标志(ZF),辅助进位标志(AF),奇偶标志(PF),进位标志(CF)。

mov ah,saveflags # 保存的标志送ah

sahf # 复制标志至EFLAGS寄存器

XCHG指令

XCHG指令交换两个操作数的内容,不接受立即数操作数。

XCHG reg,reg

XCHG reg,mem

XCHG mem,reg

xchg ax,bx # 16位寄存器交换

xchg ah,al # 8位寄存器交换

xchg var1,bx # 16位内存操作数和16位寄存器交换

xchg eax,ebx # 32位寄存器交换

若要交换两个内存操作数,则要和mov指令结合使用

mov ax,val1

xchg ax,val2

mov val1,ax

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值