欢迎来到天天文库
浏览记录
ID:39659678
大小:858.50 KB
页数:170页
时间:2019-07-08
《汇编语言课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计教学要求:掌握汇编语言源程序的格式,掌握相关伪指令用途用法熟练掌握顺序、分支、循环三种基本程序设计的方法掌握子程序设计的方法,模块结构的程序设计方法理解宏汇编设计方法汇编语言的特点汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助记符表达指令操作码,采用标识符号表示指令操作数;利用汇编语言编写程序的主要优点是可以直接、有效地控制计算机硬件,因而容易创建代码序列短小、运行快速的可执行程序;在有些应用领域,汇编语言的作用不容置疑无可替代;汇编程序设计的过程是与其他高级语言程序设计大致相同;
2、源程序经过编辑、汇编、连接形成可执行文件;如果存在运行错误,借助调试程序进行排错。4.1汇编语言的源程序格式汇编语言源程序由语句序列构成,每条语句一般占一行;完整的汇编语言源程序由段组成;一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列;需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点;所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内;通常,程序还需要一个堆栈段。汇编语言的语句格式⑴执行性语句——用于表达处理器指令(也称
3、为硬指令),使CPU产生动作、并在程序执行时才处理的指令;汇编后对应一条指令代码。标号:硬指令助记符操作数,操作数;注释由处理器指令组成的代码序列是程序设计的主体⑵说明性语句——用于表达伪指令,指示源程序如何汇编、变量怎样定义、过程怎么设置等。不产生CPU动作、在程序执行前由汇编程序处理。名字伪指令助记符参数,参数,……;注释标号、名字与标识符标号是反映硬指令位置(逻辑地址)和属性的标识符,后跟一个冒号分隔;名字是反映伪指令位置(逻辑地址)和属性的标识符,后跟空格或制表符分隔,没有冒号;标识符(Identifier)一般
4、最多由31个字母、数字及规定的特殊符号(如_、$、?、@)组成,不能以数字开头,默认情况下,汇编程序不区别标识符中的字母大小写;一个源程序中,每个标识符的定义是唯一的,还不能是汇编语言采用的保留字。保留字保留字(ReservedWord)是汇编程序已经利用的标识符(也称为关键字),主要有:硬指令助记符——例如:MOV、ADD伪指令助记符——例如:DB、DW操作符——例如:OFFSET、PTR寄存器名——例如:AX、CS预定义符号——例如:@data操作数和参数处理器指令的操作数可以是立即数、寄存器和存储单元;伪指令的参数
5、可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分隔。注释语句的4个组成部分要用分隔符分开标号后用冒号,注释前用分号操作数之间和参数之间使用逗号分隔其他部分通常采用空格或制表符多个空格和制表符的作用与一个相同分隔符语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性;一个语句行也可以由分号开始作为阶段性注释汇编程序在汇编时跳过注释部分,不对它们做任何处理例4.1在屏幕上显示一段信息;数据段(定义要显示的字符串)stringdb’Hello,Assembly!’,0dh,0ah,’$’;代码段(显示字符串
6、的程序)movdx,offsetstringmovah,9int21hHello,Assembly!程序功能4.1.1简化段定义格式.modelsmall;定义程序的存储模式(小型模式).stack;定义堆栈段(默认是1KB空间).data;定义数据段……;数据定义.code;定义代码段start:movax,@data;程序起始点movds,ax;设置DS指向用户定义的数据段……;程序代码movax,4c00hint21h;程序结束点,返回DOS……;子程序代码endstart;汇编结束,同时指明程序起始点start1
7、.存储模式(MemoryModel)存储模式决定了一个程序的规模,也确定了子程序调用、指令转移和数据访问等的缺省属性当使用简化段定义的源程序格式时,必须有存储模式.MODEL语句,且位于所有简化段定义语句之前。其格式为:.MODEL存储模式.MODEL语句确定了程序采用的存储模式,MASM有7种可以选择,如表3.1所示本课程学习过程中,均采用小型模式SMALL2.逻辑段的简化定义.STACK[大小];堆栈段定义伪指令.STACK创建一个堆栈段,段名是:STACK。堆栈段名可用@STACK预定义标识符表示。可选的“大小”参
8、数指定堆栈段所占存储区的字节数,默认是1KB(=1024=400H字节).DATA;数据段定义伪指令.DATA创建一个数据段,段名是:_DATA。数据段名可用@DATA预定义标识符表示.CODE[段名];代码段定义伪指令.CODE创建一个代码段,可选的“段名”参数指定该代码段的段名。如果没有给出段名,则采用默认段名一
此文档下载收益归作者所有