zoukankan      html  css  js  c++  java
  • 汇编语言基础教程寻址方式

    1立即寻址

    在指令中使用的操作数为常数

    如:

    mov eax,190;与mov eax,00BEH相同,低字节在前s

    mov eax,0FFFFFFFFH;与 mov eax,-1相同

    eax可以存放一个双字

    2寄存器寻址

    操作数已经在CPU的寄存器中

    如:

    mov EAX,EBX

    3直接寻址

    操作数为一个已经定义好的变量

    如:

    mov eax,dvar;dvar为一个双字变量

    mov dvar,eax

    在翻译成及其指令后,以上指令就变成了类似以下形式

    mov eax,[00404011];地址外面加一个方括号,表示取这个地址的内容

    4寄存器间接寻址

    操作数的地址放在寄存器中

    如:

    mov ESI,00404011H

    mov EAX,[ESI]

    32位CPU中EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP能用作间接寻址

    5寄存器相对寻址

    如:

    mov ESI,00404011H

    mov EAX,[ESI+4]

    6基址变址寻址

    如:

    mov ESI,00404011H

    mov EBX,4

    mov EAX,[ESI+EBX]

    7基址变址相对寻址

    如:

    mov ESI,00404011H

    mov EBX,4

    mov EAX,[ESI+EBX+4]

    8基址变址比例相对寻址

    如:

    mov ESI,00404011H

    mov EBX,4

    mov EAX,[ESI+EBX*2+4]

    9*段超越

    内存操作数的地址由两个部分指定:段和有效地址。

    寻址方式中确定操作数的有效地址后,还要依靠段寄存器一起来确定操作数的内存地址

    默认情况下内存操作指令在DS段中

    如果使用了ESP和EBP来寻址,那么使用的是SS段寄存器

    如:

    mov eax,[ebp+8];内存操作数在SS段中

    使用段超越前缀可以改变寻址方式中默认使用的段寄存器

    如:

    mov eax,cs:[ESP-4]

    windows 32编程环境下CS,DS,ES,SS在内存中指向同一个段,其大小为4G

    所以一般用不到段超越的操作

  • 相关阅读:
    SaltStack概述及安装
    Zabbix高可用
    Zabbix数据库表结构
    asp select count(*) 用 open还是excute
    asp+jquery+ajax,asp后台程序执行不正常
    aspupload ,在winows server 2008 下无法使用
    jquery 如何使用innerHTML
    thinkphp的select和find的区别(转)
    centos安装PHP-pdo支持pdo
    Excel 2007 打开 UTF-8 编码 CSV 文件的乱码BUG
  • 原文地址:https://www.cnblogs.com/liulun/p/1651024.html
Copyright © 2011-2022 走看看