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

前言

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

1、准备环境

1. 准备Debug

网上直接搜索下载Debug,解压后以下编程

clipboard.png

在命令行运行DEBUG.EXE会提示以下信息:学习

clipboard.png
缘由:win7以上64位系统是不能经过命令行进入debug的,可是能够经过虚拟机或者dosBox来解决这个问题。spa

2. 准备DOSBox

clipboard.png

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

吐个槽:这个软件最初的做用并非为了汇编语言的学习,而是为了玩之前dos环境下的各类游戏,甚至如今还有人基于dosBox开发此类游戏命令行

下载安装打开后界面以下:debug

clipboard.png

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

clipboard.png

mount c E:\

而后进入dosBox的c盘,即个人计算机的E盘下的Debug文件夹,运行Debug.exeserver

clipboard.png

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

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

clipboard.png

2、hello word

一、准备一份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文件下

clipboard.png

2. 编译

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

clipboard.png
执行完之后会生成一个TEST.OBJ文件

clipboard.png

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

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

上述过程的示意图以下:

clipboard.png

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

clipboard.png

masm test;

3. 链接

操做与上面相似,执行LINK.EXE程序

clipboard.png

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

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

上述过程示意图:

clipboard.png

简化的链接:

clipboard.png

link test;

4. 执行exe

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

clipboard.png
便可看到 helloWorld!

3、 错误总结

  1. unable to open file: XX
    clipboard.png
    可能缘由:

    • 文件名或路径名不对,例如源文件在c盘study下,则执行masm C:\STUDY\TEST
    • dos环境下文件名长度最长为8,将源文件名字改为长度为8之内
    • 源文件后缀为ASM可省略后缀,当后缀为其余的则须要补全名字
  2. server Errors

    clipboard.png

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

总结

  1. 经过此次学习,对编译-链接-运行,源文件,目标文件,可执行文件这些之前模糊的概念有了比较清晰的认识。
  2. 无论学什么语言,若是不上手跑一段代码,干看书,根本学不会。
  3. 选择一本合适的书学习过重要了,有时候学不会一门课程,书占了很大因素。
相关文章
相关标签/搜索