通常对于一门语言的学习,一般都是以“Hello,World!”开始的。但对于汇编语言的学习,输出这句话并不容易,首先得了解寄存器等硬件知识。
汇编语言要得以运行,首先要讲源文件编译链接成可执行文件,才能运行。这里需要编译器和连接器(资源我分享到了百度云:链接:https://pan.baidu.com/s/1dE4mb3F,密码:ywfp)。因为我用的是32位Win7,因此我可以不用DosBox。
一、第一个源文件
代码如下
assume cs:codeseg
codeseg segment
mov ax,2
add ax,ax
add ax,ax mov ax,4c00H
int 21H
codeseg ends
end
从这个汇编语言程序是用来计算23的。
首先看到assume(伪)指令,英文意思是“假设”之意,后面紧跟cs:codeseg,这里其实是定义了一个代码段名,对于一个程序必须得有一个段而且是代码段,对于数据段和栈段可以不必有,若缺少代码段,数据段和栈又怎能构成一个程序呢。codeseg称为标号,指代一个地址,这个段的名称最终会被编译链接称为一个地址。对于codeseg
segment……codeseg
ends这一对伪指令定义了一个段,segment表示段开始,ends表示段结束。end伪指令意味着程序的真正结束,每个程序必须有,否则将无法知道程序什么时候结束。
段内部分是真正的汇编指令,最后面两句mov ax,4c00H和int 21H是程序返回,这是固定的。DOS系统是一个单任务操作系统,对于两个程序P1,P2(假设P1正在执行),如果要执行P2,必须由P1将P2加载到内存,将CPU授权给P2,P2才可执行,此时P1将挂起。当P2结束后,应将CPU还给P1,让P1继续执行,若只有一条指令,则交给系统,int指令不是c或其他语言中的整形类型,而是中断指令。因此这两句必不可少。
二、程序编辑、编译、连接&运行
(1)编辑
对于编辑器有很多,什么notepad,notepad++,UltraEdit什么的都可以,喜欢用哪个就用哪个。保存为“文件名.asm”的形式。
(2)编译
新建立一个文件夹,我的在F:\masm中,将masm6.15中的debug.exe,masm.exe,link.exe和ml.exe拷贝进去就行。在DosBox下masm6.15自己的不知道为什么不能用,只能用masm5,。当然将源程序也放进去。
编译:使用masm 文件名.asm
编译成功,将会生成一个obj文件,用ue打开之后是一些16进制数,不懂。
(3)连接
连接:使用link 文件名.obj即可,连接后将生成exe文件。
编译时Run File什么的直接回车略过就行,因为这个文件没用什么库啥的,暂且不用管。
连接的作用主要是:
- 当源程序较大时,将源程序分为多个文件来编译,编译完成后再将其一一连接,便于源程序管理。
- 需要用到其他的库文件时
- 对于生成的obj文件还不能直接执行,需连接程序将其处理为可直接运行的文件
(4)运行
直接输入exe文件名运行就可以了,但通常是一闪而过,因为机器足够快。
随机推荐
-
『.NET Core CLI工具文档』(七)dotnet-new
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:dotnet-new 翻译:dotnet-new 名称 dotnet-new -- 创建一个新的 .NET Core 项 ...
-
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory 这是由于项目里面的一些 ...
-
[示例] Firemonkey TGridLayout & TGridPanelLayout 布局
说明:使用 TGridLayout & TGridPanelLayout 来布局 源码下载:[示例]TestGridPanelLayout_布局_20161223.zip 展示:
-
JAVA调用R
JAVA很适合开发应用系统,但是数学建模和计算能力非其所长,如果该系统需要进行大量的统计或者优化的计算,调用R是一种很好的方式.JAVA负责系统的构建,R用来做运算引擎,从而实现应用型和分析性相结合的 ...
-
SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
-
MongoDB学习笔记(一) MongoDB介绍及安装(摘)
MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++开发.Mongo的官方网 ...
-
window7 桌面新建快捷方式方法
点击开始按钮 所有程序 找到某个文件夹点开,找到文件夹里的快捷方式图标,右键--属性-- 复制 目标:上图蓝色内容. 回到桌面,右键--新建--快捷方式--把复制的内容粘贴到 请键入对象的位置-- ...
-
GitLab CI持续集成配置方案
目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...
-
SQL Server 2014新特性:分区索引重建
<single_partition_rebuild_index_option> ::= { SORT_IN_TEMPDB = { ON | OFF } | MAXDOP = m ...
-
关于Oracle表连接
表连接注意left join on与where的区别: select * from dept; select * from emp; select * from emp a right outer j ...