汇编中的通用数据传送类指令

基于IA-32处理器和32位汇编语言

1      通用数据传送指令

数据传送MOV指令:

形式:MOV   目的操作数,源操作数

数据交换XCHG指令:

形式:XCHG  操作数,操作数

其中,XCHG EAX,EAX等同于NOP,也就是空操作指令。

2      堆栈操作指令

SS段寄存器指向段基地址,ESP寄存器指向栈顶地址。

堆栈的数据单位是字或双字。

进栈指令PUSH

形式:PUSH  SRC   

分两步:先将ESP减4(2),再把数据存入堆栈中。

出栈指令POP

形式:POP    DEST

分两步:先将堆栈中的数据取出给DEST,再将ESP加4(2)。

3      换码指令

XLAT。在执行之前,准备工作是将EBX指向缓冲区的首地址,并给AL赋值为距离缓冲区开始的位移量。接下来执行,将EBX+AL所指的地址中的内容给AL,实现换码。这是默认缓冲区在DS中,如果有段超越,则要说明变量名和段超越指令前缀。

4      标志传送指令

CLC:将CF置0。

STC:将CF置1。

CMC:将CF反转。

CLD:将DF置0。

STD:将DF置1。

CLI:将IF置0。

STI:将IF置1。

5      地址传送指令

LEA。形式:LEA   R16/R32  变量

它将变量的偏移地址给16位或32位寄存器。

注意:OFFSET也是取 地址的,并且它在编译阶段就计算了地址,而LEA在执行时才计算地址。因此OFFSET的效率高些。但是在编译阶段如果算不出 地址,就只能使用LEA指令了。

以上就是我对于数据传送类指令的认识。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值