内容简介:这学期汇编已经学了一大半了,可到现在为止只会一堆寄存器的名字,指令和各种寻址方式,这个语言到底是什么基本毫无概念。上次潘老师推荐了清华大学出版社王爽编的《汇编语言》这本书,在第一章就开始用汇编指令编程,内容讲得非常详细完善,解决了很多学习上的困惑。网上直接搜索下载Debug,解压后如下
前言
这学期汇编已经学了一大半了,可到现在为止只会一堆寄存器的名字,指令和各种寻址方式,这个语言到底是什么基本毫无概念。上次潘老师推荐了清华大学出版社王爽编的《汇编语言》这本书,在第一章就开始用汇编指令编程,内容讲得非常详细完善,解决了很多学习上的困惑。
一、准备环境
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
可能原因:
masm C:\STUDY\TEST 文件名长度最长为8
-
server Errors
可能原因:源文件存在语法错误,如上,源文件中使用了未定义的data
总结
- 通过这次学习,对编译-连接-运行,源文件,目标文件,可执行文件这些以前模糊的概念有了比较清晰的认识。
- 不管学什么语言,如果不上手跑一段代码,干看书,根本学不会。
- 选择一本合适的书学习太重要了,有时候学不会一门课程,书占了很大因素。
以上所述就是小编给大家介绍的《win10 下搭建汇编语言环境及hello world程序》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 搭建一个汇编开发学习用的容器
- iOS汇编入门教程(一)ARM64汇编基础
- iOS 汇编入门教程(一):ARM64 汇编基础
- iOS汇编入门教程(三)汇编中的 Section 与数据存取
- iOS汇编入门教程(二)在Xcode工程中嵌入汇编代码
- 汇编语言8086笔记
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
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》 这本书的介绍吧!