资源描述:
《微机原理与接口技术(第二版) 教学课件 作者 毛红旗 刘敏 杨洪亮 第04章 汇编语言程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计本章主要内容4.1汇编语言程序设计概述4.2伪指令4.3汇编语言程序设计基本方法4.4中断调用4.1汇编语言程序设计概述汇编语言(AssemblyLanguage)是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序汇编语言适合用于编写低层、直接控制硬件的程序;加解密、病毒防治等信息安全程序的编程分析汇编语言程序设计的过程是与其他高级语言程序设计大致相同,用汇编语言
2、编写的程序称为汇编语言程序或源程序(SourceProgram)。汇编语言源程序不能直接在计算机上运行,需要将它翻译成机器语言程序(也称目标代码程序,ObjectProgram)。这个翻译过程为汇编。完成汇编任务的程序(软件)称为汇编程序。汇编程序完成以下几个任务:将汇编语言源程序翻译成目标代码程序;按指令要求自动分配存储区(包括程序区、数据区等);自动把源程序中以各种进制表示的数据都转换成二进制形式的数据;计算表达式的值;对汇编语言源程序进行语法检查,并给出语法出错的提示信息。4.1.1汇编语言源程序的结构汇编语言程序由若干个段组成。按照各段
3、功能的不同,分别有代码段、数据段、堆栈段和附加段。其中代码段是必须要定义的。每个段在程序中的顺序没有先后,段的数目也不受限制,但每个段必须有段名。汇编语言源程序格式举例DATASEGMENTMSGDB'HelloWorld!',13,10,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AXMOVAH,9LEADX,MSGINT21HMOVAH,4CH;返回DOSINT21HCODEENDSENDBEGIN汇编源程序框架举例(两个段的)DATASEGMENT;定义
4、数据段……DATAENDSCODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATASTART:;程序执行的起始地址MOVAX,DATAMOVDS,AX;段寄存器DS←数据段段地址……;程序的主体部分MOVAH,4CH;INT21H;结束程序运行并且返回DOSCODEENDSENDSTART;结束汇编汇编源程序框架举例(一个段的)CODESEGMENT;定义代码段ASSUMECS:CODESTART:;程序执行的起始地址……;程序的主体部分MOVAH,4CH;int21h;结束程序运行并且返回DOSCODEENDSENDSTA
5、RT;结束汇编汇编语言源程序的特点采用段式结构汇编源程序通常包含若干个段,上例的程序有数据段和代码段这两个段,DATA、CODE分别为两个段的名字。每一段有明显的起始语句SEGMENT与结束语句ENDS,这些语句称为“段定义”语句。每一段由若干汇编语句构成汇编源程序每一段包含若干汇编语句。汇编语句的主体是汇编指令。一条语句写一行,为了清晰,书写语句时,注意语句的各部分要尽量对齐。汇编语言源程序的特点(续)每个汇编源程序需要一个启动标号汇编语言源程序需要一个启动标号作为程序开始执行时目标代码的入口地址。启动标号可以按照汇编语言的标号命名规则由程序
6、员自己定义。常用的启动标号有START、BEGIN等。加入适当注释,可以提高程序的可读性为了提高程序的可读性,可以在汇编语句后以分号“;”为起始标志,加入注释。汇编语言和操作系统(DOS)的接口计算机一旦启动成功,由DOS掌握CPU的控制权。应用程序只是作为DOS的子程序,应用程序执行完,必须返回DOS。上述程序的第11、12行就是返回DOS的语句。4.1.1汇编语言的语句汇编语言的语句可以分为:指令语句伪指令语句1.指令语句指令语句是可执行语句,汇编后将产生目标代码,CPU根据这些目标代码执行并完成特定操作。每一条指令语句表达了计算机具有的一
7、个基本能力,这种能力在目标程序执行时反映出来。指令语句的格式为:[标号:]指令助记符[操作数][;注释]【例4.2】指令格式示例BEGIN:MOVAX,DATAMOVDS,AX;把数据段的段地址送入DS2.伪指令语句伪指令语句,也称指示性语句,是不可执行语句,汇编后不产生目标代码,它仅仅在汇编过程中告诉汇编程序如何汇编源程序。伪指令语句可以告诉汇编程序哪些语句是属于一个段、是什么类型的段、各段存入内存应如何组装、给变量分配多少存储单元、给数字或表达式命名等。伪指令语句的功能是由汇编程序汇编源程序时完成的,不是由CPU执行目标代码时实现的。伪指令
8、语句的格式为:[符号名]伪指令助记符[操作数][;注释]【例4.3】伪指令格式示例DATASEGMENTMSGDB‘HelloWorld!$’;定义显