前言

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

一、准备环境

1. 准备Debug

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

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

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

2. 准备DOSBox

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

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

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

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

mount c E:\

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

c:

.\SOFTWA~1\DEBUG\DEBUG.EXE

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

二、hello word

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

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文件下

2. 编译

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

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

source filename:源文件的路径与名称,如果是在本目录下,直接输入文件名

Object fileName: 目标文件的路径与名称,默认直接enter

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

上述过程的示意图如下:

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

masm test;

3. 连接

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

Object Modules:输入上一步生成的目标文件(.obj)

Run File: 可执行文件,连接后生成的exe文件,默认enter

List File: 映像文件,是连接过程中将目标文件连接为可执行文件过程中产生的中间文件,同样地,直接enter忽略

Libraries: 库文件,如果一个程序调用了某一个库的子程序,就需要在连接的时候,将这个库文件与目标文件连接在一起,生成可执行文件,但是我准备的这段程序没有调用任何子程序,所以直接enter忽略。

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

上述过程示意图:

简化的连接:

link test;

4. 执行exe

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

即可看到 helloWorld!

三、 错误总结

unable to open file: XX

可能原因:

文件名或路径名不对,例如源文件在c盘study下,则执行masm C:\STUDY\TEST

dos环境下文件名长度最长为8,将源文件名字改成长度为8以内

源文件后缀为ASM可省略后缀,当后缀为其他的则需要补全名字

server Errors

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

总结

通过这次学习,对编译-连接-运行,源文件,目标文件,可执行文件这些以前模糊的概念有了比较清晰的认识。

不管学什么语言,如果不上手跑一段代码,干看书,根本学不会。

选择一本合适的书学习太重要了,有时候学不会一门课程,书占了很大因素。

win10c语言编程环境搭建,win10 下搭建汇编语言环境及hello world程序相关推荐

  1. win10下搭建zipline python3.5量化回测平台环境

    win10下搭建zipline python3.5量化回测平台 1.安装 Anaconda 1.1 下载Anconda 1.2 安装 1.3 Anaconda Prompt 1.4 检查安装 1.5 ...

  2. Win10下搭建旷视YOLOX(新一代anchor-free目标检测网络)并训练自定义CoCo格式数据集

    注意:原始的YOLOX只支持乌班图系统,因此以下所有操作均需要依赖博主自己的安装包.链接:https://pan.baidu.com/s/1CoQa8WjJ89gNfexK59Ewrw 提取码:qhi ...

  3. 基于WSL2和Clion搭建Win下C开发环境

    系列文章目录 一.基于WSL2和Clion搭建Win下C开发环境 二.make.makeFile.CMake.CMakeLists的使用 三.全面.详细.通俗易懂的C语言语法和标准库 文章目录 系列文 ...

  4. 在Win10下搭建web服务器,使用本机IP不能访问,但是使用localhos或127.0.0.1可以正常访问的解决办法...

    最近在在Win10下搭建web服务器,发现通过windows自带的浏览器win10 edge浏览器使用本机IP不能放问,但是使用localhos或127.0.0.1可以正常访问, 后来无意发现,使用w ...

  5. Windows 10下MASM汇编语言环境搭建

    Windows 10下MASM汇编语言环境搭建 另有MASM汇编语言教程: https://download.csdn.net/download/xjzdr/12692694 1.下载插件:DOSBo ...

  6. Win10下Eclipse运行环境的安装

    本文记录Win10下Eclipse运行环境的安装过程. 一.软件下载 软件下载网址:https://www.eclipse.org/downloads/.打开该网址后显示界面如下: 该界面中,点击右面 ...

  7. JAVA——jdk8的下载与安装,win10下配置JDK环境变量

    JAVA--jdk8的下载与安装,win10下配置JDK环境变量 JDK下载和安装 下载JDK 安装JDK JDK环境变量配置(win10下配置JDK8) 配置步骤 检验JDK配置是否成功 JDK下载 ...

  8. Win10下的Python环境配置

    Win10下的Python环境配置 原料 64位Windows10 专业版 安装Python 访问python的官方网站www.python.org,点击download,如图一 选择2.7版本,如图 ...

  9. win10下的cajviewer 安装后 提示应用程序无法正常启动(0xc0000018)

    这里写自定义目录标题 win10下的cajviewer 安装后 提示应用程序无法正常启动(0xc0000018) 一.常规安装 二.解决无法打开的问题 win10下的cajviewer 安装后 提示应 ...

最新文章

  1. 一文搞懂RNN(循环神经网络)
  2. FACEBOOK’S CALIBRA
  3. MySQL INSERT INTO...ON DUPLICATE KEY UPDATE的使用
  4. 《高性能JavaScript》第七章 Ajax
  5. C#数组和集合专题4(Hashtable类)
  6. 【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则
  7. SAP 电商云 Spartacus UI shipping method 切换时的 spinner 显示
  8. 玩转u-boot之【初探环境变量env/bootcmd/bootargs】
  9. 什么MySQL语句在存储过程体中是合法的
  10. 做数据产品经理要学习那些东西?
  11. 安装RHEL 7.5 Server版本(RedHat 7.5 Server) 图文教程
  12. why do we use process keys
  13. 2014年国际IT外包10大事件
  14. python 下载图片到内存卡_python-23:将图片下载到本地
  15. 《JavaScript忍者秘籍》——2.4 测试套件基础知识
  16. android移动应用技术,Android移动开发技术与应用.pdf
  17. 计算机应用有关的论文,关于计算机应用毕业论文范文精选
  18. 解决前端做excel下载的文件打不开
  19. Python实现rosbag转换成video
  20. 敏捷已死:一场程序员们历经20年的失败反叛

热门文章

  1. 原生Javascript实现表格行上下拖拽
  2. 2021-05-08 js数组 截取 查找 拼接 二维数组
  3. java抖音字符视频_抖音流行的字符视频如何实现
  4. 解除安卓车机禁止安装软件_赫兹app下载安装-赫兹交友软件下载v3.5.7 安卓官方版...
  5. AI 如何替换图像,替换元素
  6. 把 umi 的 useModel 抽离到其他项目中使用
  7. ansys用什么cpu_ansys多cpu并行计算设置
  8. 一个刚毕业前端的年度总结
  9. 怎么把visio 2010中的框中的字变成竖排以及如何将visio图插入word
  10. Windows 本地安全策略和本地组策略