由于最近在学习汇编,用的软件是一款叫“Masm for Windows集成开发环境”,但是发现该软件的资料比较少,对于我们这样刚刚学习汇编的同学,我查找了很多资料,下面主要是介绍该工具及2个汇编的基本程序。
一.软件的使用
下面是阅读完四川大学的课件后几张介绍该软件运行的基本方法:
1.进入Masm forWindows集成实验环境
2.编写程序,该代码是该软件自带的简单入门实例11个中的第一个,后面将详细介绍该代码
3.保存汇编程序.编写完程序必须要保存后才能运行
4.运行程序
5.调试程序
6.我们老师上课教授的用DosBox的Debug调试方法,也可以用该软件实现
二.“Helloword”程序讲解
1.SEGMENT:表示段,段定义伪指令。汇编中有数据段、代码段、堆栈段以及附加段
格式为: 段名 SEGMENT [定位类型][组合类型][类别名]
段名 ENDS
功能:把程序分段,实现存储器的分段管理
该程序由DATAS数据段和CODES的代码段两部分组成
2.STRING DB 13,10,‘Hello World!’,13,10,’$’
13和10分别表示回车符和换行符的ASCII码,执行结果是回车换行
’$’是结束标志,否则不加’$’会出现乱码。
这句话相当于C的(char*)STRING=”\nHello World!\n”;
3.INT 21H是DOS中断功能调用的中断号;MOV AH,4CH功能是让你退出程序
其中:MOV AH,4CH
INT 21H是程序结束时使用的模板,使用AH来选择功能,其中4CH号功能是退出程序的意思。这个中断告诉程序执行完毕后返回DOS。
4.MOV AH,9中9是打印字符串的命令号(09H对应的是显示字符串)
注意:课堂与许多教材中的第一个汇编实例:“123+456=sum”的例子,都是没有输出语句的,必须使用debug调试来显示程序的结果。
5. MOV AX , DATAS
MOV DS , AX
是将数据放入DS中
6. LEA DX , STRING ;字符串偏移起始DX
LEA :Loadeffective address
下面CSDN的博客也给出了这个例子的详细解释及代码:(转载)
http://blog.csdn.net/caiyunfreedom/article/details/6557847
该作者还注释了一个Masm for Windows自带程序两个数求和的实例,个人觉得对大家初步学习汇编知识很有帮助的程序:(转载)http://blog.csdn.net/caiyunfreedom/article/details/6557924
三.该软件的一个bug
在使用该软件“Masm for Windows集成实验环境2012”软件时总是遇到一个“运行时错误‘70’”,并且直接导致程序退出。
如下图新建一个程序,在第一行“STSGSEGMENT STACK ‘S’”处敲击键盘回车就会出现该提示。这个很让我纠结,网上查了一些都是建议使用DosBox和Masm5.0来进行汇编实验的,也不知道大家知不知道什么原因。
最后,这是作者第一次发表博客,希望大家学习,有不好的地方希望大家原谅.希望后面还写写“123+456=sum”这个实例及详细的debug调试,和DosBox编写汇编程序的东西。