zoukankan      html  css  js  c++  java
  • 汇编环境搭建在Linux下

    汇编环境搭建终端

    安装 dosbox
    sudo apt-get install dosbox
    下载
    必备文件调试链接 debug link masm 的 exe 文件
    在硬盘里创建 masm 目录,将上面三个文件放到 masm 目录下
    然后终端输入的 DOSBox
    运行后
    创建模拟 C 盘目录
    mount c / home /~ / masm
    再进入模拟目录下
    c:此时
    就可以开始汇编编程了^_^

    用 vim 编辑 hello world 保存成 hello.asm

    masm hello.asm // 此处按回车 3 下

    link hello // 同理

    运行 hello // 此处可能最后会不出结果 需要退出 dosbox 重新进入一下就可以了

    这里贴出 hello world 的汇编代码

      DATA    SEGMENT
          STRING  DB   'Hello World!', '$'
      DATA    ENDS
    
      STACK1  SEGMENT PARA    STACK
          DW  20H DUP  (0)
      STACK1  ENDS
      CODE   SEGMENT
      ASSUME  CS:CODE, DS:DATA, SS:STACK1
      BEGIN:  MOV     AX, DATA
          MOV DS, AX
          LEA     DX, STRING
          MOV     AH, 9
          INT     21H
          MOV     AH, 4CH
          INT 21H
      CODE   ENDS
    
          END BEGIN
    
    

    linux 下生成配置文件

    参见链接

    配置表 在这分享下

    调了分辨率 和 启动 自动执行代码 省去了 输入mount xxx;c:

    #这个在24行处  分辨率可自行调整
    fullscreen=false
    fulldouble=false
    fullresolution=original
    windowresolution=1024x640
    output=opengl
    autolock=true
    sensitivity=100
    waitonerror=true
    priority=higher,normal
    mapperfile=mapper-0.74.map
    usescancodes=true
    
    
    #这个在文件底部
    [autoexec]
    # Lines in this section will be run at startup.
    # You can put your MOUNT lines here.
    mount c: /home/lambert/masm
    c:
    
    

    执行一个汇编源程序的步骤在 dosbox 下 (详述)

    在 dosbox 下 输入 masm 可以显示出版本

    • masm

      编译文件 masm xx.asm
      第一个回车 确定输出目标文件名称
      第二个回车 忽略列表文件生成
      第三个回车 忽略交叉引用文件生成

    在 dosbox 下 输入 link 可以显示出版本

    • link

      连接 目标文件 从而得到可执行文件
      连接文件 link xx
      第一个回车 输入可执行程序的名称
      第二个回车 忽略映像文件生成
      第三个回车 输入调用的子程序 忽略库文件的连接 忽略按回车
      最后会报一个错LINK : warning L4021:no stack segment // 没有栈段 这里我们不理会这个错误

    说完复杂的 方法 现在换简单的

    masm xx; // 在结尾加上分行,按enter后,编译器就对xx文件进行编译,在当前目录生成目标文件xx.obj,并在编译的过程中自动忽略中间文件的生成

    link xx; // 同上

    有什么不同见解可以在评论区共同讨论
  • 相关阅读:
    tree命令详解
    rm 命令详解
    rename命令详解
    pwd命令详解
    mv命令详解
    mkdir命令详情
    find命令详解
    dockerfile中配置时区
    docker导入导出
    docker上传私有仓库报错
  • 原文地址:https://www.cnblogs.com/lambertlt/p/12663604.html
Copyright © 2011-2022 走看看