ASM 02

转载 2011年01月16日 08:46:00

数据传送指令
数据传送指令分为:通用传送数据,地址传送数据,标志传送数据
DST表示操作数 SRC表示源操作数
1.数据传送数据
MOV,  MOVZX,  MOVSX,  XCHG,  PUSH,  PUSHA,  PUSHAD,  POPA,
POPAD
1-1MOV  目的操作数,源操作数
把源操作数传送到目的操作数
举例:01.MOV AX,BX         :将BX的内容传送到AX中
         02.MOV CL, 80H        :80H→CL
         03.MOV AL, [2000H]    :将EA为2000H,单元的值传送到AL中
1-2MOVSX 寄存器,寄存器/存储器
将源操作数传送到目的操作数中,当源操作数的位数少于目的操作数时,目的操作数的高位用源操作的符号位填补。此指令适用于有符号数的传送与扩展
1-3MOVEZX寄存器/存储器
与MOVSX功能基本相同,唯一区别,当源操作数的位数少于目的操作数位时,目的操作数的高位用0填补
举例01
   MOV DL,86H
   MOVSX  AX,DL    :86H扩展成FF86H送AX;
   MOVSX  ECX,DL   :86H扩展成FFFF FF86H送ECX;
   MOVZX  BX,DL    :86H扩展成0086H送BX;
举例02
   MOV DL,90H;
   MOVSX AX,DL; AX=FF90H
   MOVZX AX,DL; AX=0090H
   MOVSX ESI,DL; ESI=FFFFFF90H
   MOVZX ESI,DL; ESI=00000090H
 1.jpg

01

 2.jpg

02.MOV DL,90H

 3.jpg

03.AX=FF90H

 4.jpg

04.AX=0090H

 5.jpg

05.ESI=FFFFFF90H

 6.jpg

06.ESI=00000090H

1-4XCHG目的操作数,源操作数
把源操作数和目的操作数互换。说明:指令与MOV指令功能上的区别有两点,其一,该指令不允许使用立即数和段寄存器作为操作数;其二,该指令改变源操作数的内容
举例01

XCHG EAX,EBX

 7.jpg

 

 8.jpg

1-5.PUSH
该指令执行后SP的值将减4
  PUSH AL
  PUSH BH
  PUSH 100H
  PUSH EAX
  PUSH EBX
  PUSH DWORD PTR [EAX]
1-6.POP 目的操作数
将栈顶内容弹至目的操作数,先将SP所指单元也即堆栈顶的一个字数传送到目的操作数,并将SP的内容加4
举例
01 PUSH 123456
POP EAX
 9.jpg

 10.jpg

(ESP减4)
 11.jpg

(123456压栈)
 12.jpg

 

(弹出到EAX 并ESP恢复)
1-7.PUSHAD
将所有8个通用寄存器的内容顺序压入堆栈,8、PUSHAD,将 8 个 32 位通用寄存器全部入栈,入栈顺序 EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI,ESP的内容是执行指令 PUSHAD 之前的内容其中压入栈的ESP是该指令前ESP的值。执行该指令后,ESP值减32
1-8.POPAD
将当前堆栈内容顺序弹出,ESP也恢复原来的32
举例:
01.PUSHAD
   POAD
 13.jpg

01
 14.jpg

02.ESP减32
 15.jpg

02-1.8个寄存器全部入栈
 16.jpg

03.ESP加32
1-9.PUSHA
将 8 个通用寄存器全部进栈,进栈顺序为:AX,CX,DX,BX,SP,BP,SI,DI,然后 SP指针寄存减16,不过 SP入栈的内容是 PUSHA指令执行前的内容。
1-10.POPA
8 个通用寄存器全部出栈,堆栈指针寄存器不是堆栈中弹出的内容,而是加 16而得到的,虽然这样得到的值和从堆栈中弹出来的内容一样
2.地址传送指令LEA, LDS, LES, LFS, LGS, LSS
2-1.LEA(Load effective address)
有效地址送寄存器
格式:LEA REG,SRC
执行的操作:(REG)← SRC
举例:
01.  mov eax,111111
mov ecx,111111
lea ebx,[eax+ecx]
 17.jpg

01
 18.jpg

02.EAX,111111
 19.jpg

03.ECX,111111
 20.jpg

04.LEA传送EAX+ECX到EBX
2-2.LDS(Load DS with Pointer)
指针送寄存器和DS指令
格式:LDS REG,SRC
执行的操作:(REG)← (SRC)
        (DS)  ←(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中。该指令常指定SI寄存器
2-3.LES  同 LDS,不过段寄存器是ES。
2-4.LFS  同 LDS,不过段寄存器是FS。
2-5.LGS  同 LDS,不过段寄存器是 GS。
2-6.LSS  同 LDS,不过段寄存器是SS。
3.位置传送指令
 21.jpg

3-1.LASH
将标志寄存器低8位送到AH包括SF,ZF,ZF,PF,CF。
3-2.SHAF
将(AH)送标志寄存器第8位(与LASH相反)
3-3.PUSHF
将标志寄存器的 EFLAGS低 16位内容入栈。与PUSH功能相似,特殊地方在于,压入堆栈的是标志寄存器的内容
3-4.PUSHFD
将标志寄存器EFLAGS的内容入栈
3-5.POPF
将栈顶的一个字弹出,并将它送到标志寄存器EFLAGS的低 16 位.与POP功能相似,特殊地方在于,淡出的堆栈内容是送到标志寄存器
3-6.POPFD
将栈顶的两个字弹出,并将它送到标志寄存器EFLAGS

相关文章推荐

asm.jar jar包

  • 2017-08-17 08:56
  • 26KB
  • 下载

【Oracle RAC+DG实验】Oracle RAC+ASM+DataGuard配置实验记录+常见问题

【Oracle RAC+DG实验】Oracle RAC+ASM+DataGuard配置实验记录+常见问题 1、环境规划: ---RAC环境介绍(primary database)        ...

ics的lab5,asm lab

  • 2016-01-12 20:10
  • 29KB
  • 下载

JUnit报错nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to...

1) 环境: java Spring MVC        使用JUnit执行单元测试的脚本 2)执行报错 org.springframework.beans.factory.BeanD...
  • kuluzs
  • kuluzs
  • 2016-06-06 17:49
  • 2543

Display.asm

  • 2014-09-06 14:35
  • 54KB
  • 下载

gdb for asm

  • 2014-07-26 21:54
  • 31KB
  • 下载

rhel 6.4 + udev + 11.2.0.3 + asm 单点安装

第一块磁盘的大小为50G,安装RHEL6.4 及 GI,Oracle Software。 第二块磁盘的大小为40G,使用udev配置成asm的磁盘。 安装OS结束后,执行下面的步骤 cd /m...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)