博客
关于我
对汇编中一些基础知识的理解
阅读量:661 次
发布时间:2019-03-16

本文共 1110 字,大约阅读时间需要 3 分钟。

IA-32处理器和32位汇编语言入门

指令格式

IA-32处理器使用可变长度指令格式,这使得指令代码结构极为复杂。一般指令格式如下:

  • 指令前缀:0-4字节,由操作前缀和操作码组成。
  • 操作码:确定具体的操作类型。
  • ModR/M或SIB:指示操作数的位置。
  • 位移量或立即数:根据指令类型,可能是位移操作或直接的立即数值。

指令前缀主要分为四组,根据具体指令类型有所不同。ModR/M或SIB用于指定操作数的位置,其类型和作用取决于具体的指令。

汇编语句格式

汇编语句分为两种:执行性语句说明性语句

  • 执行性语句格式
  • 标号: 硬指令助记符 操作数; 注释
    - 标号:符合作高级语言的标示符。- 硬指令助记符:实际要执行的机器指令。- 操作数:常数或标号的位置。- 注释:必须前置,用于说明。
    1. 说明性语句格式
    2. 名字: 伪指令助记符 参数; 注释
      - 名称:符合作高级语言的变量或函数名。- 伪指令助记符:描述性语句的类型。- 参数:常数或表达式。- 注释:必须前置,用于说明。

      需要注意的是,标号和名字必须符合高级语言的命名规则,硬指令和伪指令均需指定详细信息。

      源程序框架

      IA-32汇编程序的结构由代码段、数据段和堆栈段组成。建议将执行性语句放入代码段。常见格式如下:

      include inc.32  ; 包含伪指令文件.data          ; 数据段开始  var1 db 0    ; 数据定义.dataend.code  Start:    ; 代码段实现  exit 0end Start
      • include用于包含伪指令文件。
      • .data.code是标准的汇编段标识符。
      • startend用于定义程序入口和结尾。

      总之,IA-32汇编程序的组织便于使用内存和逻辑分割,同时需注意符号规则和关键字正确使用。

      开发流程

    3. 编辑:使用汇编编辑软件(如MASM6.x)编辑源文件,保存为.asm格式。

    4. 编译:使用ML.EXE进行汇编,命令如:

    5. bin\ml /c/coff eg0201.asmbin\ml -c-coff eg0201.asm
      1. 连接:生成可执行文件,使用bin\link32工具,命令如下:
      2. bin\link32 /console eg0201.obj
        - 若需图形窗口可执行文件,可改为`windows`。
        1. 执行:在命令提示符输入.exe文件名称即可运行。

        2. 扩展输出:使用列表文件生成说明,命令如:

        3. bin\ml /c/coff /Fl eg0201.asm
          - 生成`.lst`文件,包含源代码解释和标注。

          通过对这些工具和命令的掌握,可以完成功能开发IA-32程序,形成完整的开发流程。

    转载地址:http://irjqz.baihongyu.com/

    你可能感兴趣的文章
    Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
    查看>>
    Spring 和 DI 依赖注入
    查看>>
    中序线索二叉树的遍历
    查看>>
    文字策略游戏 android studio(学习intent,textview,等等)
    查看>>
    laravel server error 服务器内部错误
    查看>>
    17_注册Github账号
    查看>>
    Linux驱动实现GPIO模拟I2C读写操作
    查看>>
    iJ配置Maven环境详解
    查看>>
    仿QQ登陆界面
    查看>>
    什么题目的暂时还没想好
    查看>>
    N皇后问题解法(递归+回朔)
    查看>>
    面试题 08.01. 三步问题
    查看>>
    剑指 Offer 11. 旋转数组的最小数字
    查看>>
    word文档注入(追踪word文档)未完
    查看>>
    作为我的第一篇csdn博客吧
    查看>>
    ajax异步提交失败
    查看>>
    打开cmd,输入java,java -version没有问题,但是javac提示不是内部命令?
    查看>>
    一道简单的访问越界、栈溢出pwn解题记录
    查看>>
    ubuntu18.04.4版本安装docker教程
    查看>>
    Stream 某些API
    查看>>