- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(接口)第7讲 汇编语言程序格式和基本结构
第6讲
汇编语言程序格式及基本结构;3.5汇编语言程序格式
3.5.1 项目5:把字符串显示到屏幕上
3.5.2 知识讲解
3.6子程序结构
3.6.1 项目6:十进制到十六进制的转换
3.6.2 知识讲解;3.5汇编语言程序格式
3.5.1项目5:把字符串显示到屏幕上
1.项目要求与目的
(1)项目要求:编写程序实现把附加段的字符串hello world!显示到屏幕上。
(2)项目目的:学习汇编的上机调试和汇编语言程序格式以及程序设计方法。
2.项目程序设计
(1)程序流程图
设计思想一:运用DOS系统功能调用(INT 21H)的9号功能。DOS系统功能调用的9号功能是显示字符串,它调用的参数DS:DX=串地址,且字符串以‘$’结束。本程序流程图如图3-40(a)所示。
设计思想二:运用DOS系统功能调用(INT 21H)的2号功能。DOS系统功能调用的2号功能是显示输出(显示字符),它调用的参数DL=输出字符。用于字符串是字符序列组成,我们可以用循环的方式连续输出字符串的每个字符,达到输出字符串的目的。本程序流程图如图3-40(b)所示。;(2)程序清单
方案一:程序清单如下所示。;方案二:程序清单如下所示。; 两种方案的对比,方案一简单、实用于字符串的输出,字符串以$结尾。方案二稍微难些,但输出字符灵活、方便,实用性好。
(3)调试过程
汇编语言程序的建立、汇编、连接、运行和调试步骤请参照图3-43所示,以及项目1调试步骤。前面的四个项目程序,直接运行时,是看不到结果的,由于它们的结果并没有输出到显示器,所以看不到,通过调试,只能看到结果以及每条指令的执行动作。而这个项目程序,直接运行连接后的可执行(.exe)文件,可以在显示器上看到输出结果。本程序请同学们自己去调试,由于篇幅有限,这里不再叙述。;3.5.2 知识讲解
1.概述
本节从汇编语言和汇编程序出发:主要介绍汇编语言和汇编程序的基本概念,汇编程序的开发过程;汇编语言源程序的书写规则和语句格式;伪指令语句的格式、功能及应用;汇编语言源程序的建立、汇编、连接、调试及运行。
2.汇编程序开发过程
汇编语言是一种面向CPU指令系统的程序设计语言,它采用指令系统的助记符来表示操作码和操作数,用符号地址表示操作数地址,因此易记、易读、易修改,给编程带来很大方便。一般情况下,一个助记符表示一条机器指令,所以汇编语言也是面向机器的语言,实际上,由汇编语言编写的汇编语言源程序就是机器语言的符号表示,汇编语言源程序与其经过汇编产生的目标代码程序之间有明显的一一对应关系。
汇编语言源程序输入计算机后不能直接被计算机识别和执行,必须借助一种系统通用软件(汇编程序的翻译),变成机器语言程序(目标程序)才能被执行,这个翻译的过程称为汇编,完成翻译任务的程序称为汇编程序,如图3-41所示表示了汇编语言程序的建立及汇编过程。;因此,计算机上运行汇编语言程序的步骤是:
第1步:用文本编辑器建立ASM源文件。
第2步:用汇编程序(MASM)把ASM文件转换成OBJ文件。
第3步:用连接程序(LINK)把OBJ文件转换成EXE文件。
第4步:用DOS命令直接键入文件名就可执行该程序。
目前常用的汇编程序有Microsoft公司的宏汇编程序MASM(Macro Assembler)和Borland公司的TASM(Turbo Assembler)两种。本书采用MASM6.11版本来说明汇编程序所提供的伪操作和操作符。
汇编程序的主要功能是:
●检查源程序。
●测出源程序中的语法错误,并给出出错信息。
●产生源程序的目标程序,并可给出列表文件。
●展开宏指令。;2.汇编语言程序书写格式
汇编语言源程序的结构采用分段结构形式,一个汇编语言源程序时由若干个逻辑段组成,每个逻辑段由SEGMENT语句开始,由ENDS语句结束。整个源程序以END语句结束。通常,一个汇编语言源程序一般应该由3个逻辑段组成,即数据段、堆栈段和代码段。
作为汇编源程序主模块,以下几部分不可缺少:
●必须使用ASSUME伪指令告诉汇编程序,哪一段和哪一个段寄存器对应,即某一段地址应该放入哪一个段寄存器。这样对源程序模块进行汇编时,才能确定段中各项的偏移量。
●DOS的装入程序在装入执行时,将把CS初始化为代码段地址,把SS初始化为堆栈段地址,因此在源程序中不需要在对他们进行初始化。对数据段初始化语句如下:
MOV AX,DATA(数据段段名)
MOV DS,AX
●在DOS环境下,通常采用DOS的4CH号中断功能调用使汇编语言返回DOS,即采用如下两条指令:
MOV AH,4CH
INT 21H
文档评论(0)