汇编之宏汇编实现“hello world”

分享一下自己的资源。。。

链接:https://pan.baidu.com/s/1z6zdi-szqWLFgzBhnPYXoQ 密码:638v


必备的知识储备

debug.exe只是调试工具,不是汇编工具,不能将a.asm汇编连接生成可执行程序。
debug.exe带有内置的汇编功能,但功能极弱,仅仅只能支持指令的汇编,不支持大多数常用伪指令的汇编。比如,它不支持变量名和语句标号的使用。它只能在进入debug后用a命令逐指令汇编

要将一个a.asm这样的汇编语言源程序汇编成可执行文件,你必须要另外使用汇编和连接程序。常用的汇编连接工具有两种,一种是MASM,另一种是TASM。(上面的链接都有,其中TASM的下载费了我两块大洋呢!!!)

MASM需要至少两个文件:masm.exelink.exe 版本可以用5.0以上的。
TASM需要tasm.exetlink.exe,还有一些辅助文件。版本可以用3.0或5.0 。

网上有一些建议使用TASM,说它最大的优点是它配套的调试程序Turbo Debugger功能比debug强大很多、很多、很多倍,窗口界面,鼠标操作。。。。

强不强,现在初入汇编的我不敢妄言,等都使用过再来做定论!


关于MASM集成开发环境

当然我还下载了一款集成IDE,MASM for windows 2012 ,看着还挺不错的,不过部分功能需要注册才能使用,但是作为初学者,免费的功能全会了应该也就差不多入门了呢!

这里写图片描述

emmm,,,其中我比较看好的是关于它调试的两种工具 工具->选项
这里写图片描述

怎么好了,我也说不上了,直觉。。。


Hello World编写

一门新的语言,依旧还是从我们的hello word开始吧,hello world的重要意义远不止表面!

;完整段的Hello World程序
DATAS  SEGMENT
     STRING  DB  'Hello World!',13,10,'$'
DATAS  ENDS

CODES  SEGMENT
     ASSUME    CS:CODES,DS:DATAS
START:
     MOV  AX,DATAS
     MOV  DS,AX
     LEA  DX,STRING
     MOV  AH,9
     INT  21H

     MOV  AH,4CH
     INT  21H
CODES  ENDS
    END   START

注意了,字符串的名字本来起的是STR,然后死活不通过,突然发现STR是汇编的一个关键字。。。。

1.SEGMENT:表示段,段定义伪指令。

汇编中有数据段、代码段、堆栈段以及附加段
格式为: 段名 SEGMENT [定位类型][组合类型][类别名]
段名 ENDS
功能:把程序分段,实现存储器的分段管理
该程序由DATAS数据段CODES的代码段两部分组成

2.STRING DB 13,10,‘Hello World!’,13,10,’$’

1310分别表示回车符和换行符的ASCII码,执行结果是回车换行
’$’是结束标志,否则不加’$’会出现乱码
这句话相当于C的(char*)STRING=”\nHello World!\n”;

3.INT 21H是DOS中断功能调用的中断号;MOV AH,4CH功能是让你退出程序

其中
MOV AH,4CH
INT 21H

程序结束时使用的模板,使用AH来选择功能,其中4CH号功能是退出程序的意思。这个中断告诉程序执行完毕后返回DOS

更多关于DOS功能号的看<这里>.

4.MOV AH,9中9是打印字符串的命令号(09H对应的是显示字符串)

注意:课堂与许多教材中的第一个汇编实例:“123+456=sum”的例子,都是没有输出语句的,必须使用debug调试来显示程序的结果。

5. 将数据放入DS中
MOV AX , DATAS
MOV DS , AX

把数据段的起始地址装到DS中,DATAS是立即数,所以不能直接放入DS这个段寄存器,需要借助通用寄存器

6.

LEA DX , STRING ;字符串偏移起始DX
LEA :Loadeffective address


执行程序

还是上一节的老办法

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

masm下如何进入调试模式呢?

如果输入td 2.exe,在masm下是不行的,
这里写图片描述

只能debug 2.exe
这里写图片描述

但是如果在tasm环境下,td是可以的!!!

这里写图片描述

这里写图片描述

这里写图片描述

注意操作略有不一样。。。


这一篇暂时先到这里吧,寝室要门禁了,我要飞奔回去了!!!

2018年4月26日23:49:15

猜你喜欢

转载自blog.csdn.net/recclay/article/details/80101571