win10 下搭建汇编语言环境及hello world程序

栏目: 编程语言 · 发布时间: 6年前

内容简介:这学期汇编已经学了一大半了,可到现在为止只会一堆寄存器的名字,指令和各种寻址方式,这个语言到底是什么基本毫无概念。上次潘老师推荐了清华大学出版社王爽编的《汇编语言》这本书,在第一章就开始用汇编指令编程,内容讲得非常详细完善,解决了很多学习上的困惑。网上直接搜索下载Debug,解压后如下

前言

这学期汇编已经学了一大半了,可到现在为止只会一堆寄存器的名字,指令和各种寻址方式,这个语言到底是什么基本毫无概念。上次潘老师推荐了清华大学出版社王爽编的《汇编语言》这本书,在第一章就开始用汇编指令编程,内容讲得非常详细完善,解决了很多学习上的困惑。

一、准备环境

1. 准备Debug

网上直接搜索下载Debug,解压后如下

win10 下搭建汇编语言环境及hello world程序

在命令行运行DEBUG.EXE会提示如下信息:

win10 下搭建汇编语言环境及hello world程序

原因:win7以上64位系统是不能通过命令行进入debug的,但是可以通过虚拟机或者dosBox来解决这个问题。

2. 准备DOSBox

win10 下搭建汇编语言环境及hello world程序

DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的移植到其他的平台。目前,DOSBox 已经支持在 Windows、 Linux 、Mac OS X、BeOS 、palmOS、Android 、webOS、os/2等系统中运行。

吐个槽:这个软件最初的作用并不是为了汇编语言的学习,而是为了玩以前dos环境下的各种游戏,甚至现在还有人基于dosBox开发此类游戏

下载安装打开后界面如下:

win10 下搭建汇编语言环境及hello world程序

每次开始都需要挂载一下磁盘,我的Debug.exe在E://software/Debug下,则将我的计算机的E盘挂载到dosBox的C盘

win10 下搭建汇编语言环境及hello world程序

mount c E:\

然后进入dosBox的c盘,即我的计算机的E盘下的Debug文件夹,运行Debug.exe

win10 下搭建汇编语言环境及hello world程序

c:
.\SOFTWA~1\DEBUG\DEBUG.EXE

此时已经进入debug程序,使用r指令查看cup寄存器内容

win10 下搭建汇编语言环境及hello world程序

二、hello word

1、准备一份helloWorld程序源代码

来源: 汇编语言下的Hello world

assume cs:code,ds:datas  

datas segment  
str db 'helloWorld!','$'    
datas ends  
  
code segment  
    mov ax,datas  
    mov ds,ax  
    lea dx,str  ; 获取str的偏移地址  
    mov ah,9 ; 调用9号功能输出字符串  
    int 21h  
  
    mov ah,4ch  
    int 21h  
code ends  
end

将源码粘贴到记事本中保存,后缀改为ASM,存放路径我为了方便放在了Debug文件下

win10 下搭建汇编语言环境及hello world程序

2. 编译

还是在Debug文件下,运行masm.exe

win10 下搭建汇编语言环境及hello world程序

执行完以后会生成一个TEST.OBJ文件

win10 下搭建汇编语言环境及hello world程序

  • source filename:源文件的路径与名称,如果是在本目录下,直接输入文件名
  • Object fileName: 目标文件的路径与名称,默认直接enter

剩下source listening(列表文件)和Cross-reference(交叉引用文件)是从源文件编译为目标文件过程中产生的中间结果,可以直接enter不生成。

上述过程的示意图如下:

win10 下搭建汇编语言环境及hello world程序

也可以使用更为简洁的形式编译,效果同上:

win10 下搭建汇编语言环境及hello world程序

masm test;

3. 连接

操作与上面类似,执行LINK.EXE程序

win10 下搭建汇编语言环境及hello world程序

  • Object Modules:输入上一步生成的目标文件(.obj)
  • Run File: 可执行文件,连接后生成的exe文件,默认enter
  • List File: 映像文件,是连接过程中将目标文件连接为可执行文件过程中产生的中间文件,同样地,直接enter忽略
  • Libraries: 库文件,如果一个程序调用了某一个库的子程序,就需要在连接的时候,将这个库文件与目标文件连接在一起,生成可执行文件,但是我准备的这段程序没有调用任何子程序,所以直接enter忽略。

连接结束后输出的最后一行 Link: warning L4021: no stack sement, 没有栈段 ,可以不用理会。

上述过程示意图:

win10 下搭建汇编语言环境及hello world程序

简化的连接:

win10 下搭建汇编语言环境及hello world程序

link test;

4. 执行exe

还是在debug目录下,使用dos执行test.exe文件

win10 下搭建汇编语言环境及hello world程序

即可看到 helloWorld!

三、 错误总结

  1. unable to open file: XX

    win10 下搭建汇编语言环境及hello world程序

    可能原因:

    masm C:\STUDY\TEST
    文件名长度最长为8
    
  2. server Errors

    win10 下搭建汇编语言环境及hello world程序

    可能原因:源文件存在语法错误,如上,源文件中使用了未定义的data

总结

  1. 通过这次学习,对编译-连接-运行,源文件,目标文件,可执行文件这些以前模糊的概念有了比较清晰的认识。
  2. 不管学什么语言,如果不上手跑一段代码,干看书,根本学不会。
  3. 选择一本合适的书学习太重要了,有时候学不会一门课程,书占了很大因素。

以上所述就是小编给大家介绍的《win10 下搭建汇编语言环境及hello world程序》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Open Data Structures

Open Data Structures

Pat Morin / AU Press / 2013-6 / USD 29.66

Offered as an introduction to the field of data structures and algorithms, Open Data Structures covers the implementation and analysis of data structures for sequences (lists), queues, priority queues......一起来看看 《Open Data Structures》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具